Snowflake-Labs/snowflake-event-table-to-otlp-exporter v0.2.0
Snowflake-Labs/snowflake-event-table-to-otlp-exporter
Captured source
source ↗GH
Source ↗published Aug 11, 2026seen 2wcaptured 2whttp 200method plain
v0.2.0
Repository: Snowflake-Labs/snowflake-event-table-to-otlp-exporter
Tag: v0.2.0
Published: 2026-08-11T13:20:09Z
Prerelease: no
Release notes:
Breaking Changes
- [Snowpark Deployments] The stored procedure now has 7 arguments instead of 6 (
optionsJSON appended). You will need to drop and recreate it (instead of updating in-place).15_snowpark_post-deploy.sqlproc-grant DDL, smoke-testCALL, and taskCALLupdated;99_cleanup.sqlDROP PROCEDUREsignature updated accordingly. - [Developer Tooling] Dev SQL files (
50_dev_telemetry_gen.sql) moved underdev/sql/to separate development/test resources from production deployment scripts.
Known Issues
- A stream delta with many rows sharing the same
RESOURCE_ATTRIBUTESproduces a single OTLP document that can exceed librdkafka's 1 MBmessage.max.byteslimit, causingMSG_SIZE_TOO_LARGEand stalling the pipeline. A fix for this is planned for the next release.
Added
- `options` JSON parameter (7th arg) on
PUSH_STREAM_TO_KAFKA(default'{}') — allows passing secondary/debug config settings without exposing further top-level args. See [Snowflake Deployment](docs/deploy-snowflake.md#procedure-options-json) for more details. Similar config values are exposed as ENVs in the local runner as described in [Local Config](docs/local-configuration.md). - PrivateLink egress support for the Snowpark path via new
ET2OTLP_NET_RULE_TYPEsession variable insql/00_config.sql(defaultHOST_PORT; set toPRIVATE_HOST_PORTfor PrivateLink NLB brokers).10_snowpark_pre-deploy.sqlnow uses it to build the network rule. - `ET2OTLP_KAFKA_SSL_INSECURE` env var (local runner) and
"ssl_insecure": truein the procoptionsJSON — disables TLS certificate verification for dev/test brokers where the broker cert does not match the DNS name (e.g. MSK behind an NLB). Loud WARNING at startup; never enable in production. - `ET2OTLP_KAFKA_DEBUG` env var (local runner) and
"kafka_debug": "..."in the procoptionsJSON — enables librdkafka wire-level debug contexts (broker,security,protocol, etc.), validated against the librdkafka 2.2.0 context list at startup. - Kafka producer
error_cb— routes hard librdkafka failures (TLS/SASL/handshake) into Python logging at ERROR (visible in the account event table for the Snowpark path even without DEBUG). - Additional debug logging throughout
pipeline.py,kafka.py,local_runner.py, andsproc_handler.py(stream gate, transaction boundaries, route stats, Kafka delivery per-topic counts, delivery callbacks). - Startup
log.debugin local runner for full Kafka config (client_id, topic_prefix, ssl_insecure, kafka_debug, SASL details). - Producer-config secret redaction (
sasl.password,sasl.username,ssl.key.password) via a new sharedlogging_configmodule (redact_producer_config). - A [script](dev/scripts/check_snowflake_channel_versions.py) to help manage PyPI vs Anaconda dependency names + versions, wired into
.pre-commit-config.yaml.
Changed
dev/docker-compose.yamlwas renamed todev/compose.yamlto match modern naming standards.local_runner.pystartup logging replaced inlinebasicConfigcall withconfigure_logging()from the newlogging_configmodule.sproc_handler.pystartup log now includes bootstrap server, security protocol, andoptionsvalue; error log now records exception type alongside message.produce_allnow logs per-topic message counts at INFO before flush and logs delivery success at DEBUG via_on_delivery.snowflake-connector-pythonpromoted from dev-only to a direct runtime dependency (pinned>=4.6.0,<=4.6.0) for explicit channel alignment.- Bump dependencies to Snowflake Anaconda channel max:
snowflake-snowpark-python<=1.53.0snowflake-connector-python<=4.6.0- Documentation updates and improvements.
Fixed
- RBAC Fix:
EXECUTE TASK/EXECUTE MANAGED TASKgrants moved fromSVC_RLtoRUNTIME_AR(access-role-first convention); smoke-testCALLnow runs asSVC_RLto validate least-privilege instead ofACCOUNTADMIN. - RBAC isolation when the source is the built-in
SNOWFLAKE.TELEMETRY.EVENTS, the requiredSNOWFLAKE.EVENTS_ADMINapplication role is now granted to a dedicatedET2OTLP_EVENTS_ADMIN_ARaccess role (notREAD_AR). This keeps the elevated privilege (which also carries TRUNCATE/DELETE) out of the general read path. Custom event tables are unaffected.
Full Changelog: https://github.com/Snowflake-Labs/snowflake-event-table-to-otlp-exporter/compare/v0.1.0...v0.2.0