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 Recorded
wł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.
Zalecana akcja
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.