Skip to content

Conversation

@leonardo-albertovich
Copy link
Contributor

No description provided.

Signed-off-by: Leonardo Alminana <leonardo.alminana@chronosphere.io>
int http_request_key_size;
bool autoformat_stackdriver_trace;
bool test_log_entry_format;
int autoformat_stackdriver_trace;
Copy link
Contributor

@igorpeshansky igorpeshansky Aug 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this specifically because of the use of FLB_CONFIG_MAP_BOOL? Or some general guidance against using the bool type?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I remembered something about the C90 standard being preferred (bool was introduced in C99) but I couldn't find a reference to it in fluent-bits coding style (or the apache coding style).

In this case it's purely limited to FLB_CONFIG_MAP_BOOL (see PR #8904 and the related work).

Copy link

@Charles1000Chen Charles1000Chen Aug 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@leonardo-albertovich As we can see that the current fluent-bit code is already C99 standard because we are using the 'inline', 'long long int'... which are introduced from C99 standard. Just curious why we use int to storing data of FLB_CONFIG_MAP_BOOL instead of one-byte data type like bool or char? The one-byte data type can work well in both LE(x86) and BE(s390x) systems. In fluent_config_map.h, we declare char to store the value of FLB_CONFIG_MAP_BOOL.

struct flb_config_map_val {
    union {
        int i_num;                    /* FLB_CONFIG_MAP_INT */
        char boolean;                 /* FLB_CONFIG_MAP_BOOL */
        double d_num;                 /* FLB_CONFIG_MAP_DOUBLE */
        size_t s_num;                 /* FLB_CONFIG_MAP_SIZE */
        flb_sds_t str;                /* FLB_CONFIG_MAP_STR */
        struct mk_list *list;         /* FLB_CONFIG_MAP_CLIST and FLB_CONFIG_MAP_SLIST */
        struct cfl_variant *variant;  /* FLB_CONFIG_MAP_VARIANT */
    }

But in src/flb_config_map.c 8904 and plugins, we turn to use int to store data of FLB_CONFIG_MAP_BOOL, it's confusing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm good point, it's confusing. You are right, we are in C99 based on our use of inline.

Since there are several patches around this right now, I would suggest to continue using int and for Fluent Bit v3.2 move formally to bool (we will move to v3.2 dev shortly)

@edsiper edsiper merged commit db9ceb5 into master Aug 15, 2024
@edsiper edsiper deleted the leonardo-master-stackdriver_property_type_fix branch August 15, 2024 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants