Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,24 @@ internal sealed class IgnoreActivityHandler : IActivityHandler
private static readonly string[] SourcesNames =
{
"Couchbase.DotnetSdk.RequestTracer",
"Couchbase.DotnetSdk.OpenTelemetryRequestTracer",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you remember why we chose to "listen and ignore" sources rather than "do not subscribe" to sources? I suspect we should be doing the latter

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I understand it, the reason we don't do that is because we need to "fix" the IDs on these activities to match our own, so that if someone creates a child activity, or these IDs are embedded somewhere, everywhere uses the right values. Otherwise we can end up with weird duplication or parentage issues. Which basically means that we can never safely "not subscribe" (unfortunately)

"Grpc.Net.Client",
"HttpHandlerDiagnosticListener",
"Microsoft.AspNetCore",
"Microsoft.EntityFrameworkCore",
"MongoDB.Driver",
"MySqlConnector",
"connector-net",
"Npgsql",
"RabbitMQ.Client.Publisher",
"RabbitMQ.Client.Subscriber",
"System.Net.Http.Desktop",
"SqlClientDiagnosticListener",
"Experimental.System.Net.NameResolution",
"Experimental.System.Net.Http.Connections",
"Experimental.System.Net.Security",
"Experimental.System.Net.Sockets",
"Yarp.ReverseProxy",
};

public static bool ShouldIgnoreByOperationName(string? operationName)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,6 @@ protected AspNetCoreMvcTestBase(string sampleName, AspNetCoreTestFixture fixture
SetEnvironmentVariable(ConfigurationKeys.FeatureFlags.RouteTemplateResourceNamesEnabled, (flags == AspNetCoreFeatureFlags.RouteTemplateResourceNames).ToString());
SetEnvironmentVariable(ConfigurationKeys.FeatureFlags.SingleSpanAspNetCoreEnabled, (flags == AspNetCoreFeatureFlags.SingleSpan).ToString());

// Enable OpenTelemetry interop to test that the OTel Baggage API integration works correctly.
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

Fixture = fixture;
Fixture.SetOutput(output);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ public static IEnumerable<object[]> GetEnabledConfig()
public async Task SubmitsTraces(string packageVersion, string metadataSchemaVersion)
{
SetEnvironmentVariable("DD_TRACE_SPAN_ATTRIBUTE_SCHEMA", metadataSchemaVersion);
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

// If you want to use a custom connection string, set it here
// SetEnvironmentVariable("ASB_CONNECTION_STRING", null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ public static IEnumerable<object[]> GetPackageVersions()
public async Task HandleProduceAndConsume(string packageVersion)
{
SetEnvironmentVariable(ConfigurationKeys.DataStreamsMonitoring.Enabled, "1");
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

// If you want to use a custom connection string, set it here
// SetEnvironmentVariable("ASB_CONNECTION_STRING", null);
Expand Down Expand Up @@ -67,7 +66,6 @@ await Verifier.Verify(PayloadsToPoints(agent.DataStreams), settings)
public async Task ValidateSpanTags(string packageVersion)
{
SetEnvironmentVariable(ConfigurationKeys.DataStreamsMonitoring.Enabled, "1");
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

// If you want to use a custom connection string, set it here
// SetEnvironmentVariable("ASB_CONNECTION_STRING", null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,15 @@ public static IEnumerable<object[]> GetEnabledConfig()
public async Task SubmitTraces(string packageVersion, string metadataSchemaVersion)
{
SetEnvironmentVariable("DD_TRACE_SPAN_ATTRIBUTE_SCHEMA", metadataSchemaVersion);

if (GetPackageVersion(packageVersion) < new Version(3, 2, 0))
{
// Early versions of tracing just called new Activity(), which results in activities with no source, so
// our IgnoreActivityHandler fails to detect it: https://github.com/couchbase/couchbase-net-client/blob/3.1.0/src/Couchbase/Core/Diagnostics/Tracing/ActivityRequestTracer.cs#L24
// for simplicity, just disable OTEL integration for these cases
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "false");
}

var isExternalSpan = metadataSchemaVersion == "v0";
var clientSpanServiceName = isExternalSpan ? $"{EnvironmentHelper.FullSampleName}-couchbase" : EnvironmentHelper.FullSampleName;

Expand All @@ -50,8 +59,8 @@ public async Task SubmitTraces(string packageVersion, string metadataSchemaVersi
using (await RunSampleAndWaitForExit(agent, packageVersion: packageVersion))
{
var spans = (await agent.WaitForSpansAsync(10, 500))
.Where(s => s.Type == "db")
.ToList();
.Where(s => s.Type == "db")
.ToList();

ValidateIntegrationSpans(spans, metadataSchemaVersion, expectedServiceName: clientSpanServiceName, isExternalSpan);

Expand Down Expand Up @@ -91,7 +100,7 @@ await VerifyHelper.VerifySpans(spans, settings)

private static string GetVersionSuffix(string packageVersion)
{
var version = new Version(string.IsNullOrEmpty(packageVersion) ? "3.4.1" : packageVersion); // default version in csproj
var version = GetPackageVersion(packageVersion);
if (version < new Version("3.1.2"))
{
return "_3_0";
Expand Down Expand Up @@ -119,5 +128,8 @@ private static string GetVersionSuffix(string packageVersion)

return string.Empty;
}

private static Version GetPackageVersion(string packageVersion)
=> new(string.IsNullOrEmpty(packageVersion) ? "3.4.1" : packageVersion); // default version in csproj
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ public class GrpcLegacyTests : GrpcTestsBase
public GrpcLegacyTests(ITestOutputHelper output)
: base("GrpcLegacy", output, usesAspNetCore: false)
{
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");
// the sample uses protobuf, but we are only interested in testing the grpc instrumentation,
// so we disable the proto one which would add unexpected tags to the spans.
SetEnvironmentVariable("DD_TRACE_PROTOBUF_ENABLED", "false");
Expand Down Expand Up @@ -373,6 +372,7 @@ static void FixVerySlowServerSpans(IImmutableList<MockSpan> spans, HttpClientInt
{
// May be missing in some cases
span.Tags["http.status_code"] = "200";
span.Tags["grpc.status_code"] = "4";
}

// there is a race between the server cancelling a deadline and the client cancelling it
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ public HangfireTests(ITestOutputHelper output)
[Trait("RunOnWindows", "True")]
public async Task SubmitsTraces()
{
// needed for context propagation test
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

using (var telemetry = this.ConfigureTelemetry())
using (var agent = EnvironmentHelper.GetMockAgent())
using (await RunSampleAndWaitForExit(agent))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,11 @@ public async Task TracingDisabled_DoesNotSubmitsTraces(
headers.Should().NotContainKey(HttpHeaderNames.PropagatedTags);

// W3C trace context headers
headers.Should().NotContainKey(W3CTraceContextPropagator.TraceParentHeaderName);
headers.Should().NotContainKey(W3CTraceContextPropagator.TraceStateHeaderName);
// These are still injected when we have otel enabled, but they're not added by us
// TODO: Verify whether the injected values are actually _correct_ - they _should_ be,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a local test and this behavior only happens starting in .NET 7. Unfortunately, the span-id on the headers matches the span-id of the ignored activity. More details:

The ActivitySource with name System.Net.Http will generate an activity named System.Net.Http.HttpRequestOut. This source is not covered by our IgnoreActivityHandler so this is handled by our DefaultActivityHandler and ultimately we "ignore" the activity and do not create a corresponding Datadog span because it passes our IgnoreActivityHandler.ShouldIgnoreByOperationName(activity.OperationName) check.

We then call IgnoreActivityHandler.IgnoreActivity and the the TraceId and ParentSpanId are rewritten (notably we do not touch the SpanId). After our ActivityHandlers respond to the new Activity creation, it is injected into the headers as traceparent={activity.Id} and the result is the span-id part of the traceparent is incorrect because we never recorded a span with that span-id name. When tracing is enabled we end up overriding the traceparent header with our own span information, but when tracing is disabled then this information goes through untouched.

In reality, this behavior will only affect cases where we want to disable tracing, which includes the export of traces or other telemetry data that the user would view as noise. We can do a follow-up PR to resolve this issue because it's not new, but we should fix this.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, question, how should we fix this:

  • Rewrite the SpanId for all activities (Why don't we do this currently 🤔 We already rewrite traceIds and parentSpanIds, and in some cases we rewrite the SpanId, should we rewrite these too? 🤔
  • Update our http instrumentation to explicitly remove the activity headers when we see them, if the http integration is disabled? We're not adding them, but we could remove them... This blurs the line as to what "disable integration" means though...
  • Something else?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Update our http instrumentation to explicitly remove the activity headers when we see them, if the http integration is disabled? We're not adding them, but we could remove them... This blurs the line as to what "disable integration" means though...

I think this is the best approach. This isn't actually "integration disabled", rather "integration enabled but this http request has the do-not-trace header". This covers cases such as http requests to our own /v0.4/traces agent endpoint. What do you think?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😬 I think that's conflating two separate issues, which is something we've flagged previously too 🙈

Because there's several different aspects here:

  • Integration disabled (don't run any code in this integration, typically an escape hatch for bugs)
  • Don't propagate but do create outgoing spans (a common ask)
  • Don't create spans but do propagate (seems a bit weird, but is where we actually are in this scenario)
  • Don't create spans, don't propagate (what our "do not trace" header is meant to do)

In practice, we really should be able to control span creation and propagation independently. And integration disablement is a whole other tangential thing 😬

So in short, I'm really not sure what the best fix is today, without exploring the full matrix of potential features further...

// because our IgnoreActivityHandler should fix them
// headers.Should().NotContainKey(W3CTraceContextPropagator.TraceParentHeaderName);
// headers.Should().NotContainKey(W3CTraceContextPropagator.TraceStateHeaderName);

// B3 trace context headers
headers.Should().NotContainKey(B3SingleHeaderContextPropagator.B3);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ public static IEnumerable<object[]> GetEnabledConfig()
public async Task SubmitsTraces(string packageVersion, string metadataSchemaVersion)
{
SetEnvironmentVariable("DD_TRACE_SPAN_ATTRIBUTE_SCHEMA", metadataSchemaVersion);
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

var isExternalSpan = metadataSchemaVersion == "v0";
var clientSpanServiceName = isExternalSpan ? $"{EnvironmentHelper.FullSampleName}-mongodb" : EnvironmentHelper.FullSampleName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ public NetActivitySdkTests(ITestOutputHelper output)
[Trait("RunOnWindows", "True")]
public async Task SubmitsTraces()
{
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");
SetEnvironmentVariable("DD_TRACE_DISABLED_ACTIVITY_SOURCES", "Disabled.By.ExactMatch,*.By.Glob*");

using (var telemetry = this.ConfigureTelemetry())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,6 @@ public static IEnumerable<object[]> GetOtlpTracesTestData()
[MemberData(nameof(GetData))]
public async Task SubmitsTraces(string packageVersion)
{
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

using (var telemetry = this.ConfigureTelemetry())
using (var agent = EnvironmentHelper.GetMockAgent())
using (await RunSampleAndWaitForExit(agent, packageVersion: packageVersion))
Expand Down Expand Up @@ -173,7 +171,6 @@ await VerifyHelper.VerifySpans(spans, settings)
[MemberData(nameof(PackageVersions.OpenTelemetry), MemberType = typeof(PackageVersions))]
public async Task SubmitsTracesWithActivitySource(string packageVersion)
{
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");
SetEnvironmentVariable("ADD_ADDITIONAL_ACTIVITY_SOURCE", "true");

using (var telemetry = this.ConfigureTelemetry())
Expand Down Expand Up @@ -218,6 +215,7 @@ await VerifyHelper.VerifySpans(spans, settings)
[MemberData(nameof(PackageVersions.OpenTelemetry), MemberType = typeof(PackageVersions))]
public async Task IntegrationDisabled(string packageVersion)
{
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "false");
using (var telemetry = this.ConfigureTelemetry())
using (var agent = EnvironmentHelper.GetMockAgent())
using (await RunSampleAndWaitForExit(agent, packageVersion: packageVersion))
Expand Down Expand Up @@ -265,8 +263,6 @@ public async Task SubmitsOtlpTraces(string packageVersion, string datadogTracesE
// OTEL_TRACES_EXPORTER=otlp enables the DD SDK to emit traces (and trace stats) via OTLP
SetEnvironmentVariable("OTEL_TRACES_EXPORTER", datadogTracesEnabled == "true" ? "otlp" : "none");

// While the feature does not need DD_TRACE_OTEL_ENABLED=true to be set, spans are only written with the OTel API in this test application
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");
SetEnvironmentVariable("DD_TRACE_DEBUG", "true");

SetEnvironmentVariable("DD_ENV", string.Empty);
Expand Down Expand Up @@ -688,6 +684,12 @@ public async Task SubmitsOtlpLogs(string packageVersion, string datadogLogsEnabl
{
logRecord["span_id"] = "normalized-span-id";
}

// This is sometimes added, sometimes not, so just remove it
if (logRecord is JObject jObj)
{
jObj.Remove("flags");
}
}

var formattedJson = logsData.ToString(Formatting.Indented);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,6 @@ public static IEnumerable<object[]> GetData()
[MemberData(nameof(GetData))]
public async Task SubmitsTraces(string packageVersion)
{
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

using (var telemetry = this.ConfigureTelemetry())
using (var agent = EnvironmentHelper.GetMockAgent())
using (await RunSampleAndWaitForExit(agent, packageVersion: packageVersion))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public abstract class TracingIntegrationTest : TestHelper
protected TracingIntegrationTest(string sampleAppName, ITestOutputHelper output)
: base(sampleAppName, output)
{
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");
}

protected TracingIntegrationTest(string sampleAppName, string samplePathOverrides, ITestOutputHelper output)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ public async Task SubmitsTraces(
}

SetEnvironmentVariable("DD_TRACE_SPAN_ATTRIBUTE_SCHEMA", metadataSchemaVersion);
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

SetEnvironmentVariable("DD_TRACE_DELAY_WCF_INSTRUMENTATION_ENABLED", enableNewWcfInstrumentation ? "true" : "false");
SetEnvironmentVariable(ConfigurationKeys.FeatureFlags.WcfObfuscationEnabled, enableWcfObfuscation ? "true" : "false");
Expand Down Expand Up @@ -114,7 +113,6 @@ await VerifyHelper.VerifySpans(spans, settings)
public async Task WebHttp(string metadataSchemaVersion, bool enableNewWcfInstrumentation, bool enableWebHttpResourceNames)
{
SetEnvironmentVariable("DD_TRACE_SPAN_ATTRIBUTE_SCHEMA", metadataSchemaVersion);
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");

// When using the WebHttpBinding (not a real binding) we don't
// care about ofuscation really, as it on(it doesn't do anything)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ public WebRequestTests(ITestOutputHelper output)
: base("WebRequest", output)
{
SetServiceVersion("1.0.0");
SetEnvironmentVariable("DD_TRACE_OTEL_ENABLED", "true");
SetEnvironmentVariable("DD_TRACE_HTTP_CLIENT_ERROR_STATUSES", "410-499");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@
aspnet_core.route: /greet.tester.greeter/streamingbothways,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/StreamingBothWays,
grpc.status_code: 0,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/streamingbothways,
Expand Down Expand Up @@ -169,6 +171,8 @@
aspnet_core.route: /greet.tester.greeter/streamingfromclient,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/StreamingFromClient,
grpc.status_code: 0,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/streamingfromclient,
Expand Down Expand Up @@ -277,6 +281,8 @@
aspnet_core.route: /greet.tester.greeter/erroringmethod,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/ErroringMethod,
grpc.status_code: 1,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/erroringmethod,
Expand Down Expand Up @@ -387,6 +393,8 @@
aspnet_core.route: /greet.tester.greeter/erroringmethod,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/ErroringMethod,
grpc.status_code: 15,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/erroringmethod,
Expand Down Expand Up @@ -497,6 +505,8 @@
aspnet_core.route: /greet.tester.greeter/erroringmethod,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/ErroringMethod,
grpc.status_code: 5,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/erroringmethod,
Expand Down Expand Up @@ -607,6 +617,8 @@
aspnet_core.route: /greet.tester.greeter/erroringmethod,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/ErroringMethod,
grpc.status_code: 2,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/erroringmethod,
Expand Down Expand Up @@ -721,6 +733,8 @@ at Samples.GrpcDotNet.Services.GreeterService.ErroringMethod(CreateErrorRequest
aspnet_core.route: /greet.tester.greeter/erroringmethod,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/ErroringMethod,
grpc.status_code: 1,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/erroringmethod,
Expand Down Expand Up @@ -831,6 +845,8 @@ at Samples.GrpcDotNet.Services.GreeterService.ErroringMethod(CreateErrorRequest
aspnet_core.route: /greet.tester.greeter/erroringmethod,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/ErroringMethod,
grpc.status_code: 15,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/erroringmethod,
Expand Down Expand Up @@ -941,6 +957,8 @@ at Samples.GrpcDotNet.Services.GreeterService.ErroringMethod(CreateErrorRequest
aspnet_core.route: /greet.tester.greeter/erroringmethod,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/ErroringMethod,
grpc.status_code: 5,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/erroringmethod,
Expand Down Expand Up @@ -1051,6 +1069,8 @@ at Samples.GrpcDotNet.Services.GreeterService.ErroringMethod(CreateErrorRequest
aspnet_core.route: /greet.tester.greeter/erroringmethod,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/ErroringMethod,
grpc.status_code: 2,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/erroringmethod,
Expand Down Expand Up @@ -1269,6 +1289,8 @@ at Samples.GrpcDotNet.Services.GreeterService.ErroringMethod(CreateErrorRequest
aspnet_core.route: /greet.tester.greeter/streamingfromserver,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/StreamingFromServer,
grpc.status_code: 0,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/streamingfromserver,
Expand Down Expand Up @@ -1375,6 +1397,8 @@ at Samples.GrpcDotNet.Services.GreeterService.ErroringMethod(CreateErrorRequest
aspnet_core.route: /greet.tester.greeter/unary,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/Unary,
grpc.status_code: 0,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/unary,
Expand Down Expand Up @@ -1481,6 +1505,8 @@ at Samples.GrpcDotNet.Services.GreeterService.ErroringMethod(CreateErrorRequest
aspnet_core.route: /greet.tester.greeter/unary,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/Unary,
grpc.status_code: 0,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/unary,
Expand Down Expand Up @@ -1587,6 +1613,8 @@ at Samples.GrpcDotNet.Services.GreeterService.ErroringMethod(CreateErrorRequest
aspnet_core.route: /greet.tester.greeter/veryslow,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/VerySlow,
grpc.status_code: 4,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/veryslow,
Expand Down Expand Up @@ -1695,6 +1723,8 @@ at Samples.GrpcDotNet.Services.GreeterService.ErroringMethod(CreateErrorRequest
aspnet_core.route: /greet.tester.greeter/veryslow,
component: aspnet_core,
env: integration_tests,
grpc.method: /greet.tester.Greeter/VerySlow,
grpc.status_code: 4,
http.method: POST,
http.request.headers.host: localhost:00000,
http.route: /greet.tester.greeter/veryslow,
Expand Down
Loading
Loading