From 151009a31aa2cd80a4b0981ab13a1d466804b1d6 Mon Sep 17 00:00:00 2001 From: Hiroshi Hatake Date: Wed, 11 Dec 2024 19:44:21 +0900 Subject: [PATCH 1/4] bin: config: Provide maxstdio option for increasing I/O limit on Windows Signed-off-by: Hiroshi Hatake --- include/fluent-bit/flb_config.h | 8 ++++++++ src/flb_config.c | 9 +++++++++ src/fluent-bit.c | 23 ++++++++++++++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/include/fluent-bit/flb_config.h b/include/fluent-bit/flb_config.h index 1cfc6301ff8..bfed0c80c56 100644 --- a/include/fluent-bit/flb_config.h +++ b/include/fluent-bit/flb_config.h @@ -269,6 +269,11 @@ struct flb_config { int shutdown_by_hot_reloading; int hot_reloading; +#ifdef FLB_SYSTEM_WINDOWS + /* maxstdio (Windows) */ + int maxstdio; +#endif + /* Co-routines */ unsigned int coro_stack_size; @@ -351,6 +356,9 @@ enum conf_type { #define FLB_CONF_STR_HOT_RELOAD "Hot_Reload" #define FLB_CONF_STR_HOT_RELOAD_ENSURE_THREAD_SAFETY "Hot_Reload.Ensure_Thread_Safety" +/* Set up maxstdio (Windows) */ +#define FLB_CONF_STR_MAX_STDIO "Max_Stdio" + /* DNS */ #define FLB_CONF_DNS_MODE "dns.mode" #define FLB_CONF_DNS_RESOLVER "dns.resolver" diff --git a/src/flb_config.c b/src/flb_config.c index 32dc34b7e83..3b2ce3f1651 100644 --- a/src/flb_config.c +++ b/src/flb_config.c @@ -183,6 +183,11 @@ struct flb_service_config service_configs[] = { offsetof(struct flb_config, enable_chunk_trace)}, #endif +#ifdef FLB_SYSTEM_WINDOWS + {FLB_CONF_STR_MAX_STDIO, + FLB_CONF_TYPE_INT, + offsetof(struct flb_config, maxstdio)}, +#endif {FLB_CONF_STR_HOT_RELOAD, FLB_CONF_TYPE_BOOL, offsetof(struct flb_config, enable_hot_reload)}, @@ -288,6 +293,10 @@ struct flb_config *flb_config_init() config->shutdown_by_hot_reloading = FLB_FALSE; config->hot_reloading = FLB_FALSE; +#ifdef FLB_SYSTEM_WINDOWS + config->maxstdio = 512; +#endif + #ifdef FLB_HAVE_SQLDB mk_list_init(&config->sqldb_list); #endif diff --git a/src/fluent-bit.c b/src/fluent-bit.c index 6444b333f2d..116b5acf79a 100644 --- a/src/fluent-bit.c +++ b/src/fluent-bit.c @@ -1036,6 +1036,9 @@ int flb_main(int argc, char **argv) { "http_port", required_argument, NULL, 'P' }, #endif { "enable-hot-reload", no_argument, NULL, 'Y' }, +#ifdef FLB_SYSTEM_WINDOWS + { "maxstdio", required_argument, NULL, 'M' }, +#endif #ifdef FLB_HAVE_CHUNK_TRACE { "enable-chunk-trace", no_argument, NULL, 'Z' }, { "trace", required_argument, NULL, FLB_LONG_TRACE }, @@ -1073,7 +1076,7 @@ int flb_main(int argc, char **argv) /* Parse the command line options */ while ((opt = getopt_long(argc, argv, - "b:c:dDf:C:i:m:o:R:F:p:e:" + "b:c:dDf:C:i:m:M:o:R:F:p:e:" "t:T:l:vw:qVhJL:HP:s:SWYZ", long_opts, NULL)) != -1) { @@ -1128,6 +1131,12 @@ int flb_main(int argc, char **argv) flb_cf_section_property_add(cf_opts, s->properties, "match", 0, optarg, 0); } break; +#ifdef FLB_SYSTEM_WINDOWS + case 'M': + flb_cf_section_property_add(cf_opts, service->properties, + "max_stdio", 0, optarg, 0); + break; +#endif case 'o': s = flb_cf_section_create(cf_opts, "output", 0); if (!s) { @@ -1350,6 +1359,18 @@ int flb_main(int argc, char **argv) #endif #ifdef FLB_SYSTEM_WINDOWS + /* Validate specified maxstdio */ + if (config->maxstdio >= 512 && config->maxstdio <= 2048) { + _setmaxstdio(config->maxstdio); + } + else { + fprintf(stderr, + "maxstdio is invalid. From 512 to 2048 is vaild but got %d\n", + config->maxstdio); + flb_free(cfg_file); + flb_cf_destroy(cf_opts); + exit(EXIT_FAILURE); + } win32_started(); #endif From 7c0b6149eac4f970f49922a82bd492a9df8d1574 Mon Sep 17 00:00:00 2001 From: Hiroshi Hatake Date: Mon, 30 Dec 2024 23:26:39 +0900 Subject: [PATCH 2/4] config: Add windows/. prefix into maxstdio parameter Signed-off-by: Hiroshi Hatake --- include/fluent-bit/flb_config.h | 2 +- src/flb_config.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/fluent-bit/flb_config.h b/include/fluent-bit/flb_config.h index bfed0c80c56..a8879dfca12 100644 --- a/include/fluent-bit/flb_config.h +++ b/include/fluent-bit/flb_config.h @@ -357,7 +357,7 @@ enum conf_type { #define FLB_CONF_STR_HOT_RELOAD_ENSURE_THREAD_SAFETY "Hot_Reload.Ensure_Thread_Safety" /* Set up maxstdio (Windows) */ -#define FLB_CONF_STR_MAX_STDIO "Max_Stdio" +#define FLB_CONF_STR_WINDOWS_MAX_STDIO "windows.maxstdio" /* DNS */ #define FLB_CONF_DNS_MODE "dns.mode" diff --git a/src/flb_config.c b/src/flb_config.c index 3b2ce3f1651..656af8cabab 100644 --- a/src/flb_config.c +++ b/src/flb_config.c @@ -184,7 +184,7 @@ struct flb_service_config service_configs[] = { #endif #ifdef FLB_SYSTEM_WINDOWS - {FLB_CONF_STR_MAX_STDIO, + {FLB_CONF_STR_WINDOWS_MAX_STDIO, FLB_CONF_TYPE_INT, offsetof(struct flb_config, maxstdio)}, #endif From beff608dc69d81aab78a03eae041b25438783efe Mon Sep 17 00:00:00 2001 From: Hiroshi Hatake Date: Thu, 9 Jan 2025 15:05:50 +0900 Subject: [PATCH 3/4] config: bin: Add prefix for windows specific functuionality Signed-off-by: Hiroshi Hatake --- include/fluent-bit/flb_config.h | 2 +- src/flb_config.c | 4 ++-- src/fluent-bit.c | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/fluent-bit/flb_config.h b/include/fluent-bit/flb_config.h index a8879dfca12..09961132910 100644 --- a/include/fluent-bit/flb_config.h +++ b/include/fluent-bit/flb_config.h @@ -271,7 +271,7 @@ struct flb_config { #ifdef FLB_SYSTEM_WINDOWS /* maxstdio (Windows) */ - int maxstdio; + int win_maxstdio; #endif /* Co-routines */ diff --git a/src/flb_config.c b/src/flb_config.c index 656af8cabab..a1422a1b8a4 100644 --- a/src/flb_config.c +++ b/src/flb_config.c @@ -186,7 +186,7 @@ struct flb_service_config service_configs[] = { #ifdef FLB_SYSTEM_WINDOWS {FLB_CONF_STR_WINDOWS_MAX_STDIO, FLB_CONF_TYPE_INT, - offsetof(struct flb_config, maxstdio)}, + offsetof(struct flb_config, win_maxstdio)}, #endif {FLB_CONF_STR_HOT_RELOAD, FLB_CONF_TYPE_BOOL, @@ -294,7 +294,7 @@ struct flb_config *flb_config_init() config->hot_reloading = FLB_FALSE; #ifdef FLB_SYSTEM_WINDOWS - config->maxstdio = 512; + config->win_maxstdio = 512; #endif #ifdef FLB_HAVE_SQLDB diff --git a/src/fluent-bit.c b/src/fluent-bit.c index 116b5acf79a..a4ddac49d9c 100644 --- a/src/fluent-bit.c +++ b/src/fluent-bit.c @@ -1037,7 +1037,7 @@ int flb_main(int argc, char **argv) #endif { "enable-hot-reload", no_argument, NULL, 'Y' }, #ifdef FLB_SYSTEM_WINDOWS - { "maxstdio", required_argument, NULL, 'M' }, + { "windows_maxstdio", required_argument, NULL, 'M' }, #endif #ifdef FLB_HAVE_CHUNK_TRACE { "enable-chunk-trace", no_argument, NULL, 'Z' }, @@ -1134,7 +1134,7 @@ int flb_main(int argc, char **argv) #ifdef FLB_SYSTEM_WINDOWS case 'M': flb_cf_section_property_add(cf_opts, service->properties, - "max_stdio", 0, optarg, 0); + "windows.maxstdio", 0, optarg, 0); break; #endif case 'o': @@ -1360,13 +1360,13 @@ int flb_main(int argc, char **argv) #ifdef FLB_SYSTEM_WINDOWS /* Validate specified maxstdio */ - if (config->maxstdio >= 512 && config->maxstdio <= 2048) { - _setmaxstdio(config->maxstdio); + if (config->win_maxstdio >= 512 && config->win_maxstdio <= 2048) { + _setmaxstdio(config->win_maxstdio); } else { fprintf(stderr, - "maxstdio is invalid. From 512 to 2048 is vaild but got %d\n", - config->maxstdio); + "windows.maxstdio is invalid. From 512 to 2048 is vaild but got %d\n", + config->win_maxstdio); flb_free(cfg_file); flb_cf_destroy(cf_opts); exit(EXIT_FAILURE); From bd1a43398bd08c122f6395ca01dcd68a597d6533 Mon Sep 17 00:00:00 2001 From: Hiroshi Hatake Date: Fri, 24 Jan 2025 19:45:08 +0900 Subject: [PATCH 4/4] engine: Display the current maxstdio value on debug level log Signed-off-by: Hiroshi Hatake --- src/flb_engine.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/flb_engine.c b/src/flb_engine.c index bedc28477c5..9cdd0535ae0 100644 --- a/src/flb_engine.c +++ b/src/flb_engine.c @@ -754,6 +754,9 @@ int flb_engine_start(struct flb_config *config) flb_info("[fluent bit] version=%s, commit=%.10s, pid=%i", FLB_VERSION_STR, FLB_GIT_HASH, getpid()); +#ifdef FLB_SYSTEM_WINDOWS + flb_debug("[engine] maxstdio set: %d", _getmaxstdio()); +#endif /* Debug coroutine stack size */ flb_utils_bytes_to_human_readable_size(config->coro_stack_size, tmp, sizeof(tmp));