[Propagators] Nullable annotations (#5767)
This commit is contained in:
parent
1b3f1894d9
commit
ba8a0e4c13
|
|
@ -1,7 +1,4 @@
|
|||
#nullable enable
|
||||
~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string, System.Collections.Generic.IEnumerable<string>> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Fields.get -> System.Collections.Generic.ISet<string>
|
||||
~abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string, string> setter) -> void
|
||||
~OpenTelemetry.Baggage.GetBaggage() -> System.Collections.Generic.IReadOnlyDictionary<string, string>
|
||||
~OpenTelemetry.Baggage.GetBaggage(string name) -> string
|
||||
~OpenTelemetry.Baggage.GetEnumerator() -> System.Collections.Generic.Dictionary<string, string>.Enumerator
|
||||
|
|
@ -14,26 +11,12 @@
|
|||
~OpenTelemetry.Context.AsyncLocalRuntimeContextSlot<T>.Value.set -> void
|
||||
~OpenTelemetry.Context.IRuntimeContextSlotValueAccessor.Value.get -> object
|
||||
~OpenTelemetry.Context.IRuntimeContextSlotValueAccessor.Value.set -> void
|
||||
~OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.CompositeTextMapPropagator(System.Collections.Generic.IEnumerable<OpenTelemetry.Context.Propagation.TextMapPropagator> propagators) -> void
|
||||
~OpenTelemetry.Context.RuntimeContextSlot<T>.Name.get -> string
|
||||
~OpenTelemetry.Context.RuntimeContextSlot<T>.RuntimeContextSlot(string name) -> void
|
||||
~OpenTelemetry.Context.ThreadLocalRuntimeContextSlot<T>.ThreadLocalRuntimeContextSlot(string name) -> void
|
||||
~OpenTelemetry.Context.ThreadLocalRuntimeContextSlot<T>.Value.get -> object
|
||||
~OpenTelemetry.Context.ThreadLocalRuntimeContextSlot<T>.Value.set -> void
|
||||
~override OpenTelemetry.Baggage.Equals(object obj) -> bool
|
||||
~override OpenTelemetry.Context.Propagation.B3Propagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string, System.Collections.Generic.IEnumerable<string>> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
~override OpenTelemetry.Context.Propagation.B3Propagator.Fields.get -> System.Collections.Generic.ISet<string>
|
||||
~override OpenTelemetry.Context.Propagation.B3Propagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string, string> setter) -> void
|
||||
~override OpenTelemetry.Context.Propagation.BaggagePropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string, System.Collections.Generic.IEnumerable<string>> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
~override OpenTelemetry.Context.Propagation.BaggagePropagator.Fields.get -> System.Collections.Generic.ISet<string>
|
||||
~override OpenTelemetry.Context.Propagation.BaggagePropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string, string> setter) -> void
|
||||
~override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string, System.Collections.Generic.IEnumerable<string>> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
~override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Fields.get -> System.Collections.Generic.ISet<string>
|
||||
~override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string, string> setter) -> void
|
||||
~override OpenTelemetry.Context.Propagation.PropagationContext.Equals(object obj) -> bool
|
||||
~override OpenTelemetry.Context.Propagation.TraceContextPropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string, System.Collections.Generic.IEnumerable<string>> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
~override OpenTelemetry.Context.Propagation.TraceContextPropagator.Fields.get -> System.Collections.Generic.ISet<string>
|
||||
~override OpenTelemetry.Context.Propagation.TraceContextPropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string, string> setter) -> void
|
||||
~static OpenTelemetry.Baggage.Create(System.Collections.Generic.Dictionary<string, string> baggageItems = null) -> OpenTelemetry.Baggage
|
||||
~static OpenTelemetry.Baggage.GetBaggage(OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> System.Collections.Generic.IReadOnlyDictionary<string, string>
|
||||
~static OpenTelemetry.Baggage.GetBaggage(string name, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> string
|
||||
|
|
@ -41,7 +24,6 @@
|
|||
~static OpenTelemetry.Baggage.RemoveBaggage(string name, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
|
||||
~static OpenTelemetry.Baggage.SetBaggage(string name, string value, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
|
||||
~static OpenTelemetry.Baggage.SetBaggage(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, string>> baggageItems, OpenTelemetry.Baggage baggage = default(OpenTelemetry.Baggage)) -> OpenTelemetry.Baggage
|
||||
~static OpenTelemetry.Context.Propagation.Propagators.DefaultTextMapPropagator.get -> OpenTelemetry.Context.Propagation.TextMapPropagator
|
||||
~static OpenTelemetry.Context.RuntimeContext.ContextSlotType.get -> System.Type
|
||||
~static OpenTelemetry.Context.RuntimeContext.ContextSlotType.set -> void
|
||||
~static OpenTelemetry.Context.RuntimeContext.GetSlot<T>(string slotName) -> OpenTelemetry.Context.RuntimeContextSlot<T>
|
||||
|
|
@ -50,6 +32,9 @@
|
|||
~static OpenTelemetry.Context.RuntimeContext.RegisterSlot<T>(string slotName) -> OpenTelemetry.Context.RuntimeContextSlot<T>
|
||||
~static OpenTelemetry.Context.RuntimeContext.SetValue(string slotName, object value) -> void
|
||||
~static OpenTelemetry.Context.RuntimeContext.SetValue<T>(string slotName, T value) -> void
|
||||
abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string!, System.Collections.Generic.IEnumerable<string!>?>! getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Fields.get -> System.Collections.Generic.ISet<string!>?
|
||||
abstract OpenTelemetry.Context.Propagation.TextMapPropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string!, string!>! setter) -> void
|
||||
abstract OpenTelemetry.Context.RuntimeContextSlot<T>.Get() -> T
|
||||
abstract OpenTelemetry.Context.RuntimeContextSlot<T>.Set(T value) -> void
|
||||
abstract OpenTelemetry.Logs.LoggerProviderBuilder.AddInstrumentation<TInstrumentation>(System.Func<TInstrumentation>! instrumentationFactory) -> OpenTelemetry.Logs.LoggerProviderBuilder!
|
||||
|
|
@ -73,6 +58,7 @@ OpenTelemetry.Context.IRuntimeContextSlotValueAccessor
|
|||
OpenTelemetry.Context.Propagation.B3Propagator
|
||||
OpenTelemetry.Context.Propagation.B3Propagator.B3Propagator() -> void
|
||||
OpenTelemetry.Context.Propagation.B3Propagator.B3Propagator(bool singleHeader) -> void
|
||||
OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.CompositeTextMapPropagator(System.Collections.Generic.IEnumerable<OpenTelemetry.Context.Propagation.TextMapPropagator!>! propagators) -> void
|
||||
OpenTelemetry.Context.Propagation.BaggagePropagator
|
||||
OpenTelemetry.Context.Propagation.BaggagePropagator.BaggagePropagator() -> void
|
||||
OpenTelemetry.Context.Propagation.CompositeTextMapPropagator
|
||||
|
|
@ -188,7 +174,20 @@ OpenTelemetry.Trace.TracerProviderBuilder.TracerProviderBuilder() -> void
|
|||
override OpenTelemetry.Baggage.GetHashCode() -> int
|
||||
override OpenTelemetry.Context.AsyncLocalRuntimeContextSlot<T>.Get() -> T
|
||||
override OpenTelemetry.Context.AsyncLocalRuntimeContextSlot<T>.Set(T value) -> void
|
||||
override OpenTelemetry.Context.Propagation.B3Propagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string!, System.Collections.Generic.IEnumerable<string!>?>! getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
override OpenTelemetry.Context.Propagation.B3Propagator.Fields.get -> System.Collections.Generic.ISet<string!>!
|
||||
override OpenTelemetry.Context.Propagation.B3Propagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string!, string!>! setter) -> void
|
||||
override OpenTelemetry.Context.Propagation.BaggagePropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string!, System.Collections.Generic.IEnumerable<string!>?>! getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
override OpenTelemetry.Context.Propagation.BaggagePropagator.Fields.get -> System.Collections.Generic.ISet<string!>!
|
||||
override OpenTelemetry.Context.Propagation.BaggagePropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string!, string!>! setter) -> void
|
||||
override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string!, System.Collections.Generic.IEnumerable<string!>?>! getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Fields.get -> System.Collections.Generic.ISet<string!>!
|
||||
override OpenTelemetry.Context.Propagation.CompositeTextMapPropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string!, string!>! setter) -> void
|
||||
override OpenTelemetry.Context.Propagation.PropagationContext.GetHashCode() -> int
|
||||
override OpenTelemetry.Context.Propagation.PropagationContext.Equals(object? obj) -> bool
|
||||
override OpenTelemetry.Context.Propagation.TraceContextPropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string!, System.Collections.Generic.IEnumerable<string!>?>! getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
override OpenTelemetry.Context.Propagation.TraceContextPropagator.Fields.get -> System.Collections.Generic.ISet<string!>!
|
||||
override OpenTelemetry.Context.Propagation.TraceContextPropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string!, string!>! setter) -> void
|
||||
override OpenTelemetry.Context.ThreadLocalRuntimeContextSlot<T>.Dispose(bool disposing) -> void
|
||||
override OpenTelemetry.Context.ThreadLocalRuntimeContextSlot<T>.Get() -> T
|
||||
override OpenTelemetry.Context.ThreadLocalRuntimeContextSlot<T>.Set(T value) -> void
|
||||
|
|
@ -208,6 +207,7 @@ static OpenTelemetry.Baggage.operator !=(OpenTelemetry.Baggage left, OpenTelemet
|
|||
static OpenTelemetry.Baggage.operator ==(OpenTelemetry.Baggage left, OpenTelemetry.Baggage right) -> bool
|
||||
static OpenTelemetry.Context.Propagation.PropagationContext.operator !=(OpenTelemetry.Context.Propagation.PropagationContext left, OpenTelemetry.Context.Propagation.PropagationContext right) -> bool
|
||||
static OpenTelemetry.Context.Propagation.PropagationContext.operator ==(OpenTelemetry.Context.Propagation.PropagationContext left, OpenTelemetry.Context.Propagation.PropagationContext right) -> bool
|
||||
static OpenTelemetry.Context.Propagation.Propagators.DefaultTextMapPropagator.get -> OpenTelemetry.Context.Propagation.TextMapPropagator!
|
||||
static OpenTelemetry.Trace.ActivityExtensions.GetStatus(this System.Diagnostics.Activity? activity) -> OpenTelemetry.Trace.Status
|
||||
static OpenTelemetry.Trace.ActivityExtensions.RecordException(this System.Diagnostics.Activity? activity, System.Exception? ex, in System.Diagnostics.TagList tags) -> void
|
||||
static OpenTelemetry.Trace.ActivityExtensions.RecordException(this System.Diagnostics.Activity? activity, System.Exception? ex) -> void
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using OpenTelemetry.Internal;
|
||||
|
|
@ -66,7 +68,7 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
/// <inheritdoc/>
|
||||
[Obsolete("Use B3Propagator class from OpenTelemetry.Extensions.Propagators namespace, shipped as part of OpenTelemetry.Extensions.Propagators package.")]
|
||||
#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
|
||||
{
|
||||
if (context.ActivityContext.IsValid())
|
||||
|
|
@ -146,7 +148,7 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
}
|
||||
}
|
||||
|
||||
private static PropagationContext ExtractFromMultipleHeaders<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
private static PropagationContext ExtractFromMultipleHeaders<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
@ -179,7 +181,8 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
}
|
||||
|
||||
var traceOptions = ActivityTraceFlags.None;
|
||||
if (SampledValues.Contains(getter(carrier, XB3Sampled)?.FirstOrDefault())
|
||||
var xb3Sampled = getter(carrier, XB3Sampled)?.FirstOrDefault();
|
||||
if ((xb3Sampled != null && SampledValues.Contains(xb3Sampled))
|
||||
|| FlagsValue.Equals(getter(carrier, XB3Flags)?.FirstOrDefault(), StringComparison.Ordinal))
|
||||
{
|
||||
traceOptions |= ActivityTraceFlags.Recorded;
|
||||
|
|
@ -196,7 +199,7 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
}
|
||||
}
|
||||
|
||||
private static PropagationContext ExtractFromSingleHeader<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
private static PropagationContext ExtractFromSingleHeader<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
@ -206,7 +209,7 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
return context;
|
||||
}
|
||||
|
||||
var parts = header.Split(XB3CombinedDelimiter);
|
||||
var parts = header!.Split(XB3CombinedDelimiter);
|
||||
if (parts.Length < 2 || parts.Length > 4)
|
||||
{
|
||||
return context;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
#if NET
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
#endif
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using OpenTelemetry.Internal;
|
||||
|
|
@ -24,7 +29,7 @@ public class BaggagePropagator : TextMapPropagator
|
|||
public override ISet<string> Fields => new HashSet<string> { BaggageHeaderName };
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
if (context.Baggage != default)
|
||||
{
|
||||
|
|
@ -46,16 +51,16 @@ public class BaggagePropagator : TextMapPropagator
|
|||
|
||||
try
|
||||
{
|
||||
Dictionary<string, string> baggage = null;
|
||||
var baggageCollection = getter(carrier, BaggageHeaderName);
|
||||
if (baggageCollection?.Any() ?? false)
|
||||
{
|
||||
TryExtractBaggage(baggageCollection.ToArray(), out baggage);
|
||||
if (TryExtractBaggage(baggageCollection.ToArray(), out var baggage))
|
||||
{
|
||||
return new PropagationContext(context.ActivityContext, new Baggage(baggage));
|
||||
}
|
||||
}
|
||||
|
||||
return new PropagationContext(
|
||||
context.ActivityContext,
|
||||
baggage == null ? context.Baggage : new Baggage(baggage));
|
||||
return new PropagationContext(context.ActivityContext, context.Baggage);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
@ -102,11 +107,16 @@ public class BaggagePropagator : TextMapPropagator
|
|||
}
|
||||
}
|
||||
|
||||
internal static bool TryExtractBaggage(string[] baggageCollection, out Dictionary<string, string> baggage)
|
||||
internal static bool TryExtractBaggage(
|
||||
string[] baggageCollection,
|
||||
#if NET
|
||||
[NotNullWhen(true)]
|
||||
#endif
|
||||
out Dictionary<string, string>? baggage)
|
||||
{
|
||||
int baggageLength = -1;
|
||||
bool done = false;
|
||||
Dictionary<string, string> baggageDictionary = null;
|
||||
Dictionary<string, string>? baggageDictionary = null;
|
||||
|
||||
foreach (var item in baggageCollection)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using OpenTelemetry.Internal;
|
||||
|
||||
namespace OpenTelemetry.Context.Propagation;
|
||||
|
|
@ -43,7 +45,7 @@ public class CompositeTextMapPropagator : TextMapPropagator
|
|||
}
|
||||
else
|
||||
{
|
||||
ISet<string> fields = this.propagators[0].Fields;
|
||||
ISet<string>? fields = this.propagators[0].Fields;
|
||||
|
||||
var output = fields is not null
|
||||
? new HashSet<string>(fields)
|
||||
|
|
@ -66,7 +68,7 @@ public class CompositeTextMapPropagator : TextMapPropagator
|
|||
public override ISet<string> Fields => this.allFields;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
for (int i = 0; i < this.propagators.Count; i++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,15 +1,17 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace OpenTelemetry.Context.Propagation;
|
||||
|
||||
internal sealed class NoopTextMapPropagator : TextMapPropagator
|
||||
{
|
||||
private static readonly PropagationContext DefaultPropagationContext = default;
|
||||
|
||||
public override ISet<string> Fields => null;
|
||||
public override ISet<string>? Fields => null;
|
||||
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
return DefaultPropagationContext;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace OpenTelemetry.Context.Propagation;
|
||||
|
|
@ -53,7 +55,7 @@ public readonly struct PropagationContext : IEquatable<PropagationContext>
|
|||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool Equals(object obj) => (obj is PropagationContext context) && this.Equals(context);
|
||||
public override bool Equals(object? obj) => (obj is PropagationContext context) && this.Equals(context);
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override int GetHashCode()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace OpenTelemetry.Context.Propagation;
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace OpenTelemetry.Context.Propagation;
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -15,12 +17,12 @@ public abstract class TextMapPropagator
|
|||
/// * allow pre-allocation of fields, especially in systems like gRPC Metadata
|
||||
/// * allow a single-pass over an iterator (ex OpenTracing has no getter in TextMap).
|
||||
/// </summary>
|
||||
public abstract ISet<string> Fields { get; }
|
||||
public abstract ISet<string>? Fields { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Injects the context into a carrier.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Type of an object to set context on. Typically HttpRequest or similar.</typeparam>
|
||||
/// <typeparam name="T">Type of object to set context on. Typically,HttpRequest or similar.</typeparam>
|
||||
/// <param name="context">The default context to transmit over the wire.</param>
|
||||
/// <param name="carrier">Object to set context on. Instance of this object will be passed to setter.</param>
|
||||
/// <param name="setter">Action that will set name and value pair on the object.</param>
|
||||
|
|
@ -29,10 +31,10 @@ public abstract class TextMapPropagator
|
|||
/// <summary>
|
||||
/// Extracts the context from a carrier.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Type of object to extract context from. Typically HttpRequest or similar.</typeparam>
|
||||
/// <typeparam name="T">Type of object to extract context from. Typically, HttpRequest or similar.</typeparam>
|
||||
/// <param name="context">The default context to be used if Extract fails.</param>
|
||||
/// <param name="carrier">Object to extract context from. Instance of this object will be passed to the getter.</param>
|
||||
/// <param name="getter">Function that will return string value of a key with the specified name.</param>
|
||||
/// <returns>Context from it's text representation.</returns>
|
||||
public abstract PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter);
|
||||
/// <returns>Context from its text representation.</returns>
|
||||
public abstract PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System.Buffers;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
|
@ -34,7 +36,7 @@ public class TraceContextPropagator : TextMapPropagator
|
|||
public override ISet<string> Fields => new HashSet<string> { TraceState, TraceParent };
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
if (context.ActivityContext.IsValid())
|
||||
{
|
||||
|
|
@ -72,7 +74,7 @@ public class TraceContextPropagator : TextMapPropagator
|
|||
return context;
|
||||
}
|
||||
|
||||
string tracestate = null;
|
||||
string? tracestate = null;
|
||||
var tracestateCollection = getter(carrier, TraceState);
|
||||
if (tracestateCollection?.Any() ?? false)
|
||||
{
|
||||
|
|
@ -122,7 +124,7 @@ public class TraceContextPropagator : TextMapPropagator
|
|||
|
||||
setter(carrier, TraceParent, traceparent);
|
||||
|
||||
string tracestateStr = context.ActivityContext.TraceState;
|
||||
string? tracestateStr = context.ActivityContext.TraceState;
|
||||
if (tracestateStr?.Length > 0)
|
||||
{
|
||||
setter(carrier, TraceState, tracestateStr);
|
||||
|
|
@ -224,7 +226,7 @@ public class TraceContextPropagator : TextMapPropagator
|
|||
{
|
||||
tracestateResult = string.Empty;
|
||||
|
||||
char[] rentedArray = null;
|
||||
char[]? rentedArray = null;
|
||||
Span<char> traceStateBuffer = stackalloc char[128]; // 256B
|
||||
Span<char> keyLookupBuffer = stackalloc char[96]; // 192B (3x32 keys)
|
||||
int keys = 0;
|
||||
|
|
@ -379,7 +381,7 @@ public class TraceContextPropagator : TextMapPropagator
|
|||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
static void GrowBuffer(ref char[] array, ref Span<char> buffer)
|
||||
static void GrowBuffer(ref char[]? array, ref Span<char> buffer)
|
||||
{
|
||||
var newBuffer = ArrayPool<char>.Shared.Rent(buffer.Length * 2);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using OpenTelemetry.Internal;
|
||||
|
|
@ -56,7 +58,7 @@ internal static class TraceStateUtilsNew
|
|||
var keyStr = key.ToString();
|
||||
if (names.Add(keyStr))
|
||||
{
|
||||
tracestate.Add(new KeyValuePair<string, string>(keyStr, value.ToString()));
|
||||
tracestate!.Add(new KeyValuePair<string, string>(keyStr, value.ToString()));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -82,7 +84,7 @@ internal static class TraceStateUtilsNew
|
|||
|
||||
if (!isValid)
|
||||
{
|
||||
tracestate.Clear();
|
||||
tracestate!.Clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -96,7 +98,7 @@ internal static class TraceStateUtilsNew
|
|||
return false;
|
||||
}
|
||||
|
||||
internal static string GetString(IEnumerable<KeyValuePair<string, string>> traceState)
|
||||
internal static string GetString(IEnumerable<KeyValuePair<string, string>>? traceState)
|
||||
{
|
||||
if (traceState == null || !traceState.Any())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -85,13 +85,14 @@ public readonly struct SpanContext : IEquatable<SpanContext>
|
|||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(this.ActivityContext.TraceState))
|
||||
var traceState = this.ActivityContext.TraceState;
|
||||
if (string.IsNullOrEmpty(traceState))
|
||||
{
|
||||
return Enumerable.Empty<KeyValuePair<string, string>>();
|
||||
}
|
||||
|
||||
var traceStateResult = new List<KeyValuePair<string, string>>();
|
||||
TraceStateUtilsNew.AppendTraceState(this.ActivityContext.TraceState, traceStateResult);
|
||||
TraceStateUtilsNew.AppendTraceState(traceState!, traceStateResult);
|
||||
return traceStateResult;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
#nullable enable
|
||||
OpenTelemetry.Extensions.Propagators.B3Propagator
|
||||
OpenTelemetry.Extensions.Propagators.B3Propagator.B3Propagator() -> void
|
||||
OpenTelemetry.Extensions.Propagators.B3Propagator.B3Propagator(bool singleHeader) -> void
|
||||
OpenTelemetry.Extensions.Propagators.JaegerPropagator
|
||||
OpenTelemetry.Extensions.Propagators.JaegerPropagator.JaegerPropagator() -> void
|
||||
override OpenTelemetry.Extensions.Propagators.B3Propagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string, System.Collections.Generic.IEnumerable<string>> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
override OpenTelemetry.Extensions.Propagators.B3Propagator.Fields.get -> System.Collections.Generic.ISet<string>
|
||||
override OpenTelemetry.Extensions.Propagators.B3Propagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string, string> setter) -> void
|
||||
override OpenTelemetry.Extensions.Propagators.JaegerPropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string, System.Collections.Generic.IEnumerable<string>> getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
override OpenTelemetry.Extensions.Propagators.JaegerPropagator.Fields.get -> System.Collections.Generic.ISet<string>
|
||||
override OpenTelemetry.Extensions.Propagators.JaegerPropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string, string> setter) -> void
|
||||
override OpenTelemetry.Extensions.Propagators.B3Propagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string!, System.Collections.Generic.IEnumerable<string!>?>! getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
override OpenTelemetry.Extensions.Propagators.B3Propagator.Fields.get -> System.Collections.Generic.ISet<string!>!
|
||||
override OpenTelemetry.Extensions.Propagators.B3Propagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string!, string!>! setter) -> void
|
||||
override OpenTelemetry.Extensions.Propagators.JaegerPropagator.Extract<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Func<T, string!, System.Collections.Generic.IEnumerable<string!>?>! getter) -> OpenTelemetry.Context.Propagation.PropagationContext
|
||||
override OpenTelemetry.Extensions.Propagators.JaegerPropagator.Fields.get -> System.Collections.Generic.ISet<string!>!
|
||||
override OpenTelemetry.Extensions.Propagators.JaegerPropagator.Inject<T>(OpenTelemetry.Context.Propagation.PropagationContext context, T carrier, System.Action<T, string!, string!>! setter) -> void
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
public override ISet<string> Fields => AllFields;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
if (context.ActivityContext.IsValid())
|
||||
{
|
||||
|
|
@ -138,7 +138,7 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
}
|
||||
}
|
||||
|
||||
private static PropagationContext ExtractFromMultipleHeaders<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
private static PropagationContext ExtractFromMultipleHeaders<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
@ -171,7 +171,8 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
}
|
||||
|
||||
var traceOptions = ActivityTraceFlags.None;
|
||||
if (SampledValues.Contains(getter(carrier, XB3Sampled)?.FirstOrDefault())
|
||||
var xb3Sampled = getter(carrier, XB3Sampled)?.FirstOrDefault();
|
||||
if ((xb3Sampled != null && SampledValues.Contains(xb3Sampled))
|
||||
|| FlagsValue.Equals(getter(carrier, XB3Flags)?.FirstOrDefault(), StringComparison.Ordinal))
|
||||
{
|
||||
traceOptions |= ActivityTraceFlags.Recorded;
|
||||
|
|
@ -188,7 +189,7 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
}
|
||||
}
|
||||
|
||||
private static PropagationContext ExtractFromSingleHeader<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
private static PropagationContext ExtractFromSingleHeader<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
@ -198,7 +199,7 @@ public sealed class B3Propagator : TextMapPropagator
|
|||
return context;
|
||||
}
|
||||
|
||||
var parts = header.Split(XB3CombinedDelimiter);
|
||||
var parts = header!.Split(XB3CombinedDelimiter);
|
||||
if (parts.Length < 2 || parts.Length > 4)
|
||||
{
|
||||
return context;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public class JaegerPropagator : TextMapPropagator
|
|||
public override ISet<string> Fields => new HashSet<string> { JaegerHeader };
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
if (context.ActivityContext.IsValid())
|
||||
{
|
||||
|
|
@ -56,7 +56,7 @@ public class JaegerPropagator : TextMapPropagator
|
|||
return context;
|
||||
}
|
||||
|
||||
var jaegerHeaderParsed = TryExtractTraceContext(jaegerHeader, out var traceId, out var spanId, out var traceOptions);
|
||||
var jaegerHeaderParsed = TryExtractTraceContext(jaegerHeader!, out var traceId, out var spanId, out var traceOptions);
|
||||
|
||||
if (!jaegerHeaderParsed)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@
|
|||
<PackageTags>$(PackageTags);distributed-tracing;AspNet;AspNetCore;B3</PackageTags>
|
||||
<MinVerTagPrefix>core-</MinVerTagPrefix>
|
||||
<IncludeInstrumentationHelpers>true</IncludeInstrumentationHelpers>
|
||||
|
||||
<!-- this is temporary. will remove in future PR. -->
|
||||
<Nullable>disable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System.Diagnostics;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
|
@ -24,8 +26,12 @@ public class B3PropagatorTest
|
|||
private static readonly Func<IDictionary<string, string>, string, IEnumerable<string>> Getter =
|
||||
(d, k) =>
|
||||
{
|
||||
d.TryGetValue(k, out var v);
|
||||
return new string[] { v };
|
||||
if (d.TryGetValue(k, out var v))
|
||||
{
|
||||
return [v];
|
||||
}
|
||||
|
||||
return [];
|
||||
};
|
||||
|
||||
private readonly B3Propagator b3propagator = new();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System.Net;
|
||||
using Xunit;
|
||||
|
||||
|
|
@ -11,8 +13,12 @@ public class BaggagePropagatorTest
|
|||
private static readonly Func<IDictionary<string, string>, string, IEnumerable<string>> Getter =
|
||||
(d, k) =>
|
||||
{
|
||||
d.TryGetValue(k, out var v);
|
||||
return new string[] { v };
|
||||
if (d.TryGetValue(k, out var v))
|
||||
{
|
||||
return [v];
|
||||
}
|
||||
|
||||
return [];
|
||||
};
|
||||
|
||||
private static readonly Func<IList<KeyValuePair<string, string>>, string, IEnumerable<string>> GetterList =
|
||||
|
|
@ -38,7 +44,7 @@ public class BaggagePropagatorTest
|
|||
[Fact]
|
||||
public void ValidateDefaultCarrierExtraction()
|
||||
{
|
||||
var propagationContext = this.baggage.Extract<string>(default, null, null);
|
||||
var propagationContext = this.baggage.Extract<string>(default, null!, null!);
|
||||
Assert.Equal(default, propagationContext);
|
||||
}
|
||||
|
||||
|
|
@ -46,7 +52,7 @@ public class BaggagePropagatorTest
|
|||
public void ValidateDefaultGetterExtraction()
|
||||
{
|
||||
var carrier = new Dictionary<string, string>();
|
||||
var propagationContext = this.baggage.Extract(default, carrier, null);
|
||||
var propagationContext = this.baggage.Extract(default, carrier, null!);
|
||||
Assert.Equal(default, propagationContext);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System.Diagnostics;
|
||||
using Xunit;
|
||||
|
||||
|
|
@ -33,7 +35,7 @@ public class CompositePropagatorTest
|
|||
[Fact]
|
||||
public void CompositePropagator_NullTextMapPropagators()
|
||||
{
|
||||
Assert.Throws<ArgumentNullException>(() => new CompositeTextMapPropagator(null));
|
||||
Assert.Throws<ArgumentNullException>(() => new CompositeTextMapPropagator(null!));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -46,7 +48,7 @@ public class CompositePropagatorTest
|
|||
[Fact]
|
||||
public void CompositePropagator_NullTextMapPropagator()
|
||||
{
|
||||
var compositePropagator = new CompositeTextMapPropagator([null]);
|
||||
var compositePropagator = new CompositeTextMapPropagator([null!]);
|
||||
Assert.Empty(compositePropagator.Fields);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using Xunit;
|
||||
|
||||
namespace OpenTelemetry.Context.Propagation.Tests;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace OpenTelemetry.Context.Propagation.Tests;
|
||||
|
|
@ -27,7 +29,7 @@ public class TestPropagator : TextMapPropagator
|
|||
|
||||
public override ISet<string> Fields => new HashSet<string>() { this.idHeaderName, this.stateHeaderName };
|
||||
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>> getter)
|
||||
public override PropagationContext Extract<T>(PropagationContext context, T carrier, Func<T, string, IEnumerable<string>?> getter)
|
||||
{
|
||||
Interlocked.Increment(ref this.extractCount);
|
||||
|
||||
|
|
@ -37,7 +39,7 @@ public class TestPropagator : TextMapPropagator
|
|||
}
|
||||
|
||||
var id = getter(carrier, this.idHeaderName);
|
||||
if (!id.Any())
|
||||
if (id == null || !id.Any())
|
||||
{
|
||||
return context;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,24 @@
|
|||
// Copyright The OpenTelemetry Authors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#nullable enable
|
||||
|
||||
using Xunit;
|
||||
|
||||
namespace OpenTelemetry.Context.Propagation.Tests;
|
||||
|
||||
public class TracestateUtilsTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullTracestate()
|
||||
{
|
||||
var tracestateEntries = new List<KeyValuePair<string, string>>();
|
||||
Assert.False(TraceStateUtilsNew.AppendTraceState(null!, tracestateEntries));
|
||||
Assert.Empty(tracestateEntries);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("")]
|
||||
[InlineData(null)]
|
||||
[InlineData(" ")]
|
||||
[InlineData("\t")]
|
||||
public void EmptyTracestate(string tracestate)
|
||||
|
|
|
|||
|
|
@ -25,8 +25,12 @@ public class B3PropagatorTest
|
|||
private static readonly Func<IDictionary<string, string>, string, IEnumerable<string>> Getter =
|
||||
(d, k) =>
|
||||
{
|
||||
d.TryGetValue(k, out var v);
|
||||
return new string[] { v };
|
||||
if (d.TryGetValue(k, out var v))
|
||||
{
|
||||
return [v];
|
||||
}
|
||||
|
||||
return [];
|
||||
};
|
||||
|
||||
private readonly B3Propagator b3propagator = new();
|
||||
|
|
@ -354,6 +358,7 @@ public class B3PropagatorTest
|
|||
[Fact]
|
||||
public void Fields_list()
|
||||
{
|
||||
Assert.Equivalent(this.b3propagator.Fields, new List<string> { B3Propagator.XB3TraceId, B3Propagator.XB3SpanId, B3Propagator.XB3ParentSpanId, B3Propagator.XB3Sampled, B3Propagator.XB3Flags, B3Propagator.XB3Flags });
|
||||
ContainsExactly(
|
||||
this.b3propagator.Fields,
|
||||
new List<string> { B3Propagator.XB3TraceId, B3Propagator.XB3SpanId, B3Propagator.XB3ParentSpanId, B3Propagator.XB3Sampled, B3Propagator.XB3Flags });
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ public class JaegerPropagatorTest
|
|||
var headers = new Dictionary<string, string[]>();
|
||||
|
||||
// act
|
||||
var result = new JaegerPropagator().Extract(propagationContext, headers, null);
|
||||
var result = new JaegerPropagator().Extract(propagationContext, headers, null!);
|
||||
|
||||
// assert
|
||||
Assert.Equal(propagationContext, result);
|
||||
|
|
@ -183,7 +183,7 @@ public class JaegerPropagatorTest
|
|||
var headers = new Dictionary<string, string>();
|
||||
|
||||
// act
|
||||
new JaegerPropagator().Inject(propagationContext, headers, null);
|
||||
new JaegerPropagator().Inject(propagationContext, headers, null!);
|
||||
|
||||
// assert
|
||||
Assert.Empty(headers);
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>$(TargetFrameworksForTests)</TargetFrameworks>
|
||||
<!-- this is temporary. will remove in future PR. -->
|
||||
<Nullable>disable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
Loading…
Reference in New Issue