Skip to content

Commit a46bce2

Browse files
Revert W3C traceparent support to tracing client and utils (#4084) (#4204)
* Revert " feat: Add W3C traceparent support to tracing client and utils (#4084)" This reverts commit 1ebdb8f.
1 parent f55dd94 commit a46bce2

File tree

12 files changed

+51
-381
lines changed

12 files changed

+51
-381
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### Fixes
66

7+
- Revert W3C traceparent support ([#4204](https://github.com/getsentry/sentry-dotnet/pull/4204))
78
- Support musl on Linux ([#4188](https://github.com/getsentry/sentry-dotnet/pull/4188))
89
- Support for Windows ARM64 with Native AOT ([#4187](https://github.com/getsentry/sentry-dotnet/pull/4187))
910
- Addressed potential performance issue with Sentry.Maui ([#4219](https://github.com/getsentry/sentry-dotnet/pull/4219))

src/Sentry.AspNet/HttpContextExtensions.cs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -34,27 +34,6 @@ public static class HttpContextExtensions
3434
}
3535
}
3636

37-
private static W3CTraceHeader? TryGetW3CTraceHeader(HttpContext context, SentryOptions? options)
38-
{
39-
var value = context.Request.Headers.Get(W3CTraceHeader.HttpHeaderName);
40-
if (string.IsNullOrWhiteSpace(value))
41-
{
42-
return null;
43-
}
44-
45-
options?.LogDebug("Received Sentry trace header '{0}'.", value);
46-
47-
try
48-
{
49-
return W3CTraceHeader.Parse(value);
50-
}
51-
catch (Exception ex)
52-
{
53-
options?.LogError(ex, "Invalid Sentry trace header '{0}'.", value);
54-
return null;
55-
}
56-
}
57-
5837
private static BaggageHeader? TryGetBaggageHeader(HttpContext context, SentryOptions? options)
5938
{
6039
var value = context.Request.Headers.Get(BaggageHeader.HttpHeaderName);
@@ -86,10 +65,7 @@ public static void StartOrContinueTrace(this HttpContext httpContext)
8665
{
8766
var options = SentrySdk.CurrentOptions;
8867

89-
// If both sentry-trace and traceparent headers are present, sentry-trace takes precedence.
90-
// See: https://github.com/getsentry/team-sdks/issues/41
9168
var traceHeader = TryGetSentryTraceHeader(httpContext, options);
92-
traceHeader ??= TryGetW3CTraceHeader(httpContext, options)?.SentryTraceHeader;
9369
var baggageHeader = TryGetBaggageHeader(httpContext, options);
9470

9571
var method = httpContext.Request.HttpMethod;

src/Sentry.AspNetCore/Extensions/HttpContextExtensions.cs

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -65,27 +65,6 @@ internal static class HttpContextExtensions
6565
}
6666
}
6767

68-
public static W3CTraceHeader? TryGetW3CTraceHeader(this HttpContext context, SentryOptions? options)
69-
{
70-
var value = context.Request.Headers.GetValueOrDefault(W3CTraceHeader.HttpHeaderName);
71-
if (string.IsNullOrWhiteSpace(value))
72-
{
73-
return null;
74-
}
75-
76-
options?.LogDebug("Received Sentry trace header '{0}'.", value);
77-
78-
try
79-
{
80-
return W3CTraceHeader.Parse(value!);
81-
}
82-
catch (Exception ex)
83-
{
84-
options?.LogError(ex, "Invalid Sentry trace header '{0}'.", value);
85-
return null;
86-
}
87-
}
88-
8968
public static BaggageHeader? TryGetBaggageHeader(this HttpContext context, SentryOptions? options)
9069
{
9170
var value = context.Request.Headers.GetValueOrDefault(BaggageHeader.HttpHeaderName);

src/Sentry.AspNetCore/SentryMiddleware.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,7 @@ public async Task InvokeAsync(HttpContext context, RequestDelegate next)
105105
context.Response.OnCompleted(() => hub.FlushAsync(_options.FlushTimeout));
106106
}
107107

108-
// If both sentry-trace and traceparent headers are present, sentry-trace takes precedence.
109-
// See: https://github.com/getsentry/team-sdks/issues/41
110108
var traceHeader = context.TryGetSentryTraceHeader(_options);
111-
traceHeader ??= context.TryGetW3CTraceHeader(_options)?.SentryTraceHeader;
112109
var baggageHeader = context.TryGetBaggageHeader(_options);
113110
var transactionContext = hub.ContinueTrace(traceHeader, baggageHeader);
114111

src/Sentry.Azure.Functions.Worker/HttpRequestDataExtensions.cs

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,31 +30,6 @@ internal static class HttpRequestDataExtensions
3030
}
3131
}
3232

33-
public static W3CTraceHeader? TryGetW3CTraceHeader(this HttpRequestData context, IDiagnosticLogger? logger)
34-
{
35-
var traceHeaderValue = context.Headers.TryGetValues(W3CTraceHeader.HttpHeaderName, out var values)
36-
? values.FirstOrDefault()
37-
: null;
38-
39-
if (traceHeaderValue is null)
40-
{
41-
logger?.LogDebug("Did not receive a Sentry trace header.");
42-
return null;
43-
}
44-
45-
logger?.LogDebug("Received Sentry trace header '{0}'.", traceHeaderValue);
46-
47-
try
48-
{
49-
return W3CTraceHeader.Parse(traceHeaderValue);
50-
}
51-
catch (Exception ex)
52-
{
53-
logger?.LogError(ex, "Invalid Sentry trace header '{0}'.", traceHeaderValue);
54-
return null;
55-
}
56-
}
57-
5833
public static BaggageHeader? TryGetBaggageHeader(this HttpRequestData context, IDiagnosticLogger? logger)
5934
{
6035
var baggageValue = context.Headers.TryGetValues(BaggageHeader.HttpHeaderName, out var value)

src/Sentry.Azure.Functions.Worker/SentryFunctionsWorkerMiddleware.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,7 @@ private async Task<TransactionContext> StartOrContinueTraceAsync(FunctionContext
123123
TransactionNameCache.TryAdd(transactionNameKey, transactionName);
124124
}
125125

126-
// If both sentry-trace and traceparent headers are present, sentry-trace takes precedence.
127-
// See: https://github.com/getsentry/team-sdks/issues/41
128126
var traceHeader = requestData.TryGetSentryTraceHeader(_logger);
129-
traceHeader ??= requestData.TryGetW3CTraceHeader(_logger)?.SentryTraceHeader;
130127
var baggageHeader = requestData.TryGetBaggageHeader(_logger);
131128

132129
return SentrySdk.ContinueTrace(traceHeader, baggageHeader, transactionName, Operation);

src/Sentry/SentryMessageHandler.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ private void PropagateTraceHeaders(HttpRequestMessage request, string url)
136136
if (_options?.TracePropagationTargets.MatchesSubstringOrRegex(url) is true or null)
137137
{
138138
AddSentryTraceHeader(request);
139-
AddW3CTraceHeader(request);
140139
AddBaggageHeader(request);
141140
}
142141
}
@@ -150,15 +149,6 @@ private void AddSentryTraceHeader(HttpRequestMessage request)
150149
}
151150
}
152151

153-
private void AddW3CTraceHeader(HttpRequestMessage request)
154-
{
155-
// Set trace header if it hasn't already been set
156-
if (!request.Headers.Contains(W3CTraceHeader.HttpHeaderName) && _hub.GetTraceHeader() is { } traceHeader)
157-
{
158-
request.Headers.Add(W3CTraceHeader.HttpHeaderName, new W3CTraceHeader(traceHeader).ToString());
159-
}
160-
}
161-
162152
private void AddBaggageHeader(HttpRequestMessage request)
163153
{
164154
var baggage = _hub.GetBaggage();

src/Sentry/SentryOptions.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -952,8 +952,7 @@ public double? ProfilesSampleRate
952952
/// <summary>
953953
/// A customizable list of <see cref="StringOrRegex"/> objects, each containing either a
954954
/// substring or regular expression pattern that can be used to control which outgoing HTTP requests
955-
/// will have the <c>sentry-trace</c>, <c>traceparent</c>, and <c>baggage</c> headers propagated,
956-
/// for purposes of distributed tracing.
955+
/// will have the <c>sentry-trace</c> and <c>baggage</c> headers propagated, for purposes of distributed tracing.
957956
/// The default value contains a single value of <c>.*</c>, which matches everything.
958957
/// To disable propagation completely, clear this collection or set it to an empty collection.
959958
/// </summary>

src/Sentry/W3CTraceHeader.cs

Lines changed: 0 additions & 131 deletions
This file was deleted.

test/Sentry.AspNetCore.Tests/SentryMiddlewareTests.cs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -682,10 +682,8 @@ public async Task InvokeAsync_InstrumenterOpenTelemetry_SavesScope()
682682
}
683683
}
684684

685-
[Theory]
686-
[InlineData("Sentry-Trace", "4b4d2878507b43d3af7dd8c4ab7a96d9-3cc6fd1337d243de", "4b4d2878507b43d3af7dd8c4ab7a96d9")]
687-
[InlineData("traceparent", "00-4b4d2878507b43d3af7dd8c4ab7a96d8-3cc6fd1337d243de-00", "4b4d2878507b43d3af7dd8c4ab7a96d8")]
688-
public async Task InvokeAsync_RequestContainsSentryHeaders_ContinuesTrace(string headerName, string headerValue, string expectedTraceId)
685+
[Fact]
686+
public async Task InvokeAsync_RequestContainsSentryHeaders_ContinuesTrace()
689687
{
690688
SentryTraceHeader capturedTraceHeader = null;
691689
BaggageHeader capturedBaggageHeader = null;
@@ -700,7 +698,7 @@ public async Task InvokeAsync_RequestContainsSentryHeaders_ContinuesTrace(string
700698
var request = Substitute.For<HttpRequest>();
701699
var fakeHeaders = new HeaderDictionary
702700
{
703-
{ headerName, headerValue},
701+
{ "Sentry-Trace", "4b4d2878507b43d3af7dd8c4ab7a96d9-3cc6fd1337d243de"},
704702
{ "Baggage", "sentry-trace_id=4b4d2878507b43d3af7dd8c4ab7a96d9, sentry-public_key=eb18e953812b41c3aeb042e666fd3b5c"},
705703
};
706704
_ = request.Headers.Returns(fakeHeaders);
@@ -712,21 +710,19 @@ public async Task InvokeAsync_RequestContainsSentryHeaders_ContinuesTrace(string
712710
_fixture.Hub.Received().ContinueTrace(Arg.Any<SentryTraceHeader>(), Arg.Any<BaggageHeader>());
713711

714712
Assert.NotNull(capturedTraceHeader);
715-
Assert.Equal(expectedTraceId, capturedTraceHeader.TraceId.ToString());
713+
Assert.Equal("4b4d2878507b43d3af7dd8c4ab7a96d9", capturedTraceHeader.TraceId.ToString());
716714
Assert.NotNull(capturedBaggageHeader);
717715
Assert.Equal("sentry-trace_id=4b4d2878507b43d3af7dd8c4ab7a96d9, sentry-public_key=eb18e953812b41c3aeb042e666fd3b5c", capturedBaggageHeader.ToString());
718716
}
719717

720-
[Theory]
721-
[InlineData("Sentry-Trace", "4b4d2878507b43d3af7dd8c4ab7a96d9-3cc6fd1337d243de", "4b4d2878507b43d3af7dd8c4ab7a96d9")]
722-
[InlineData("traceparent", "00-4b4d2878507b43d3af7dd8c4ab7a96d8-3cc6fd1337d243de-00", "4b4d2878507b43d3af7dd8c4ab7a96d8")]
723-
public async Task InvokeAsync_RequestContainsSentryHeaders_AddsHeadersAndTransactionContextToItems(string headerName, string headerValue, string expectedTraceId)
718+
[Fact]
719+
public async Task InvokeAsync_RequestContainsSentryHeaders_AddsHeadersAndTransactionContextToItems()
724720
{
725721
var sut = _fixture.GetSut();
726722
var request = Substitute.For<HttpRequest>();
727723
var fakeHeaders = new HeaderDictionary
728724
{
729-
{ headerName, headerValue},
725+
{ "Sentry-Trace", "4b4d2878507b43d3af7dd8c4ab7a96d9-3cc6fd1337d243de"},
730726
{ "Baggage", "sentry-trace_id=4b4d2878507b43d3af7dd8c4ab7a96d9, sentry-public_key=eb18e953812b41c3aeb042e666fd3b5c"},
731727
};
732728
var contextItems = new Dictionary<object, object>();
@@ -745,24 +741,22 @@ public async Task InvokeAsync_RequestContainsSentryHeaders_AddsHeadersAndTransac
745741

746742
var traceHeader = contextItems[SentryMiddleware.TraceHeaderItemKey] as SentryTraceHeader;
747743
Assert.NotNull(traceHeader);
748-
Assert.Equal(expectedTraceId, traceHeader.TraceId.ToString());
744+
Assert.Equal("4b4d2878507b43d3af7dd8c4ab7a96d9", traceHeader.TraceId.ToString());
749745
var baggageHeader = contextItems[SentryMiddleware.BaggageHeaderItemKey] as BaggageHeader;
750746
Assert.NotNull(baggageHeader);
751747
Assert.Equal("sentry-trace_id=4b4d2878507b43d3af7dd8c4ab7a96d9, sentry-public_key=eb18e953812b41c3aeb042e666fd3b5c", baggageHeader.ToString());
752748
var transactionContext = contextItems[SentryMiddleware.BaggageHeaderItemKey] as BaggageHeader;
753749
Assert.NotNull(transactionContext);
754750
}
755751

756-
[Theory]
757-
[InlineData("Sentry-Trace", "4b4d2878507b43d3af7dd8c4ab7a96d9-3cc6fd1337d243de")]
758-
[InlineData("traceparent", "00-4b4d2878507b43d3af7dd8c4ab7a96d8-3cc6fd1337d243de-01")]
759-
public async Task InvokeAsync_InvokingWithTheSameContextTwice_DoesNotThrow(string headerName, string headerValue)
752+
[Fact]
753+
public async Task InvokeAsync_InvokingWithTheSameContextTwice_DoesNotThrow()
760754
{
761755
var sut = _fixture.GetSut();
762756
var request = Substitute.For<HttpRequest>();
763757
var fakeHeaders = new HeaderDictionary
764758
{
765-
{ headerName, headerValue},
759+
{ "Sentry-Trace", "4b4d2878507b43d3af7dd8c4ab7a96d9-3cc6fd1337d243de"},
766760
{ "Baggage", "sentry-trace_id=4b4d2878507b43d3af7dd8c4ab7a96d9, sentry-public_key=eb18e953812b41c3aeb042e666fd3b5c"},
767761
};
768762
var contextItems = new Dictionary<object, object>();

0 commit comments

Comments
 (0)