Rastreamento: IDs de span e rastreamento propagados de pai para filho por meio de chamadas de procedimento¶
Atenção
Essa mudança de comportamento está no pacote 2024_06.
Para saber o status atual do pacote, consulte Histórico do pacote.
No rastreamento de evento, os IDs de span e rastreamento se comportam da seguinte forma:
- Antes da mudança:
O
trace_id
de cada um dos spans criados por procedimentos armazenados encadeados ou UDFs é exclusivo quando o manipulador é escrito em JavaScript ou Snowflake Scripting.O campo
parent_span_id
não existe na coluna RECORD da tabela de eventos.Provedores e consumidores de Native Apps veem valores
trace_id
diferentes para eventos compartilhados. O provedor vê a versão com hash.- Após a mudança:
Essa alteração adiciona suporte à propagação do ID de rastreamento para manipuladores escritos em JavaScript e Snowflake Scripting. Isso já existe para manipuladores escritos em Python, Java e Scala. O novo comportamento se aplica a procedimentos armazenados e UDFs cujos manipuladores são escritos em JavaScript, bem como a manipuladores de procedimento armazenado escritos em Snowflake Scripting.
Os spans gerados por procedimentos armazenados encadeados ou UDFs com manipuladores JavaScript ou Snowflake Scripting têm o mesmo
trace_id
. A coluna RECORD pode ter um atributoparent_span_id
.Os intervalos gerados por procedimentos armazenados encadeados ou UDFs com manipuladores JavaScript ou Snowflake Scripting têm um relacionamento pai-filho entre
parent_span_id
espan_id
. Procedimentos armazenados com ou manipuladores JavaScript ou Snowflake Scripting podem chamar outros procedimentos armazenados em uma cadeia de qualquer comprimento. UDFs não podem executar instruções SQL, então a chamada de uma UDF termina a cadeia. No entanto, as informações de rastreamento ainda são propagadas para os spans da UDF.Se o procedimento armazenado ou UDF com um manipulador JavaScript ou Snowflake Scripting foi chamado pelo usuário diretamente (a raiz), então
trace_id
será um ID aleatório e não haveráparent_span_id
. Se o rastreamento estiver desabilitado para um procedimento armazenado e chamar outro procedimento armazenado ou UDF, então otrace_id
dos intervalos do filho será aleatório e não teráparent_span_id
. Em outras palavras, o rastreamento é reiniciado no filho.Os provedores e consumidores de aplicativos nativos veem o mesmo
trace_id
para eventos de procedimento armazenado ou UDF JavaScript ou Snowflake Scripting compartilhados, para que possam ser depurados mais facilmente.
Essa alteração está sendo feita para melhorar a depuração.
Ref.: 1683