Skip to content

Commit 927910d

Browse files
committed
Fix initialization order of isClosed_ in EtwTracer
1 parent 82ca99f commit 927910d

File tree

3 files changed

+10
-19
lines changed

3 files changed

+10
-19
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"cmake.sourceDirectory": "/wsl.localhost/Ubuntu/home/percy/opentelemetry-cpp"
3+
}

exporters/etw/include/opentelemetry/exporters/etw/etw_tracer.h

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -185,21 +185,14 @@ class Tracer : public opentelemetry::trace::Tracer,
185185
/**
186186
* @brief Provider Handle
187187
*/
188-
//change made in pr
189-
// ETWProvider::Handle &provHandle;
190-
191-
// opentelemetry::trace::TraceId traceId_;
192-
193-
// std::atomic<bool> isClosed_{true};
194-
195-
// Fix: Declare isClosed_ before provHandle so it initializes to true
196-
// *before* initProvHandle() runs.
197-
std::atomic<bool> isClosed_{true};
198-
188+
// Order matters: isClosed_ must initialize to true BEFORE provHandle
189+
// runs its initialization logic.
190+
std::atomic<bool> isClosed_{true};
199191
ETWProvider::Handle &provHandle;
200192
opentelemetry::trace::TraceId traceId_;
201193

202194
/**
195+
* @brief ETWProvider is a singleton that aggregates all ETW writes.
203196
* @brief ETWProvider is a singleton that aggregates all ETW writes.
204197
* @return
205198
*/

exporters/etw/test/etw_tracer_test.cc

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -568,17 +568,12 @@ TEST(ETWTracer, EndWithCustomTime)
568568

569569
TEST(ETWTracer, ConstructorInitializesToOpenState)
570570
{
571-
// Setup - Create a mock/real provider dependency
572571
etw::TracerProvider provider;
573572
std::string providerId = "TestProvider";
574-
575-
// Instantiate the Tracer
576-
// This triggers the constructor -> initProvHandle sequence
573+
577574
opentelemetry::exporter::etw::Tracer tracer(provider, providerId);
578-
579-
// Verify the Bug Fix
580-
// Because we added the 'friend' line in the header, we can access isClosed_ directly.
581-
// It should be FALSE (Open) now. Before your fix, this was TRUE.
575+
576+
// Tracer should be open after construction
582577
EXPECT_FALSE(tracer.isClosed_);
583578
}
584579

0 commit comments

Comments
 (0)