イベントトレース: プロシージャ呼び出しを介して親から子へ伝播されたトレース 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