Skip to content

Commit a144119

Browse files
committed
Report trace sampler
1 parent ef6d81e commit a144119

3 files changed

Lines changed: 17 additions & 24 deletions

File tree

include/datadog/trace_sampler_config.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ struct TraceSamplerConfig {
4242

4343
class FinalizedTraceSamplerConfig {
4444
friend Expected<FinalizedTraceSamplerConfig> finalize_config(
45-
const TraceSamplerConfig& config);
45+
const TraceSamplerConfig& config,
46+
std::unordered_map<ConfigName, std::vector<ConfigMetadata>>*
47+
telemetry_configs);
4648
friend class FinalizedTracerConfig;
4749

4850
FinalizedTraceSamplerConfig() = default;
@@ -58,7 +60,9 @@ class FinalizedTraceSamplerConfig {
5860
};
5961

6062
Expected<FinalizedTraceSamplerConfig> finalize_config(
61-
const TraceSamplerConfig& config);
63+
const TraceSamplerConfig& config,
64+
std::unordered_map<ConfigName, std::vector<ConfigMetadata>>*
65+
telemetry_configs);
6266

6367
} // namespace tracing
6468
} // namespace datadog

src/datadog/trace_sampler_config.cpp

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ std::string to_string(const std::vector<TraceSamplerConfig::Rule> &rules) {
150150
TraceSamplerConfig::Rule::Rule(const SpanMatcher &base) : SpanMatcher(base) {}
151151

152152
Expected<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

src/datadog/tracer_config.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,8 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
421421
return std::move(*error);
422422
}
423423

424-
if (auto trace_sampler_config = finalize_config(user_config.trace_sampler)) {
424+
if (auto trace_sampler_config =
425+
finalize_config(user_config.trace_sampler, &all_sources_configs)) {
425426
final_config.metadata.merge(trace_sampler_config->metadata);
426427
final_config.trace_sampler = std::move(*trace_sampler_config);
427428
} else {

0 commit comments

Comments
 (0)