Skip to content

Commit 8b810cc

Browse files
khanayan123claude
andcommitted
feat: re-add root_session_id to TracerConfig for integration seeding
Integrations (nginx, httpd, kong) need to set root_session_id in the master process before workers fork. The Tracer passes it to get_or_init, falling back to runtime_id if not provided. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2ba87be commit 8b810cc

3 files changed

Lines changed: 12 additions & 1 deletion

File tree

include/datadog/tracer_config.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,11 @@ struct TracerConfig {
189189
// This option is ignored if `resource_renaming_enabled` is not `true`.
190190
Optional<bool> resource_renaming_always_simplified_endpoint;
191191

192+
// Root session ID for stable telemetry correlation across forked workers.
193+
// Integrations (nginx, httpd, kong) should set this in the master process
194+
// before workers fork so all Tracers share the same root.
195+
Optional<std::string> root_session_id;
196+
192197
/// A mapping of process-specific tags used to uniquely identify processes.
193198
///
194199
/// The `process_tags` map allows associating arbitrary string-based keys and
@@ -225,6 +230,7 @@ class FinalizedTracerConfig final {
225230
bool log_on_startup;
226231
bool generate_128bit_trace_ids;
227232
Optional<RuntimeID> runtime_id;
233+
Optional<std::string> root_session_id;
228234
Clock clock;
229235
std::string integration_name;
230236
std::string integration_version;

src/datadog/tracer.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ Tracer::Tracer(const FinalizedTracerConfig& config,
5050
runtime_id_(config.runtime_id ? *config.runtime_id
5151
: RuntimeID::generate()),
5252
signature_{runtime_id_,
53-
root_session_id::get_or_init(runtime_id_.string()),
53+
root_session_id::get_or_init(
54+
config.root_session_id.value_or(runtime_id_.string())),
5455
config.defaults.service, config.defaults.environment},
5556
config_manager_(std::make_shared<ConfigManager>(config)),
5657
collector_(/* see constructor body */),

src/datadog/tracer_config.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,10 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
407407
final_config.runtime_id = user_config.runtime_id;
408408
}
409409

410+
if (user_config.root_session_id) {
411+
final_config.root_session_id = user_config.root_session_id;
412+
}
413+
410414
final_config.process_tags = user_config.process_tags;
411415

412416
auto agent_finalized =

0 commit comments

Comments
 (0)