Změna chování ActivitySource.CreateActivity a ActivitySource.StartActivity

rozhraní API ActivitySource.CreateActivity a ActivitySource.StartActivity vrací pouze Activity, pokud je zaregistrovaný naslouchací mechanismus, který rozhodne, že instance má být vytvořena. To se obecně označuje jako vzorkování.

Výčet System.Diagnostics.ActivitySamplingResult definuje možná rozhodnutí o vzorkování.

Při vytváření Activity bez nadřazeného objektu ActivitySamplingResult určuje, jestli se Activity vytvoří a jak se nastaví vlastnosti Recorded a IsAllDataRequested:

Výsledek vzorkování aktivit Vytvořená aktivita Aktivita.Zaznamenáno Aktivita.JeVyžádánaVeškeráData
Žádný Ne
Data o šíření Ano Falešný Falešný
AllData Ano Falešný Pravda
VšechnaDataAZaznamenané Ano Pravda Pravda

Je také možné vytvořit Activity s nadřazeným objektem. Nadřazený objekt může být ve stejném procesu nebo může být vzdálený nadřazený objekt šířený do aktuálního procesu.

Předchozí chování

Dříve při vytváření Activity jako PropagationData s nadřazeným objektem označeným jako Recordedbyly vlastnosti Recorded a IsAllDataRequested nastaveny takto:

Výsledek vzorkování aktivit Vytvořená aktivita Aktivita.Zaznamenáno Aktivita.JeVyžádánaVeškeráData
Data o šíření Ano Pravda Falešný

Nové chování

Od verze .NET 10, při vytváření Activity jako PropagationData s nadřazeným objektem označeným jako Recordedjsou vlastnosti Recorded a IsAllDataRequested nastaveny následovně:

Výsledek vzorkování aktivit Vytvořená aktivita Aktivita.Zaznamenáno Aktivita.JeVyžádánaVeškeráData
Data o šíření Ano Falešný Falešný

Zavedená verze

.NET 10

Typ zásadní změny

Jedná se o změnu v chování .

Důvod změny

Předchozí chování nesplnilo specifikaci OpenTelemetry.

Pokud jste implementovali ActivityListener.Sample přímo a používáte ActivitySamplingResult.PropagationData, ověřte, že se nespoléháte na chybné chování. Pokud chcete obnovit předchozí chování, můžete nastavit Activity.ActivityTraceFlags na Recorded po CreateActivity nebo StartActivity volání.

Pokud používáte OpenTelemetry .NET a přizpůsobili jste sampler, ověřte konfiguraci sampleru. Výchozí konfigurace OpenTelemetry .NET používá nadřazený algoritmus, který nemá vliv.

Ovlivněná rozhraní API