イベントトレース: プロシージャ呼び出しを介して親から子へ伝播されたトレース IDs¶
- 変更前:
チェーンされた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_idとspan_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