추적: 프로시저 호출을 통해 상위에서 하위로 전파되는 범위 및 추적 IDs

주의

이 동작 변경 사항은 2024_06 번들에 있습니다.

번들의 현재 상태는 번들 기록 섹션을 참조하십시오.

이벤트 추적 에서 범위 및 추적 IDs는 다음과 같이 동작합니다.

변경 전:

체인 저장 프로시저 또는 UDFs에 의해 생성된 각 범위의 trace_id 는 처리기가 JavaScript 또는 Snowflake Scripting으로 작성된 경우 고유합니다.

Event 테이블의 RECORD 열에는 parent_span_id 필드가 없습니다.

Native Apps 공급자와 컨슈머는 공유 이벤트에 대해 서로 다른 trace_id 값을 봅니다. 공급자는 해시된 버전을 봅니다.

변경 후:

이 변경으로 JavaScript 및 Snowflake Scripting으로 작성된 처리기에 대한 추적 ID 전파 지원이 추가되었습니다. 이 기능은 Python, Java, Scala로 작성된 처리기에 이미 있습니다. 새로운 동작은 처리기가 JavaScript로 작성된 저장 프로시저 및 UDFs뿐만 아니라 Snowflake Scripting으로 작성된 저장 프로시저 처리기에도 적용됩니다.

체인 저장 프로시저 또는 JavaScript나 Snowflake Scripting 처리기가 있는 UDFs에 의해 생성되는 범위는 동일한 trace_id 를 갖습니다. RECORD 열에는 parent_span_id 특성이 있을 수 있습니다.

체인 저장 프로시저 또는 JavaScript나 Snowflake Scripting 처리기가 있는 UDFs에 의해 생성되는 범위는 parent_span_idspan_id 사이에서 상위-하위 관계를 갖습니다. JavaScript 또는 Snowflake Scripting 처리기가 있는 저장 프로시저는 길이에 상관없이 체인에서 다른 저장 프로시저를 호출할 수 있습니다. UDFs는 SQL 문을 실행할 수 없으므로, UDF를 호출하면 체인이 종료됩니다. 그러나 추적 정보는 여전히 UDF의 범위에 전파됩니다.

JavaScript 또는 Snowflake Scripting 처리기가 있는 저장 프로시저 또는 UDF가 사용자(루트)에 의해 직접 호출된 경우, trace_id 는 임의 ID가 지정되고 parent_span_id 는 없습니다. 저장 프로시저에 대한 추적이 비활성화되고 다른 저장 프로시저 또는 UDF를 호출하는 경우 하위 범위의 trace_id 는 임의의 ID가 되며 parent_span_id 가 없습니다. 즉, 하위 항목에서 추적이 다시 시작됩니다.

Native Apps 공급자와 컨슈머는 공유 JavaScript 또는 Snowflake Scripting 저장 프로시저나 UDF 이벤트에 대해 동일한 trace_id 를 확인하므로 더 쉽게 디버깅할 수 있습니다.

이 변경은 디버깅을 개선하기 위해 이루어졌습니다.

참조: 1683