Modification du comportement ActivitySource.CreateActivity et ActivitySource.StartActivity
Les API ActivitySource.CreateActivity et ActivitySource.StartActivity retournent uniquement une Activity lorsqu’il existe un écouteur inscrit qui décide de la création de l’instance. Il s’agit généralement de l’échantillonnage.
L’énumération System.Diagnostics.ActivitySamplingResult définit les décisions d’échantillonnage possibles.
Lors de la création d’un Activity
sans parent, ActivitySamplingResult
détermine si le Activity
est créé, puis comment les propriétés Recorded
et IsAllDataRequested
sont définies :
ActivitySamplingResult | Activité créée | Activity.Recorded | Activity.IsAllDataRequested |
---|---|---|---|
Aucun | Non | ||
PropagationData | Oui | Faux | Faux |
AllData | Oui | Faux | Vrai |
AllDataAndRecorded | Oui | Vrai | Vrai |
Il est également possible de créer une Activity
avec un parent. Le parent peut se trouver dans le même processus, ou il peut s’agir d’un parent distant propagé au processus actuel.
Comportement précédent
Auparavant, lors de la création d’un Activity
comme PropagationData
avec un parent marqué comme Recorded
, les propriétés Recorded
et IsAllDataRequested
étaient définies comme suit :
ActivitySamplingResult | Activité créée | Activity.Recorded | Activity.IsAllDataRequested |
---|---|---|---|
PropagationData | Oui | Vrai | Faux |
Nouveau comportement
À compter de .NET 10, lorsque vous créez un Activity
comme PropagationData
avec un parent marqué comme Recorded
, les propriétés Recorded
et IsAllDataRequested
sont définies comme suit :
ActivitySamplingResult | Activité créée | Activity.Recorded | Activity.IsAllDataRequested |
---|---|---|---|
PropagationData | Oui | Faux | Faux |
Version introduite
.NET 10 Preview 1
Type de changement cassant
Ce changement est un changement comportemental .
Raison de la modification
Le comportement précédent n’a pas suivi la spécification OpenTelemetry.
Action recommandée
Si vous avez implémenté ActivityListener.Sample
directement ET utilisez ActivitySamplingResult.PropagationData
, vérifiez que vous n’êtes pas dépendant du comportement défectueux. Pour restaurer le comportement précédent, vous pouvez définir Activity.ActivityTraceFlags
sur Recorded
après l’appel CreateActivity
ou StartActivity
.
Si vous utilisez OpenTelemetry .NET et que vous avez personnalisé l’échantillonneur, vérifiez la configuration de votre échantillonneur. La configuration .NET OpenTelemetry par défaut utilise un algorithme parent qui n’est pas affecté.