@@ -221,27 +221,33 @@ Expected<SpanSamplerConfig> load_span_sampler_env_config(Logger &logger) {
221221SpanSamplerConfig::Rule::Rule (const SpanMatcher &base) : SpanMatcher(base) {}
222222
223223Expected<FinalizedSpanSamplerConfig> finalize_config (
224- const SpanSamplerConfig &user_config, Logger &logger) {
224+ const SpanSamplerConfig &user_config, Logger &logger,
225+ std::unordered_map<ConfigName, std::vector<ConfigMetadata>>
226+ *telemetry_configs) {
225227 Expected<SpanSamplerConfig> env_config = load_span_sampler_env_config (logger);
226228 if (auto error = env_config.if_error ()) {
227229 return *error;
228230 }
229231
230232 FinalizedSpanSamplerConfig result;
231233
232- std::vector<SpanSamplerConfig::Rule> rules;
234+ // Convert to Optional for resolve_and_record_config
235+ Optional<std::vector<SpanSamplerConfig::Rule>> env_rules;
233236 if (!env_config->rules .empty ()) {
234- rules = env_config->rules ;
235- result.metadata [ConfigName::SPAN_SAMPLING_RULES ] =
236- ConfigMetadata (ConfigName::SPAN_SAMPLING_RULES , to_string (rules),
237- ConfigMetadata::Origin::ENVIRONMENT_VARIABLE );
238- } else if (!user_config.rules .empty ()) {
239- rules = user_config.rules ;
240- result.metadata [ConfigName::SPAN_SAMPLING_RULES ] =
241- ConfigMetadata (ConfigName::SPAN_SAMPLING_RULES , to_string (rules),
242- ConfigMetadata::Origin::CODE );
237+ env_rules = env_config->rules ;
238+ }
239+ Optional<std::vector<SpanSamplerConfig::Rule>> user_rules;
240+ if (!user_config.rules .empty ()) {
241+ user_rules = user_config.rules ;
243242 }
244243
244+ std::vector<SpanSamplerConfig::Rule> rules = resolve_and_record_config (
245+ env_rules, user_rules, telemetry_configs, &result.metadata ,
246+ ConfigName::SPAN_SAMPLING_RULES , nullptr ,
247+ [](const std::vector<SpanSamplerConfig::Rule> &r) {
248+ return to_string (r);
249+ });
250+
245251 for (const auto &rule : rules) {
246252 auto maybe_rate = Rate::from (rule.sample_rate );
247253 if (auto *error = maybe_rate.if_error ()) {
0 commit comments