@@ -162,14 +162,14 @@ Expected<FinalizedTraceSamplerConfig> finalize_config(
162162
163163 if (!env_config->rules .empty ()) {
164164 rules = std::move (env_config->rules );
165- result.metadata [ConfigName::TRACE_SAMPLING_RULES] =
165+ result.metadata [ConfigName::TRACE_SAMPLING_RULES] = {
166166 ConfigMetadata (ConfigName::TRACE_SAMPLING_RULES, to_string (rules),
167- ConfigMetadata::Origin::ENVIRONMENT_VARIABLE);
167+ ConfigMetadata::Origin::ENVIRONMENT_VARIABLE)} ;
168168 } else if (!config.rules .empty ()) {
169169 rules = std::move (config.rules );
170- result.metadata [ConfigName::TRACE_SAMPLING_RULES] =
170+ result.metadata [ConfigName::TRACE_SAMPLING_RULES] = {
171171 ConfigMetadata (ConfigName::TRACE_SAMPLING_RULES, to_string (rules),
172- ConfigMetadata::Origin::CODE);
172+ ConfigMetadata::Origin::CODE)} ;
173173 }
174174
175175 for (const auto &rule : rules) {
@@ -191,27 +191,16 @@ Expected<FinalizedTraceSamplerConfig> finalize_config(
191191 result.rules .emplace_back (std::move (finalized_rule));
192192 }
193193
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- }
194+ Optional<double > sample_rate = resolve_and_record_config (
195+ env_config->sample_rate , config.sample_rate , &result.metadata ,
196+ ConfigName::TRACE_SAMPLING_RATE, 1.0 ,
197+ [](const double &d) { return to_string (d, 1 ); });
210198
199+ bool is_sample_rate_provided = env_config->sample_rate || config.sample_rate ;
211200 // If `sample_rate` was specified, then it translates to a "catch-all" rule
212201 // appended to the end of `rules`. First, though, we have to make sure the
213202 // sample rate is valid.
214- if (sample_rate) {
203+ if (sample_rate && is_sample_rate_provided ) {
215204 auto maybe_rate = Rate::from (*sample_rate);
216205 if (auto *error = maybe_rate.if_error ()) {
217206 return error->with_prefix (
@@ -225,11 +214,9 @@ Expected<FinalizedTraceSamplerConfig> finalize_config(
225214 result.rules .emplace_back (std::move (finalized_rule));
226215 }
227216
228- std::unordered_map<ConfigName, std::vector<ConfigMetadata>>
229- telemetry_configs_tmp;
230217 double max_per_second = resolve_and_record_config (
231- env_config->max_per_second , config.max_per_second , &telemetry_configs_tmp ,
232- &result. metadata , ConfigName::TRACE_SAMPLING_LIMIT, 100.0 ,
218+ env_config->max_per_second , config.max_per_second , &result. metadata ,
219+ ConfigName::TRACE_SAMPLING_LIMIT, 100.0 ,
233220 [](const double &d) { return std::to_string (d); });
234221
235222 const auto allowed_types = {FP_NORMAL, FP_SUBNORMAL};
0 commit comments