Commit ec0d718 1 parent 53087f8 commit ec0d718 Copy full SHA for ec0d718
File tree 3 files changed +33
-2
lines changed
3 files changed +33
-2
lines changed Original file line number Diff line number Diff line change @@ -130,7 +130,7 @@ def log_correlation
130
130
def baggage
131
131
# Baggage should not be dependent on there being an active trace.
132
132
# So we create a new TraceOperation if there isn't one.
133
- active_trace ||= TraceOperation . new
133
+ active_trace = self . active_trace || tracer . continue_trace! ( nil )
134
134
active_trace . baggage
135
135
end
136
136
Original file line number Diff line number Diff line change @@ -342,7 +342,8 @@ def build_trace(digest = nil)
342
342
trace_state : digest . trace_state ,
343
343
trace_state_unknown_fields : digest . trace_state_unknown_fields ,
344
344
remote_parent : digest . span_remote ,
345
- tracer : self
345
+ tracer : self ,
346
+ baggage : digest . baggage
346
347
)
347
348
else
348
349
TraceOperation . new (
Original file line number Diff line number Diff line change 1059
1059
end
1060
1060
end
1061
1061
end
1062
+
1063
+ describe '#baggage_tracing_interactions' do
1064
+ it 'baggage set before active trace creates active trace' do
1065
+ Datadog ::Tracing . baggage [ 'key' ] = 'value'
1066
+ Datadog ::Tracing . trace ( 'operation' ) do |_span , trace |
1067
+ expect ( trace . to_digest . baggage ) . to eq ( 'key' => 'value' )
1068
+ end
1069
+ end
1070
+
1071
+ it 'baggage set after trace finish creates new traceoperation with baggage value' do
1072
+ Datadog ::Tracing . trace ( 'operation' ) do |_span , _trace |
1073
+ expect ( Datadog ::Tracing . baggage ) . to be_empty
1074
+ end
1075
+ Datadog ::Tracing . baggage [ 'key' ] = 'value'
1076
+ expect ( Datadog ::Tracing . active_trace . to_digest . baggage ) . to eq ( 'key' => 'value' )
1077
+ end
1078
+ end
1079
+
1080
+ it 'baggage value is overridden inside an active trace' do
1081
+ Datadog ::Tracing . trace ( 'operation' ) do |_span , trace |
1082
+ Datadog ::Tracing . baggage [ 'key' ] = 'value'
1083
+ expect ( trace . to_digest . baggage ) . to eq ( 'key' => 'value' )
1084
+ end
1085
+ end
1086
+
1087
+ it 'incoming headers overrides existing baggage' do
1088
+ Datadog ::Tracing . baggage [ 'key' ] = 'value'
1089
+ Datadog ::Tracing . continue_trace! ( Datadog ::Tracing ::TraceDigest . new ( baggage : { 'key1' => 'value1' } ) )
1090
+ expect ( Datadog ::Tracing . active_trace . to_digest . baggage ) . to eq ( 'key1' => 'value1' )
1091
+ end
1062
1092
end
1063
1093
1064
1094
RSpec . describe Datadog ::Tracing ::Tracer ::TraceCompleted do
You can’t perform that action at this time.
0 commit comments