Ablaufverfolgung: Bereichs- und Ablaufverfolgungs-IDs von übergeordneten zu untergeordneten Objekten durch Prozeduraufrufe

Achtung

Diese Verhaltensänderung ist im Bundle 2024_06 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

In der Ablaufverfolgung verhalten sich Bereichs- und Ablaufverfolgungs-IDs wie folgt:

Vor der Änderung:

Wenn der Handler in JavaScript oder Snowflake Scripting geschrieben ist, ist die trace_id für jeden der durch verkettete gespeicherte Prozeduren oder UDFs erstellten Bereiche eindeutig.

Das Feld parent_span_id ist nicht in der RECORD-Spalte der Ereignistabelle vorhanden.

Anbietern und Verbrauchern von Native Apps werden unterschiedliche trace_id-Werte für freigegeben Ereignisse angezeigt. Anbietern wird die Hash-Version angezeigt.

Nach der Änderung:

Mit dieser Änderung wird die Ablaufverfolgungs-ID für Handler, die in JavaScript und Snowflake Scripting geschrieben wurden, unterstützt. Für Handler, die in Python, Java und Scala geschrieben wurden, gibt es dies bereits. Die neue Verhaltensweise gilt sowohl für gespeicherte Prozeduren und UDFs, deren Handler in JavaScript geschrieben sind, als auch für Handler für gespeicherte Prozeduren, die in Snowflake Scripting geschrieben sind.

Bereiche, die durch verkettete Prozeduren oder UDFs mit JavaScript oder Snowflake Scripting Handlern erzeugt werden, haben die gleiche trace_id. Die RECORD-Spalte kann ein parent_span_id-Attribut enthalten.

Bereiche, die durch verkettete Prozeduren oder UDFs mit JavaScript oder Snowflake Scripting Handlern erzeugt werden, haben eine Übergeordnet/Untergeordnet-Beziehung zwischen parent_span_id und span_id. Gespeicherte Prozeduren mit JavaScript- oder Snowflake Scripting-Handlern können andere gespeicherte Prozeduren in einer beliebig langen Kette aufrufen. UDFs können keine SQL-Anweisungen ausführen, sodass der Aufruf einer UDF die Kette beendet. Die Ablaufverfolgungsinformationen werden jedoch weiterhin an den Bereich (Span) der UDF weitergegeben.

Wenn die gespeicherte Prozedur oder UDF mit einem JavaScript- oder Snowflake Scripting-Handler vom Benutzer direkt (der Stamm) aufgerufen wurde, dann ist die trace_id eine zufällige ID und es gibt keine parent_span_id. Wenn die Ablaufverfolgung für eine gespeicherte Prozedur deaktiviert ist und diese eine andere gespeicherte Prozedur oder UDF aufruft, dann ist der trace_id-Wert der untergeordneten Bereiche (Spans) zufällig und es gibt keinen parent_span_id-Wert. Mit anderen Worten: Die Ablaufverfolgung wird beim untergeordneten Element neu gestartet.

Native Apps-Anbieter und -Verbraucher sehen dieselbe trace_id für gemeinsam genutzte gespeicherte JavaScript- oder Snowflake Scripting-Prozeduren oder UDF-Ereignisse, sodass sie einfacher zu debuggen sind.

Diese Änderung wurde vorgenommen, um das Debugging zu verbessern.

Ref.: 1683