Skip to content

Commit 85a5977

Browse files
committed
Report span sampler values
1 parent a144119 commit 85a5977

3 files changed

Lines changed: 26 additions & 16 deletions

File tree

include/datadog/span_sampler_config.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ struct SpanSamplerConfig {
3737

3838
class FinalizedSpanSamplerConfig {
3939
friend Expected<FinalizedSpanSamplerConfig> finalize_config(
40-
const SpanSamplerConfig&, Logger&);
40+
const SpanSamplerConfig&, Logger&,
41+
std::unordered_map<ConfigName, std::vector<ConfigMetadata>>*
42+
telemetry_configs);
4143
friend class FinalizedTracerConfig;
4244

4345
FinalizedSpanSamplerConfig() = default;
@@ -52,8 +54,10 @@ class FinalizedSpanSamplerConfig {
5254
std::unordered_map<ConfigName, ConfigMetadata> metadata;
5355
};
5456

55-
Expected<FinalizedSpanSamplerConfig> finalize_config(const SpanSamplerConfig&,
56-
Logger&);
57+
Expected<FinalizedSpanSamplerConfig> finalize_config(
58+
const SpanSamplerConfig&, Logger&,
59+
std::unordered_map<ConfigName, std::vector<ConfigMetadata>>*
60+
telemetry_configs);
5761

5862
std::string to_string(const FinalizedSpanSamplerConfig::Rule&);
5963

src/datadog/span_sampler_config.cpp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -221,27 +221,33 @@ Expected<SpanSamplerConfig> load_span_sampler_env_config(Logger &logger) {
221221
SpanSamplerConfig::Rule::Rule(const SpanMatcher &base) : SpanMatcher(base) {}
222222

223223
Expected<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()) {

src/datadog/tracer_config.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,8 +429,8 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
429429
return std::move(trace_sampler_config.error());
430430
}
431431

432-
if (auto span_sampler_config =
433-
finalize_config(user_config.span_sampler, *logger)) {
432+
if (auto span_sampler_config = finalize_config(
433+
user_config.span_sampler, *logger, &all_sources_configs)) {
434434
final_config.metadata.merge(span_sampler_config->metadata);
435435
final_config.span_sampler = std::move(*span_sampler_config);
436436
} else {

0 commit comments

Comments
 (0)