From 45d1209a9c6b69e1b01480bd7e57631c92448e6c Mon Sep 17 00:00:00 2001 From: Andrei Ivanov Date: Thu, 7 May 2026 13:57:23 +0300 Subject: [PATCH] fix: align jaeger tracing flag names --- .../fs/usr/lib/influxdb3/influxdb3-launcher | 1 + .../usr/share/influxdb3/influxdb3-core.conf | 4 +- core/trace_exporters/src/lib.rs | 58 ++++++++++++++++++- influxdb3/src/commands/serve/cli_params.rs | 4 +- influxdb3/src/help/serve_all.txt | 4 +- 5 files changed, 63 insertions(+), 8 deletions(-) diff --git a/.circleci/packages/influxdb3/fs/usr/lib/influxdb3/influxdb3-launcher b/.circleci/packages/influxdb3/fs/usr/lib/influxdb3/influxdb3-launcher index 62a2eb5a771..f52ef690686 100644 --- a/.circleci/packages/influxdb3/fs/usr/lib/influxdb3/influxdb3-launcher +++ b/.circleci/packages/influxdb3/fs/usr/lib/influxdb3/influxdb3-launcher @@ -93,6 +93,7 @@ TOML_KEY_ENVVAR: Dict[str, Dict[str, str]] = { "traces-exporter-jaeger-agent-port": "INFLUXDB3_TRACES_EXPORTER_JAEGER_AGENT_PORT", "traces-exporter-jaeger-debug-name": "INFLUXDB3_TRACES_EXPORTER_JAEGER_DEBUG_NAME", "traces-exporter-jaeger-service-name": "INFLUXDB3_TRACES_EXPORTER_JAEGER_SERVICE_NAME", + "traces-exporter-jaeger-tags": "INFLUXDB3_TRACES_EXPORTER_JAEGER_TAGS", "traces-exporter-jaeger-trace-context-header-name": "INFLUXDB3_TRACES_EXPORTER_JAEGER_TRACE_CONTEXT_HEADER_NAME", "traces-jaeger-debug-name": "INFLUXDB3_TRACES_EXPORTER_JAEGER_DEBUG_NAME", "traces-jaeger-max-msgs-per-second": "INFLUXDB3_TRACES_JAEGER_MAX_MSGS_PER_SECOND", diff --git a/.circleci/packages/influxdb3/fs/usr/share/influxdb3/influxdb3-core.conf b/.circleci/packages/influxdb3/fs/usr/share/influxdb3/influxdb3-core.conf index d7e025c58fb..d4cc07d0b30 100644 --- a/.circleci/packages/influxdb3/fs/usr/share/influxdb3/influxdb3-core.conf +++ b/.circleci/packages/influxdb3/fs/usr/share/influxdb3/influxdb3-core.conf @@ -478,10 +478,10 @@ # Header for force sampling # Default: jaeger-debug-id (env: TRACES_EXPORTER_JAEGER_DEBUG_NAME) -#traces-jaeger-debug-name="jaeger-debug-id" +#traces-exporter-jaeger-debug-name="jaeger-debug-id" # Key-value pairs for tracing spans (env: TRACES_EXPORTER_JAEGER_TAGS) -#traces-jaeger-tags="" +#traces-exporter-jaeger-tags="" # Max messages per second # Default: 1000 (env: TRACES_JAEGER_MAX_MSGS_PER_SECOND) diff --git a/core/trace_exporters/src/lib.rs b/core/trace_exporters/src/lib.rs index a5839a7991d..1fce4c58483 100644 --- a/core/trace_exporters/src/lib.rs +++ b/core/trace_exporters/src/lib.rs @@ -102,7 +102,8 @@ pub struct TracingConfig { /// /// Only used if `--traces-exporter` is "jaeger". #[clap( - long = "traces-jaeger-debug-name", + long = "traces-exporter-jaeger-debug-name", + alias = "traces-jaeger-debug-name", env = "TRACES_EXPORTER_JAEGER_DEBUG_NAME", default_value = "jaeger-debug-id", action @@ -115,7 +116,8 @@ pub struct TracingConfig { /// /// Only used if `--traces-exporter` is "jaeger". #[clap( - long = "traces-jaeger-tags", + long = "traces-exporter-jaeger-tags", + alias = "traces-jaeger-tags", env = "TRACES_EXPORTER_JAEGER_TAGS", value_delimiter = ',', action @@ -211,3 +213,55 @@ fn jaeger_exporter(config: &TracingConfig) -> Result> { Ok(Arc::new(AsyncExporter::new(jaeger))) } + +#[cfg(test)] +mod tests { + use super::*; + use clap::{CommandFactory, Parser}; + + #[test] + fn jaeger_debug_and_tags_flags_match_exporter_env_names() { + let cmd = TracingConfig::command(); + + assert_long_option_has_env( + &cmd, + "traces-exporter-jaeger-debug-name", + "TRACES_EXPORTER_JAEGER_DEBUG_NAME", + ); + assert_long_option_has_env( + &cmd, + "traces-exporter-jaeger-tags", + "TRACES_EXPORTER_JAEGER_TAGS", + ); + } + + #[test] + fn deprecated_jaeger_debug_and_tags_flags_remain_accepted() { + let config = TracingConfig::try_parse_from([ + "cmd", + "--traces-jaeger-debug-name", + "debug-header", + "--traces-jaeger-tags", + "env=prod,region=west", + ]) + .expect("deprecated Jaeger flags should still parse"); + + assert_eq!(config.traces_jaeger_debug_name, "debug-header"); + let tags = config.traces_jaeger_tags.expect("tags should be parsed"); + assert_eq!(tags.len(), 2); + assert_eq!(tags[0].key(), "env"); + assert_eq!(tags[1].key(), "region"); + } + + fn assert_long_option_has_env(cmd: &clap::Command, long: &str, env: &str) { + let arg = cmd + .get_arguments() + .find(|arg| arg.get_long() == Some(long)) + .unwrap_or_else(|| panic!("missing --{long}")); + assert_eq!( + arg.get_env().and_then(std::ffi::OsStr::to_str), + Some(env), + "--{long} should use {env}" + ); + } +} diff --git a/influxdb3/src/commands/serve/cli_params.rs b/influxdb3/src/commands/serve/cli_params.rs index ea916f74a15..54ff9453b07 100644 --- a/influxdb3/src/commands/serve/cli_params.rs +++ b/influxdb3/src/commands/serve/cli_params.rs @@ -81,8 +81,8 @@ const NON_SENSITIVE_PARAMS: &[&str] = &[ "traces-exporter-jaeger-agent-port", "traces-exporter-jaeger-service-name", "traces-exporter-jaeger-trace-context-header-name", - "traces-jaeger-debug-name", - "traces-jaeger-tags", + "traces-exporter-jaeger-debug-name", + "traces-exporter-jaeger-tags", "traces-jaeger-max-msgs-per-second", // DataFusion parameters "datafusion-config", diff --git a/influxdb3/src/help/serve_all.txt b/influxdb3/src/help/serve_all.txt index 2be7dd67c7f..62620c4cf46 100644 --- a/influxdb3/src/help/serve_all.txt +++ b/influxdb3/src/help/serve_all.txt @@ -268,9 +268,9 @@ Examples: [env: INFLUXDB3_TRACES_EXPORTER_JAEGER_SERVICE_NAME=] --traces-exporter-jaeger-trace-context-header-name Header for trace context [default: uber-trace-id] [env: INFLUXDB3_TRACES_EXPORTER_JAEGER_TRACE_CONTEXT_HEADER_NAME=] - --traces-jaeger-debug-name Header for force sampling [default: jaeger-debug-id] + --traces-exporter-jaeger-debug-name Header for force sampling [default: jaeger-debug-id] [env: INFLUXDB3_TRACES_EXPORTER_JAEGER_DEBUG_NAME=] - --traces-jaeger-tags Key-value pairs for tracing spans + --traces-exporter-jaeger-tags Key-value pairs for tracing spans [env: INFLUXDB3_TRACES_EXPORTER_JAEGER_TAGS=] --traces-jaeger-max-msgs-per-second Max messages per second [default: 1000] [env: INFLUXDB3_TRACES_JAEGER_MAX_MSGS_PER_SECOND=]