ActivitySource.CreateActivity と ActivitySource.StartActivity の動作の変更

ActivitySource.CreateActivity API と ActivitySource.StartActivity API は、インスタンスを作成する必要があることを決定する登録済みリスナーがある場合にのみ、Activity を返します。 これは一般にサンプリングと呼ばれます。

System.Diagnostics.ActivitySamplingResult 列挙型は、可能なサンプリング決定を定義します。

親なしで Activity を作成する場合は、ActivitySamplingResult が Activity を作成するかどうかを決定し、その後 Recorded プロパティと IsAllDataRequested プロパティの設定方法を決定します。

活動サンプリング結果 作成されたアクティビティ 活動が記録されました Activity.IsAllDataRequested
無し いいえ
PropagationData はい 誤り 誤り
AllData はい 誤り 真
AllDataAndRecorded はい 真 真

親を含む Activity を作成することもできます。 親は同じプロセス内にあるか、現在のプロセスに伝達されたリモート親である可能性があります。

以前の動作

以前は、Activityとしてマークされた親を含む PropagationData として Recorded を作成する場合、Recorded プロパティと IsAllDataRequested プロパティは次のように設定されていました。

活動サンプリング結果 作成されたアクティビティ 活動が記録されました Activity.IsAllDataRequested
PropagationData はい 真 誤り

新しい動作

.NET 10 以降では、親が Activityとしてマークされた PropagationData として Recorded を作成すると、Recorded と IsAllDataRequested のプロパティは次のように設定されます。

活動サンプリング結果 作成されたアクティビティ 活動が記録されました Activity.IsAllDataRequested
PropagationData はい 誤り 誤り

導入されたバージョン

.NET 10

破壊的変更の種類

この変更は、動作変更です。

変更の理由

以前の動作は、OpenTelemetry の仕様に従っていませんでした。

ActivityListener.Sample 直接実装し、ActivitySamplingResult.PropagationDataを使用している場合は、欠陥のある動作に依存していないことを確認します。 前の動作を復元するには、Activity.ActivityTraceFlags または Recorded 呼び出しの後に CreateActivity を StartActivity に設定します。

OpenTelemetry .NET を使用し、サンプラーをカスタマイズした場合は、サンプラーの構成を確認します。 既定の OpenTelemetry .NET 構成では、影響を受けない親ベースのアルゴリズムが使用されます。

影響を受ける API