Skip to content

Commit 4d29363

Browse files
committed
Default to off
1 parent 9a45fbf commit 4d29363

File tree

3 files changed

+74
-5
lines changed

3 files changed

+74
-5
lines changed

src/Hosting/Hosting/src/Internal/HostingApplication.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ internal sealed class HostingApplication : IHttpApplication<HostingApplication.C
1717
private readonly DefaultHttpContextFactory? _defaultHttpContextFactory;
1818
private readonly HostingApplicationDiagnostics _diagnostics;
1919

20+
// Internal for testing purposes only
21+
internal bool SuppressActivityOpenTelemetryData
22+
{
23+
get => _diagnostics.SuppressActivityOpenTelemetryData;
24+
set => _diagnostics.SuppressActivityOpenTelemetryData = value;
25+
}
26+
2027
public HostingApplication(
2128
RequestDelegate application,
2229
ILogger logger,

src/Hosting/Hosting/src/Internal/HostingApplicationDiagnostics.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ internal sealed class HostingApplicationDiagnostics
3333
private readonly HostingEventSource _eventSource;
3434
private readonly HostingMetrics _metrics;
3535
private readonly ILogger _logger;
36-
private readonly bool _suppressActivityOpenTelemetryData;
36+
37+
// Internal for testing purposes only
38+
internal bool SuppressActivityOpenTelemetryData { get; set; }
3739

3840
public HostingApplicationDiagnostics(
3941
ILogger logger,
@@ -49,7 +51,19 @@ public HostingApplicationDiagnostics(
4951
_propagator = propagator;
5052
_eventSource = eventSource;
5153
_metrics = metrics;
52-
_suppressActivityOpenTelemetryData = AppContext.TryGetSwitch("Microsoft.AspNetCore.Hosting.SuppressActivityOpenTelemetryData", out var enabled) && enabled;
54+
55+
SuppressActivityOpenTelemetryData = GetSuppressActivityOpenTelemetryData();
56+
}
57+
58+
private static bool GetSuppressActivityOpenTelemetryData()
59+
{
60+
// Default to true if the switch isn't set.
61+
if (!AppContext.TryGetSwitch("Microsoft.AspNetCore.Hosting.SuppressActivityOpenTelemetryData", out var enabled))
62+
{
63+
return true;
64+
}
65+
66+
return enabled;
5367
}
5468

5569
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -395,7 +409,7 @@ private void RecordRequestStartMetrics(HttpContext httpContext)
395409

396410
hasDiagnosticListener = false;
397411

398-
var initializeTags = !_suppressActivityOpenTelemetryData
412+
var initializeTags = !SuppressActivityOpenTelemetryData
399413
? CreateInitializeActivityTags(httpContext)
400414
: (TagList?)null;
401415

src/Hosting/Hosting/test/HostingApplicationDiagnosticsTests.cs

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,6 +1054,48 @@ public void ActivityListenersAreCalled()
10541054
hostingApplication.CreateContext(features);
10551055
Assert.Equal("0123456789abcdef", parentSpanId);
10561056

1057+
Assert.Empty(tags);
1058+
}
1059+
1060+
[Fact]
1061+
public void ActivityListeners_DontSuppressActivityTags_TagsAdded()
1062+
{
1063+
var testSource = new ActivitySource(Path.GetRandomFileName());
1064+
var hostingApplication = CreateApplication(out var features, activitySource: testSource, suppressActivityOpenTelemetryData: false);
1065+
var parentSpanId = "";
1066+
var tags = new List<KeyValuePair<string, object>>();
1067+
using var listener = new ActivityListener
1068+
{
1069+
ShouldListenTo = activitySource => ReferenceEquals(activitySource, testSource),
1070+
Sample = (ref ActivityCreationOptions<ActivityContext> _) => ActivitySamplingResult.AllData,
1071+
ActivityStarted = activity =>
1072+
{
1073+
parentSpanId = Activity.Current.ParentSpanId.ToHexString();
1074+
tags = Activity.Current.TagObjects.OrderBy(t => t.Key).ToList();
1075+
}
1076+
};
1077+
1078+
ActivitySource.AddActivityListener(listener);
1079+
1080+
features.Set<IHttpRequestFeature>(new HttpRequestFeature()
1081+
{
1082+
Headers = new HeaderDictionary()
1083+
{
1084+
{"traceparent", "00-0123456789abcdef0123456789abcdef-0123456789abcdef-01"},
1085+
{"tracestate", "TraceState1"},
1086+
{"baggage", "Key1=value1, Key2=value2"},
1087+
{"host", "localhost:8080" }
1088+
},
1089+
PathBase = "/path_base",
1090+
Path = "/path",
1091+
Scheme = "http",
1092+
Method = "CUSTOM_METHOD",
1093+
Protocol = "HTTP/1.1"
1094+
});
1095+
1096+
hostingApplication.CreateContext(features);
1097+
Assert.Equal("0123456789abcdef", parentSpanId);
1098+
10571099
Assert.Collection(tags,
10581100
kvp => AssertKeyValuePair(kvp, "http.request.method", "_OTHER"),
10591101
kvp => AssertKeyValuePair(kvp, "http.request.method_original", "CUSTOM_METHOD"),
@@ -1078,7 +1120,7 @@ static void AssertKeyValuePair<T>(KeyValuePair<string, T> pair, string key, T va
10781120
public void ActivityListeners_DefaultPorts(string scheme, int? expectedPort)
10791121
{
10801122
var testSource = new ActivitySource(Path.GetRandomFileName());
1081-
var hostingApplication = CreateApplication(out var features, activitySource: testSource);
1123+
var hostingApplication = CreateApplication(out var features, activitySource: testSource, suppressActivityOpenTelemetryData: false);
10821124
var tags = new Dictionary<string, object>();
10831125
using var listener = new ActivityListener
10841126
{
@@ -1152,7 +1194,8 @@ private static void AssertProperty<T>(object o, string name)
11521194

11531195
private static HostingApplication CreateApplication(out FeatureCollection features,
11541196
DiagnosticListener diagnosticListener = null, ActivitySource activitySource = null, ILogger logger = null,
1155-
Action<DefaultHttpContext> configure = null, HostingEventSource eventSource = null, IMeterFactory meterFactory = null)
1197+
Action<DefaultHttpContext> configure = null, HostingEventSource eventSource = null, IMeterFactory meterFactory = null,
1198+
bool? suppressActivityOpenTelemetryData = null)
11561199
{
11571200
var httpContextFactory = new Mock<IHttpContextFactory>();
11581201

@@ -1174,6 +1217,11 @@ private static HostingApplication CreateApplication(out FeatureCollection featur
11741217
eventSource ?? HostingEventSource.Log,
11751218
new HostingMetrics(meterFactory ?? new TestMeterFactory()));
11761219

1220+
if (suppressActivityOpenTelemetryData is { } suppress)
1221+
{
1222+
hostingApplication.SuppressActivityOpenTelemetryData = suppress;
1223+
}
1224+
11771225
return hostingApplication;
11781226
}
11791227

0 commit comments

Comments
 (0)