イベントトレース: プロシージャ呼び出しを介して親から子へ伝播されたトレース IDs

注意

この動作変更は2024_04バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

変更前:

チェーンされたJavaとScalaのストアドプロシージャまたは UDFs によって作成された各スパンの trace_id は一意です。

イベントテーブルの RECORD 列には parent_span_id フィールドが存在しません。

ネイティブアプリのプロバイダーとコンシューマーには、共有イベントの異なる trace_id 値が表示されます。プロバイダーにはハッシュ化されたバージョンが表示されます。

変更後:

チェーンされたJavaとScalaのストアドプロシージャまたは UDFs によって生成されたスパンには、同じ trace_id があります。RECORD 列は parent_span_id 属性を持っています。

チェーンされたJavaおよびScalaのストアドプロシージャまたは UDFs によって生成されたスパンには、 parent_span_idspan_id の間に親子関係があります。JavaとScalaのストアドプロシージャは、任意の長さのチェーンで他のストアドプロシージャを呼び出すことができます。(UDFs は SQL ステートメントを実行できないので、 UDF を呼び出すとチェーンが終了します。しかし、トレース情報は引き続き UDF のスパンに伝播されます。)

JavaとScalaのストアドプロシージャまたは UDF がユーザーによって直接呼び出された場合(ルート)、 trace_id はランダムな ID になり、 parent_span_id はありません。ストアドプロシージャのトレースが無効で、そのストアドプロシージャが別のストアドプロシージャまたは UDF を呼び出す場合、子のスパンの trace_id はランダムになり、 parent_span_id はありません。つまり、トレースは子から再起動されます。

ネイティブアプリのプロバイダーとコンシューマーには、共有されたJavaとScalaのストアドプロシージャや UDF イベントに対して同じ trace_id が表示されるため、デバッグが容易になります。

参照: 1592