Skip to content

Commit d37f5f4

Browse files
khanayan123claude
andcommitted
refactor: move get_or_init into TracerSignature 3-param constructor
The 3-param constructor now calls root_session_id::get_or_init internally, so every TracerSignature construction via the short form goes through the singleton. Tracer no longer needs to call get_or_init directly. Session header tests use the 4-param constructor to control values directly without depending on singleton state. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 58602f5 commit d37f5f4

6 files changed

Lines changed: 24 additions & 9 deletions

File tree

BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ cc_library(
8484
"src/datadog/trace_source.cpp",
8585
"src/datadog/tracer.cpp",
8686
"src/datadog/tracer_config.cpp",
87+
"src/datadog/tracer_signature.cpp",
8788
"src/datadog/version.cpp",
8889
"src/datadog/w3c_propagation.cpp",
8990
"src/datadog/w3c_propagation.h",

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ target_sources(dd-trace-cpp-objects
212212
src/datadog/tag_propagation.cpp
213213
src/datadog/threaded_event_scheduler.cpp
214214
src/datadog/tracer_config.cpp
215+
src/datadog/tracer_signature.cpp
215216
src/datadog/tracer.cpp
216217
src/datadog/trace_id.cpp
217218
src/datadog/trace_sampler_config.cpp

include/datadog/tracer_signature.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,7 @@ struct TracerSignature {
4242

4343
TracerSignature() = delete;
4444
TracerSignature(RuntimeID runtime_id, std::string default_service,
45-
std::string default_environment)
46-
: TracerSignature(runtime_id, runtime_id.string(),
47-
std::move(default_service),
48-
std::move(default_environment)) {}
45+
std::string default_environment);
4946
TracerSignature(RuntimeID runtime_id, std::string root_session_id,
5047
std::string default_service, std::string default_environment)
5148
: runtime_id(runtime_id),

src/datadog/tracer.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
#include "msgpack.h"
2525
#include "platform_util.h"
2626
#include "random.h"
27-
#include "root_session_id.h"
2827
#include "span_data.h"
2928
#include "span_sampler.h"
3029
#include "tags.h"
@@ -49,9 +48,8 @@ Tracer::Tracer(const FinalizedTracerConfig& config,
4948
: logger_(config.logger),
5049
runtime_id_(config.runtime_id ? *config.runtime_id
5150
: RuntimeID::generate()),
52-
signature_{runtime_id_,
53-
root_session_id::get_or_init(runtime_id_.string()),
54-
config.defaults.service, config.defaults.environment},
51+
signature_{runtime_id_, config.defaults.service,
52+
config.defaults.environment},
5553
config_manager_(std::make_shared<ConfigManager>(config)),
5654
collector_(/* see constructor body */),
5755
span_sampler_(

src/datadog/tracer_signature.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#include <datadog/tracer_signature.h>
2+
3+
#include "root_session_id.h"
4+
5+
namespace datadog {
6+
namespace tracing {
7+
8+
TracerSignature::TracerSignature(RuntimeID runtime_id,
9+
std::string default_service,
10+
std::string default_environment)
11+
: TracerSignature(runtime_id,
12+
root_session_id::get_or_init(runtime_id.string()),
13+
std::move(default_service),
14+
std::move(default_environment)) {}
15+
16+
} // namespace tracing
17+
} // namespace datadog

test/telemetry/test_telemetry.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,8 @@ TELEMETRY_IMPLEMENTATION_TEST("session ID headers") {
374374

375375
SECTION("root process: DD-Session-ID present, DD-Root-Session-ID absent") {
376376
auto session_rid = RuntimeID::generate();
377-
const TracerSignature sig{session_rid, "testsvc", "test"};
377+
const TracerSignature sig{session_rid, session_rid.string(), "testsvc",
378+
"test"};
378379

379380
Telemetry telemetry{*finalize_config(), sig, logger, client,
380381
scheduler, *url};

0 commit comments

Comments
 (0)