@@ -284,36 +284,32 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
284284 final_config.clock = clock;
285285 final_config.logger = logger;
286286
287- std::unordered_map<ConfigName, std::vector<ConfigMetadata>>
288- all_sources_configs;
289-
290287 // DD_SERVICE
291288 final_config.defaults .service = resolve_and_record_config (
292- env_config->service , user_config.service , &all_sources_configs ,
293- &final_config. metadata , ConfigName::SERVICE_NAME, get_process_name ());
289+ env_config->service , user_config.service , &final_config. metadata ,
290+ ConfigName::SERVICE_NAME, get_process_name ());
294291
295292 // Service type
296293 final_config.defaults .service_type =
297294 value_or (env_config->service_type , user_config.service_type , " web" );
298295
299296 // DD_ENV
300297 final_config.defaults .environment = resolve_and_record_config (
301- env_config->environment , user_config.environment , &all_sources_configs ,
302- &final_config. metadata , ConfigName::SERVICE_ENV);
298+ env_config->environment , user_config.environment , &final_config. metadata ,
299+ ConfigName::SERVICE_ENV);
303300
304301 // DD_VERSION
305302 final_config.defaults .version = resolve_and_record_config (
306- env_config->version , user_config.version , &all_sources_configs ,
307- &final_config. metadata , ConfigName::SERVICE_VERSION);
303+ env_config->version , user_config.version , &final_config. metadata ,
304+ ConfigName::SERVICE_VERSION);
308305
309306 // Span name
310307 final_config.defaults .name = value_or (env_config->name , user_config.name , " " );
311308
312309 // DD_TAGS
313310 final_config.defaults .tags = resolve_and_record_config (
314- env_config->tags , user_config.tags , &all_sources_configs,
315- &final_config.metadata , ConfigName::TAGS,
316- std::unordered_map<std::string, std::string>{},
311+ env_config->tags , user_config.tags , &final_config.metadata ,
312+ ConfigName::TAGS, std::unordered_map<std::string, std::string>{},
317313 [](const auto &tags) { return join_tags (tags); });
318314
319315 // Extraction Styles
@@ -323,8 +319,8 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
323319
324320 final_config.extraction_styles = resolve_and_record_config (
325321 env_config->extraction_styles , user_config.extraction_styles ,
326- &all_sources_configs, & final_config.metadata ,
327- ConfigName::EXTRACTION_STYLES, default_propagation_styles,
322+ &final_config.metadata , ConfigName::EXTRACTION_STYLES ,
323+ default_propagation_styles,
328324 [](const std::vector<PropagationStyle> &styles) {
329325 return join_propagation_styles (styles);
330326 });
@@ -337,8 +333,8 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
337333 // Injection Styles
338334 final_config.injection_styles = resolve_and_record_config (
339335 env_config->injection_styles , user_config.injection_styles ,
340- &all_sources_configs, & final_config.metadata ,
341- ConfigName::INJECTION_STYLES, default_propagation_styles,
336+ &final_config.metadata , ConfigName::INJECTION_STYLES ,
337+ default_propagation_styles,
342338 [](const std::vector<PropagationStyle> &styles) {
343339 return join_propagation_styles (styles);
344340 });
@@ -351,14 +347,14 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
351347 // Startup Logs
352348 final_config.log_on_startup = resolve_and_record_config (
353349 env_config->log_on_startup , user_config.log_on_startup ,
354- &all_sources_configs, & final_config.metadata , ConfigName::STARTUP_LOGS,
355- true , [](const bool &b) { return to_string (b); });
350+ &final_config.metadata , ConfigName::STARTUP_LOGS, true ,
351+ [](const bool &b) { return to_string (b); });
356352
357353 // Report traces
358354 final_config.report_traces = resolve_and_record_config (
359355 env_config->report_traces , user_config.report_traces ,
360- &all_sources_configs, & final_config.metadata , ConfigName::REPORT_TRACES,
361- true , [](const bool &b) { return to_string (b); });
356+ &final_config.metadata , ConfigName::REPORT_TRACES, true ,
357+ [](const bool &b) { return to_string (b); });
362358
363359 // Report hostname
364360 final_config.report_hostname =
@@ -371,8 +367,8 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
371367 // 128b Trace IDs
372368 final_config.generate_128bit_trace_ids = resolve_and_record_config (
373369 env_config->generate_128bit_trace_ids ,
374- user_config.generate_128bit_trace_ids , &all_sources_configs ,
375- &final_config. metadata , ConfigName::GENEREATE_128BIT_TRACE_IDS, true ,
370+ user_config.generate_128bit_trace_ids , &final_config. metadata ,
371+ ConfigName::GENEREATE_128BIT_TRACE_IDS, true ,
376372 [](const bool &b) { return to_string (b); });
377373
378374 // Integration name & version
@@ -385,15 +381,13 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
385381 // Baggage - max items
386382 final_config.baggage_opts .max_items = resolve_and_record_config (
387383 env_config->baggage_max_items , user_config.baggage_max_items ,
388- &all_sources_configs, &final_config.metadata ,
389- ConfigName::TRACE_BAGGAGE_MAX_ITEMS, 64UL ,
384+ &final_config.metadata , ConfigName::TRACE_BAGGAGE_MAX_ITEMS, 64UL ,
390385 [](const size_t &i) { return std::to_string (i); });
391386
392387 // Baggage - max bytes
393388 final_config.baggage_opts .max_bytes = resolve_and_record_config (
394389 env_config->baggage_max_bytes , user_config.baggage_max_bytes ,
395- &all_sources_configs, &final_config.metadata ,
396- ConfigName::TRACE_BAGGAGE_MAX_BYTES, 8192UL ,
390+ &final_config.metadata , ConfigName::TRACE_BAGGAGE_MAX_BYTES, 8192UL ,
397391 [](const size_t &i) { return std::to_string (i); });
398392
399393 if (final_config.baggage_opts .max_items <= 0 ||
@@ -422,17 +416,23 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
422416 }
423417
424418 if (auto trace_sampler_config = finalize_config (user_config.trace_sampler )) {
425- final_config.metadata .merge (trace_sampler_config->metadata );
426- all_sources_configs.merge (trace_sampler_config->telemetry_configs );
419+ // Merge metadata vectors
420+ for (auto &[key, values] : trace_sampler_config->metadata ) {
421+ auto &dest = final_config.metadata [key];
422+ dest.insert (dest.end (), values.begin (), values.end ());
423+ }
427424 final_config.trace_sampler = std::move (*trace_sampler_config);
428425 } else {
429426 return std::move (trace_sampler_config.error ());
430427 }
431428
432429 if (auto span_sampler_config =
433430 finalize_config (user_config.span_sampler , *logger)) {
434- final_config.metadata .merge (span_sampler_config->metadata );
435- all_sources_configs.merge (span_sampler_config->telemetry_configs );
431+ // Merge metadata vectors
432+ for (auto &[key, values] : span_sampler_config->metadata ) {
433+ auto &dest = final_config.metadata [key];
434+ dest.insert (dest.end (), values.begin (), values.end ());
435+ }
436436 final_config.span_sampler = std::move (*span_sampler_config);
437437 } else {
438438 return std::move (span_sampler_config.error ());
@@ -455,32 +455,31 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
455455 final_config.telemetry = std::move (*telemetry_final_config);
456456 final_config.telemetry .products .emplace_back (telemetry::Product{
457457 telemetry::Product::Name::tracing, true , tracer_version, nullopt ,
458- nullopt , all_sources_configs });
458+ nullopt , final_config. metadata });
459459 } else {
460460 return std::move (telemetry_final_config.error ());
461461 }
462462
463463 // APM Tracing Enabled
464464 final_config.tracing_enabled = resolve_and_record_config (
465465 env_config->tracing_enabled , user_config.tracing_enabled ,
466- &all_sources_configs, &final_config.metadata ,
467- ConfigName::APM_TRACING_ENABLED, true ,
466+ &final_config.metadata , ConfigName::APM_TRACING_ENABLED, true ,
468467 [](const bool &b) { return to_string (b); });
469468
470469 {
471470 // Resource Renaming Enabled
472471 const bool resource_renaming_enabled = resolve_and_record_config (
473472 env_config->resource_renaming_enabled ,
474- user_config.resource_renaming_enabled , &all_sources_configs ,
475- &final_config. metadata , ConfigName::TRACE_RESOURCE_RENAMING_ENABLED,
476- false , [](const bool &b) { return to_string (b); });
473+ user_config.resource_renaming_enabled , &final_config. metadata ,
474+ ConfigName::TRACE_RESOURCE_RENAMING_ENABLED, false ,
475+ [](const bool &b) { return to_string (b); });
477476
478477 // Resource Renaming Always Simplified Endpoint
479478 const bool resource_renaming_always_simplified_endpoint =
480479 resolve_and_record_config (
481480 env_config->resource_renaming_always_simplified_endpoint ,
482481 user_config.resource_renaming_always_simplified_endpoint ,
483- &all_sources_configs, & final_config.metadata ,
482+ &final_config.metadata ,
484483 ConfigName::TRACE_RESOURCE_RENAMING_ALWAYS_SIMPLIFIED_ENDPOINT,
485484 false , [](const bool &b) { return to_string (b); });
486485
@@ -511,7 +510,11 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
511510
512511 if (!user_config.collector ) {
513512 final_config.collector = *agent_finalized;
514- final_config.metadata .merge (agent_finalized->metadata );
513+ // Merge metadata vectors
514+ for (auto &[key, values] : agent_finalized->metadata ) {
515+ auto &dest = final_config.metadata [key];
516+ dest.insert (dest.end (), values.begin (), values.end ());
517+ }
515518 } else {
516519 final_config.collector = user_config.collector ;
517520 }
0 commit comments