Skip to content

Commit e557f3d

Browse files
authored
Merge pull request syslog-ng#5138 from HofiOne/fix-otlp-multiwork-iw
otel: fix multi-worker window and fetch-limit calculation
2 parents e276c1c + 0b08e52 commit e557f3d

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

lib/logthrsource/logthrsourcedrv.c

+9-2
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,15 @@ log_threaded_source_worker_options_defaults(LogThreadedSourceWorkerOptions *opti
108108

109109
void
110110
log_threaded_source_worker_options_init(LogThreadedSourceWorkerOptions *options, GlobalConfig *cfg,
111-
const gchar *group_name)
111+
const gchar *group_name, gint num_workers)
112112
{
113+
if (options->super.init_window_size == -1)
114+
{
115+
options->super.init_window_size = 100 * num_workers;
116+
}
117+
118+
options->super.init_window_size /= num_workers;
119+
113120
log_source_options_init(&options->super, cfg, group_name);
114121
msg_format_options_init(&options->parse_options, cfg);
115122
}
@@ -285,7 +292,7 @@ _init_workers(LogThreadedSourceDriver *self)
285292

286293
GlobalConfig *cfg = log_pipe_get_config(&self->super.super.super);
287294

288-
log_threaded_source_worker_options_init(&self->worker_options, cfg, self->super.super.group);
295+
log_threaded_source_worker_options_init(&self->worker_options, cfg, self->super.super.group, self->num_workers);
289296

290297
for (size_t i = 0; i < self->num_workers; i++)
291298
{

lib/logthrsource/logthrsourcedrv.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ struct _LogThreadedSourceDriver
8484

8585
void log_threaded_source_worker_options_defaults(LogThreadedSourceWorkerOptions *options);
8686
void log_threaded_source_worker_options_init(LogThreadedSourceWorkerOptions *options, GlobalConfig *cfg,
87-
const gchar *group_name);
87+
const gchar *group_name, gint num_workers);
8888
void log_threaded_source_worker_options_destroy(LogThreadedSourceWorkerOptions *options);
8989

9090
void log_threaded_source_driver_set_transport_name(LogThreadedSourceDriver *self, const gchar *transport_name);

modules/grpc/otel/otel-source.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,13 @@ syslogng::grpc::otel::SourceDriver::init()
116116

117117
msg_info("OpenTelemetry server accepting connections", evt_tag_int("port", port));
118118

119-
super->super.worker_options.super.init_window_size /= super->super.num_workers;
120-
121119
if (fetch_limit == -1)
122-
fetch_limit = super->super.worker_options.super.init_window_size;
120+
{
121+
if (super->super.worker_options.super.init_window_size != -1)
122+
fetch_limit = super->super.worker_options.super.init_window_size / super->super.num_workers;
123+
else
124+
fetch_limit = 100;
125+
}
123126

124127
/*
125128
* syslog-ng-otlp(): the original HOST is always kept

news/bugfix-310.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
`opentelemetry()`, `axosyslog-otlp()` sources: fix crash when `workers()` is set to `> 1`

0 commit comments

Comments
 (0)