Bagikan melalui


Perubahan perilaku ActivitySource.CreateActivity dan ActivitySource.StartActivity

API ActivitySource.CreateActivity dan ActivitySource.StartActivity hanya mengembalikan Activity ketika ada pendengar yang terdaftar yang memutuskan bahwa instance tersebut harus dibuat. Ini umumnya dikenal sebagai pengambilan sampel.

Enum System.Diagnostics.ActivitySamplingResult mendefinisikan kemungkinan keputusan pengambilan sampel.

Saat membuat Activity tanpa induk, ActivitySamplingResult menentukan apakah Activity dibuat dan bagaimana properti Recorded dan IsAllDataRequested kemudian diatur:

HasilPengambilanSampelAktivitas Aktivitas dibuat Aktivitas Dicatat Aktivitas.ApakahSemuaDataDiminta
Tidak Tidak
Data Propagasi Ya Palsu Palsu
AllData Ya Palsu Benar
SemuaDataDanTerekam Ya Benar Benar

Anda juga dapat membuat Activity dengan orang tua. Induk dapat berada dalam proses yang sama, atau dapat berupa induk jarak jauh yang terhubung ke proses saat ini.

Perilaku sebelumnya

Sebelumnya, saat membuat Activity sebagai PropagationData dengan induk yang ditandai sebagai Recorded, properti Recorded dan IsAllDataRequested diatur sebagai berikut:

HasilPengambilanSampelAktivitas Aktivitas dibuat Aktivitas Dicatat Aktivitas.ApakahSemuaDataDiminta
Data Propagasi Ya Benar Palsu

Perilaku baru

Mulai dari .NET 10, saat Anda membuat Activity sebagai PropagationData dengan induk yang ditandai sebagai Recorded, properti Recorded dan IsAllDataRequested diatur sebagai berikut:

HasilPengambilanSampelAktivitas Aktivitas dibuat Aktivitas Dicatat Aktivitas.ApakahSemuaDataDiminta
Data Propagasi Ya Palsu Palsu

Versi yang diperkenalkan

.NET 10

Jenis perubahan yang merusak

Perubahan ini adalah perubahan perilaku .

Alasan perubahan

Perilaku sebelumnya tidak mengikuti spesifikasi OpenTelemetry.

Jika Anda telah menerapkan ActivityListener.Sample secara langsung dan menggunakan ActivitySamplingResult.PropagationData, pastikan Anda tidak bergantung pada perilaku yang salah. Untuk memulihkan perilaku sebelumnya, Anda dapat mengatur Activity.ActivityTraceFlags ke Recorded setelah panggilan CreateActivity atau StartActivity.

Jika Anda menggunakan OpenTelemetry .NET dan telah menyesuaikan sampler, verifikasi konfigurasi sampler Anda. Konfigurasi OpenTelemetry .NET default menggunakan algoritma berbasis induk yang tidak terpengaruh.

API yang terpengaruh