Skip to content

Commit 41ca763

Browse files
committed
keep default decision inside resolve_env_config
1 parent 82102a2 commit 41ca763

1 file changed

Lines changed: 17 additions & 15 deletions

File tree

dial9-tokio-telemetry/src/config.rs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,6 @@ const ENV_DIAL9_TASK_DUMP_IDLE_THRESHOLD_MS: &str = "DIAL9_TASK_DUMP_IDLE_THRESH
208208

209209
const DEFAULT_ENABLED: bool = false;
210210
const DEFAULT_TRACE_DIR: &str = "/tmp/dial9-traces";
211-
#[cfg(feature = "worker-s3")]
212211
const DEFAULT_S3_PREFIX: &str = "dial9-traces";
213212
const DEFAULT_MAX_DISK_USAGE_MB: u64 = 1024;
214213
const DEFAULT_TASK_TRACKING_ENABLED: bool = true;
@@ -278,7 +277,8 @@ struct ResolvedEnvConfig {
278277
// Optional config: None means do not set a runtime name.
279278
runtime_name: Option<String>,
280279

281-
// Optional integration: None means do not configure S3 upload.
280+
// Optional integration: None means do not configure S3 upload. When Some,
281+
// env-owned S3 defaults have already been applied.
282282
s3: Option<ParsedS3Config>,
283283

284284
cpu_profile_enabled: bool,
@@ -362,7 +362,11 @@ fn resolve_env_config(parsed: ParsedEnvConfig) -> ResolvedEnvConfig {
362362
.task_tracking_enabled
363363
.unwrap_or(DEFAULT_TASK_TRACKING_ENABLED),
364364
runtime_name: parsed.runtime_name,
365-
s3: parsed.s3,
365+
s3: parsed.s3.map(|mut s3| {
366+
s3.prefix
367+
.get_or_insert_with(|| DEFAULT_S3_PREFIX.to_string());
368+
s3
369+
}),
366370
cpu_profile_enabled: parsed
367371
.cpu_profile_enabled
368372
.unwrap_or(DEFAULT_CPU_PROFILE_ENABLED),
@@ -543,11 +547,7 @@ fn build_s3_config(config: ParsedS3Config) -> crate::background_task::s3::S3Conf
543547
crate::background_task::s3::S3Config::builder()
544548
.bucket(config.bucket)
545549
.service_name(config.service_name.unwrap_or_else(default_service_name))
546-
.prefix(
547-
config
548-
.prefix
549-
.unwrap_or_else(|| DEFAULT_S3_PREFIX.to_string()),
550-
)
550+
.maybe_prefix(config.prefix)
551551
.build()
552552
}
553553

@@ -1057,12 +1057,14 @@ mod tests {
10571057

10581058
#[cfg(feature = "worker-s3")]
10591059
#[test]
1060-
fn env_s3_config_defaults_service_name_when_bucket_is_set() {
1061-
let config = build_s3_config(ParsedS3Config {
1062-
bucket: "b".to_string(),
1063-
service_name: None,
1064-
prefix: None,
1065-
});
1060+
fn env_s3_config_defaults_service_name_and_prefix_when_bucket_is_set() {
1061+
let resolved = resolve_env_config(parse_env_config(
1062+
&FakeEnv::default().with("DIAL9_S3_BUCKET", "b"),
1063+
));
1064+
let s3 = resolved.s3.expect("s3 config should be resolved");
1065+
assert_eq!(s3.prefix.as_deref(), Some(DEFAULT_S3_PREFIX));
1066+
1067+
let config = build_s3_config(s3);
10661068

10671069
let metadata: HashMap<_, _> = config.as_metadata().collect();
10681070
assert_eq!(metadata.get("bucket"), Some(&"b"));
@@ -1071,7 +1073,7 @@ mod tests {
10711073
.get("service_name")
10721074
.is_some_and(|service_name| !service_name.is_empty())
10731075
);
1074-
assert_eq!(metadata.get("prefix"), Some(&"dial9-traces"));
1076+
assert_eq!(metadata.get("prefix"), Some(&DEFAULT_S3_PREFIX));
10751077
}
10761078

10771079
#[test]

0 commit comments

Comments
 (0)