httpwebrequest context propagation when filter is applied (#1562)

This commit is contained in:
Cijo Thomas 2020-11-17 07:25:57 -08:00 committed by GitHub
parent d24a042964
commit 68adae64f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 2 deletions

View File

@ -204,9 +204,20 @@ namespace OpenTelemetry.Instrumentation.Http.Implementation
private static void ProcessRequest(HttpWebRequest request)
{
if (!WebRequestActivitySource.HasListeners() || IsRequestInstrumented(request) || !Options.EventFilter(request))
if (!WebRequestActivitySource.HasListeners() || !Options.EventFilter(request))
{
// No subscribers to the ActivitySource or this request was instrumented by previous
// No subscribers to the ActivitySource or User provider Filter is
// filtering this request.
// Propagation must still be done in such cases, to allow
// downstream services to continue from parent context, if any.
// Eg: Parent could be the Asp.Net activity.
InstrumentRequest(request, Activity.Current?.Context ?? default);
return;
}
if (IsRequestInstrumented(request))
{
// This request was instrumented by previous
// ProcessRequest, such is the case with redirect responses where the same request is sent again.
return;
}
@ -214,6 +225,9 @@ namespace OpenTelemetry.Instrumentation.Http.Implementation
var activity = WebRequestActivitySource.StartActivity(ActivityName, ActivityKind.Client);
var activityContext = Activity.Current?.Context ?? default;
// Propagation must still be done in all cases, to allow
// downstream services to continue from parent context, if any.
// Eg: Parent could be the Asp.Net activity.
InstrumentRequest(request, activityContext);
if (activity == null)
{