@@ -150,7 +150,9 @@ std::string to_string(const std::vector<TraceSamplerConfig::Rule> &rules) {
150150TraceSamplerConfig::Rule::Rule (const SpanMatcher &base) : SpanMatcher(base) {}
151151
152152Expected<FinalizedTraceSamplerConfig> finalize_config (
153- const TraceSamplerConfig &config) {
153+ const TraceSamplerConfig &config,
154+ std::unordered_map<ConfigName, std::vector<ConfigMetadata>>
155+ *telemetry_configs) {
154156 Expected<TraceSamplerConfig> env_config = load_trace_sampler_env_config ();
155157 if (auto error = env_config.if_error ()) {
156158 return *error;
@@ -191,27 +193,15 @@ Expected<FinalizedTraceSamplerConfig> finalize_config(
191193 result.rules .emplace_back (std::move (finalized_rule));
192194 }
193195
194- Optional<double > sample_rate;
195- if (env_config->sample_rate ) {
196- sample_rate = env_config->sample_rate ;
197- result.metadata [ConfigName::TRACE_SAMPLING_RATE ] = ConfigMetadata (
198- ConfigName::TRACE_SAMPLING_RATE , to_string (*sample_rate, 1 ),
199- ConfigMetadata::Origin::ENVIRONMENT_VARIABLE );
200- } else if (config.sample_rate ) {
201- sample_rate = config.sample_rate ;
202- result.metadata [ConfigName::TRACE_SAMPLING_RATE ] = ConfigMetadata (
203- ConfigName::TRACE_SAMPLING_RATE , to_string (*sample_rate, 1 ),
204- ConfigMetadata::Origin::CODE );
205- } else {
206- result.metadata [ConfigName::TRACE_SAMPLING_RATE ] =
207- ConfigMetadata (ConfigName::TRACE_SAMPLING_RATE , " 1.0" ,
208- ConfigMetadata::Origin::DEFAULT );
209- }
196+ Optional<double > sample_rate = resolve_and_record_config (
197+ env_config->sample_rate , config.sample_rate , telemetry_configs,
198+ &result.metadata , ConfigName::TRACE_SAMPLING_RATE , 1.0 ,
199+ [](const double &d) { return to_string (d, 1 ); });
210200
211201 // If `sample_rate` was specified, then it translates to a "catch-all" rule
212202 // appended to the end of `rules`. First, though, we have to make sure the
213203 // sample rate is valid.
214- if (sample_rate) {
204+ if (sample_rate && (env_config-> sample_rate || config. sample_rate ) ) {
215205 auto maybe_rate = Rate::from (*sample_rate);
216206 if (auto *error = maybe_rate.if_error ()) {
217207 return error->with_prefix (
@@ -225,10 +215,8 @@ Expected<FinalizedTraceSamplerConfig> finalize_config(
225215 result.rules .emplace_back (std::move (finalized_rule));
226216 }
227217
228- std::unordered_map<ConfigName, std::vector<ConfigMetadata>>
229- telemetry_configs_tmp;
230218 double max_per_second = resolve_and_record_config (
231- env_config->max_per_second , config.max_per_second , &telemetry_configs_tmp ,
219+ env_config->max_per_second , config.max_per_second , telemetry_configs ,
232220 &result.metadata , ConfigName::TRACE_SAMPLING_LIMIT , 100.0 ,
233221 [](const double &d) { return std::to_string (d); });
234222
0 commit comments