Traçage : IDs de spans et de traces propagés de parent à enfant par des appels de procédure¶
Attention
Ce changement de comportement est présent dans le bundle 2024_06.
Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.
Dans le traçage d’événements, les IDs de spans et de trace se comportent comme suit :
- Avant la modification:
L”
trace_id
de chacun des spans créés par des procédures stockées chaînées ou des UDFs est unique lorsque le gestionnaire (handler) est écrit en JavaScript ou avec Snowflake Scripting.Le champ
parent_span_id
n’existe pas dans la colonne RECORD de la table d’événements.Les fournisseurs et les consommateurs de Native apps voient des valeurs
trace_id
différentes pour les événements partagés. Le fournisseur voit la version hachée.- Après la modification:
Ce changement ajoute la prise en charge de la propagation d’ID de trace pour les gestionnaires (handlers) écrits en JavaScript et avec Snowflake Scripting. Cela existe déjà pour les gestionnaires (handlers) écrits en Python, Java et Scala. Le nouveau comportement s’applique aux procédures stockées et aux UDFs dont les gestionnaires sont écrits en JavaScript, ainsi qu’aux gestionnaires de procédures stockées écrits avec Snowflake Scripting.
Les spans générés par des procédures stockées chaînées ou des UDFs avec des gestionnaires (handlers) JavaScript ou Snowflake Scripting ont le même
trace_id
. La colonne RECORD peut avoir un attributparent_span_id
.Les spans générés par des procédures stockées chaînées ou des UDFs avec des gestionnaires (handlers) JavaScript ou Snowflake Scripting ont une relation parent-enfant entre
span_id
etparent_span_id
. Les procédures stockées avec des gestionnaires (handlers) JavaScript ou Snowflake Scripting peuvent appeler d’autres procédures stockées dans une chaîne de n’importe quelle longueur. Comme les UDFs ne peuvent pas exécuter d’instructions SQL, l’appel à une UDF met fin à la chaîne. Cependant, les informations de trace sont toujours propagées aux spans de l’UDF.Si la procédure stockée Python ou l’UDF avec un gestionnaire (handler) JavaScript ou Snowflake Scripting a été appelée par l’utilisateur directement (la racine), alors l”
trace_id
sera un ID aléatoire et il n’y aura pas d”parent_span_id
. Si le traçage est désactivé pour une procédure stockée et qu’il appelle une autre procédure stockée ou une UDF, lestrace_id
des spans de l’enfant seront aléatoires et n’auront pas deparent_span_id
. En d’autres termes, la trace est redémarrée au niveau de l’enfant.Les fournisseurs et les consommateurs de Native apps voient le même
trace_id
pour les procédures stockées JavaScript ou Snowflake Scripting partagées ou les événements UDF, ce qui permet de les déboguer plus facilement.
Ce changement est apporté pour améliorer le débogage.
Réf : 1683