Skip to content

Commit 753da8d

Browse files
committed
Update DSM to stop using the global tracer instance
1 parent 5ca04e2 commit 753da8d

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

tracer/src/Datadog.Trace/DataStreamsMonitoring/DataStreamsContextPropagator.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,8 @@ internal class DataStreamsContextPropagator
2828
/// </summary>
2929
/// <param name="context">A <see cref="PathwayContext"/> value that will be propagated into <paramref name="headers"/>.</param>
3030
/// <param name="headers">A <see cref="IHeadersCollection"/> to add new headers to.</param>
31+
/// <param name="isDataStreamsLegacyHeadersEnabled">Are legacy DSM headers enabled</param>
3132
/// <typeparam name="TCarrier">Type of header collection</typeparam>
32-
public void Inject<TCarrier>(PathwayContext context, TCarrier headers)
33-
where TCarrier : IBinaryHeadersCollection
34-
=> Inject(context, headers, Tracer.Instance.Settings.IsDataStreamsLegacyHeadersEnabled);
35-
36-
// Internal for testing
3733
internal void Inject<TCarrier>(PathwayContext context, TCarrier headers, bool isDataStreamsLegacyHeadersEnabled)
3834
where TCarrier : IBinaryHeadersCollection
3935
{

tracer/src/Datadog.Trace/DataStreamsMonitoring/DataStreamsManager.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ internal class DataStreamsManager
2929
private static readonly AsyncLocal<PathwayContext?> LastConsumePathway = new(); // saves the context on consume checkpointing only
3030
private readonly ConcurrentDictionary<string, RateLimiter> _schemaRateLimiters = new();
3131
private readonly IDisposable _updateSubscription;
32+
private readonly bool _isLegacyDsmHeadersEnabled;
3233
private ulong _nodeHashBase;
3334
private bool _isEnabled;
3435
private bool _isInDefaultState;
@@ -40,6 +41,7 @@ public DataStreamsManager(
4041
{
4142
UpdateNodeHash(tracerSettings.Manager.InitialMutableSettings);
4243
_isEnabled = writer is not null;
44+
_isLegacyDsmHeadersEnabled = tracerSettings.IsDataStreamsLegacyHeadersEnabled;
4345
_writer = writer;
4446
_isInDefaultState = tracerSettings.IsDataStreamsMonitoringInDefaultState;
4547
_updateSubscription = tracerSettings.Manager.SubscribeToChanges(updates =>
@@ -129,7 +131,7 @@ public void InjectPathwayContext<TCarrier>(PathwayContext? context, TCarrier hea
129131
return;
130132
}
131133

132-
DataStreamsContextPropagator.Instance.Inject(context.Value, headers);
134+
DataStreamsContextPropagator.Instance.Inject(context.Value, headers, _isLegacyDsmHeadersEnabled);
133135
}
134136

135137
public void TrackBacklog(string tags, long value)

tracer/test/Datadog.Trace.Tests/DataStreamsMonitoring/DataStreamsContextPropagatorTests.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ namespace Datadog.Trace.Tests.DataStreamsMonitoring
1515
{
1616
public class DataStreamsContextPropagatorTests
1717
{
18-
[Fact]
19-
public void CanRoundTripPathwayContext()
18+
[Theory]
19+
[CombinatorialData]
20+
public void CanRoundTripPathwayContext(bool isDataStreamsLegacyHeadersEnabled)
2021
{
2122
var oneMs = TimeSpan.FromMilliseconds(1);
2223
var headers = new TestHeadersCollection();
@@ -25,7 +26,7 @@ public void CanRoundTripPathwayContext()
2526
DateTimeOffset.UtcNow.AddSeconds(-5).ToUnixTimeNanoseconds(),
2627
DateTimeOffset.UtcNow.ToUnixTimeNanoseconds());
2728

28-
DataStreamsContextPropagator.Instance.Inject(context, headers);
29+
DataStreamsContextPropagator.Instance.Inject(context, headers, isDataStreamsLegacyHeadersEnabled);
2930

3031
var extracted = DataStreamsContextPropagator.Instance.Extract(headers);
3132

@@ -86,16 +87,17 @@ public void Extract_WhenBothHeadersPresent_PrefersBase64Header()
8687
extractedContext.Value.EdgeStart.Should().NotBe(binaryContext.EdgeStart);
8788
}
8889

89-
[Fact]
90-
public void InjectedHeaders_HaveCorrectFormat()
90+
[Theory]
91+
[CombinatorialData]
92+
public void InjectedHeaders_HaveCorrectFormat(bool isDataStreamsLegacyHeadersEnabled)
9193
{
9294
var headers = new TestHeadersCollection();
9395
var context = new PathwayContext(
9496
new PathwayHash(0x12345678),
9597
0x1122334455667788,
9698
unchecked((long)0x99AABBCCDDEEFF00));
9799

98-
DataStreamsContextPropagator.Instance.Inject(context, headers);
100+
DataStreamsContextPropagator.Instance.Inject(context, headers, isDataStreamsLegacyHeadersEnabled);
99101

100102
headers.Values.Should().ContainKey(DataStreamsPropagationHeaders.PropagationKeyBase64);
101103
var base64HeaderValueBytes = headers.Values[DataStreamsPropagationHeaders.PropagationKeyBase64];

0 commit comments

Comments
 (0)