Compartir vía


Cambio de comportamiento de ActivitySource.CreateActivity y ActivitySource.StartActivity

Las APIs de ActivitySource.CreateActivity y ActivitySource.StartActivity solo devuelven un Activity cuando hay un escuchador registrado que determina si debe crearse la instancia. Esto se conoce generalmente como muestreo.

La enumeración System.Diagnostics.ActivitySamplingResult define las posibles decisiones de muestreo.

Al crear un Activity sin un elemento primario, ActivitySamplingResult controla si se crea el Activity y, a continuación, cómo se establecen las propiedades Recorded y IsAllDataRequested:

ResultadoDeMuestreoDeActividad Actividad creada Activity.Recorded Activity.IsAllDataRequested
Ninguno No
DatosDePropagación Falso Falso
AllData Falso Verdadero
AllDataAndRecorded Verdadero Verdadero

También es posible crear una Activity con un elemento principal. El elemento principal podría estar en el mismo proceso o podría ser un elemento principal remoto propagado al proceso actual.

Comportamiento anterior

Anteriormente, al crear un Activity como PropagationData con un elemento primario marcado como Recorded, las propiedades Recorded y IsAllDataRequested se establecieron de la siguiente manera:

ActivitySamplingResult Actividad creada Activity.Recorded Activity.IsAllDataRequested
Datos de Propagación Verdadero Falso

Nuevo comportamiento

A partir de .NET 10, al crear un Activity como PropagationData con un elemento primario marcado como Recorded, las propiedades Recorded y IsAllDataRequested se establecen de la siguiente manera:

Resultado del Muestreo de Actividad Actividad creada Activity.Recorded Activity.IsAllDataRequested
Datos de Propagación Falso Falso

Versión introducida

.NET 10 Preview 1

Tipo de cambio importante

Este cambio es un cambio de comportamiento .

Motivo del cambio

El comportamiento anterior no siguió la especificación OpenTelemetry.

Si ha implementado ActivityListener.Sample directamente Y usa ActivitySamplingResult.PropagationData, compruebe que no depende del comportamiento defectuoso. Para restaurar el comportamiento anterior, puede establecer Activity.ActivityTraceFlags en Recorded después de la llamada CreateActivity o StartActivity.

Si usa OpenTelemetry .NET y ha personalizado el sampler, compruebe la configuración del sampler. La configuración predeterminada de OpenTelemetry .NET usa un algoritmo basado en elementos primarios que no se ve afectado.

APIs afectadas