Partager via


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.

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é.

API affectées