Udostępnij za pośrednictwem


Zmiana zachowania ActivitySource.CreateActivity i ActivitySource.StartActivity

Interfejsy API ActivitySource.CreateActivity i ActivitySource.StartActivity zwracają Activity tylko wtedy, gdy istnieje zarejestrowany słuchacz, który decyduje, że wystąpienie powinno zostać utworzone. Jest to ogólnie znane jako próbkowanie.

Enum System.Diagnostics.ActivitySamplingResult definiuje możliwe decyzje dotyczące próbkowania.

Podczas tworzenia Activity bez elementu nadrzędnego ActivitySamplingResult określa, czy Activity jest tworzony, a następnie jak są ustawiane właściwości Recorded i IsAllDataRequested:

WynikPróbkowaniaAktywności Utworzone działanie Zapisano aktywność Activity.CzyZadaneSaWszystkieDane
Żaden Nie
Dane Propagacji Tak Fałszywy Fałsz
AllData Tak Fałszywy Prawda
Wszystkie Dane i Nagrania Tak Prawda Prawda

Istnieje również możliwość utworzenia Activity z elementem nadrzędnym. Element nadrzędny może być w tym samym procesie lub może być zdalnym elementem nadrzędnym propagowanym do bieżącego procesu.

Poprzednie zachowanie

Wcześniej podczas tworzenia Activity jako PropagationData z elementem nadrzędnym oznaczonym jako Recordedwłaściwości Recorded i IsAllDataRequested zostały ustawione w następujący sposób:

WynikPróbkowaniaAktywności Utworzone działanie Działanie zarejestrowane Activity.CzyWszystkieDaneZostałyZaoferowane
Dane Propagacji Tak Prawda Fałszywy

Nowe zachowanie

Począwszy od .NET 10, podczas tworzenia Activity jako PropagationData z elementem nadrzędnym oznaczonym jako Recorded, właściwości Recorded i IsAllDataRequested są konfigurowane w następujący sposób:

Wynik próbkowania aktywności Utworzone działanie Aktywność.Zarejestrowano Activity.IsAllDataRequested
DanePropagacji Tak Fałszywy Fałsz

Wprowadzona wersja

.NET 10 (wersja zapoznawcza 1)

Typ zmiany przełamującej zgodność

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Poprzednie zachowanie nie było zgodne ze specyfikacją OpenTelemetry.

Jeśli zaimplementowałeś ActivityListener.Sample bezpośrednio oraz używasz ActivitySamplingResult.PropagationData, sprawdź, czy nie jesteś uzależniony od nieprawidłowego zachowania. Aby przywrócić poprzednie zachowanie, można ustawić Activity.ActivityTraceFlags na Recorded po wywołaniu CreateActivity lub StartActivity.

Jeśli używasz OpenTelemetry dla .NET i dostosowałeś sampler, sprawdź konfigurację samplera. Domyślna konfiguracja OpenTelemetry .NET używa algorytmu opartego na rodzicach, na który to nie ma wpływu.

Interfejsy API, których dotyczy problem