You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[telemetry improvement]: emit sql_operation, auth_type, driver_connection_params - ship even if null (#396)
* feat(telemetry): populate sql_operation, auth_type, and driver_connection_params
Aligns the Node.js telemetry payload with the receiver schema (JDBC parity).
Several fields were being collected by the producer/aggregator but dropped
on the floor in the exporter:
- `sql_operation.operation_detail.operation_type` (CREATE_SESSION /
DELETE_SESSION / EXECUTE_STATEMENT / LIST_*) on both connection and
statement events.
- `sql_operation.is_compressed` on statement events when CloudFetch
compression observability is available.
- `sql_operation.execution_result` now resolves to `FORMAT_UNSPECIFIED`
when result-set metadata isn't available (DDL/DML, or SELECTs closed
without fetching), so the `sql_operation` block fires on every
statement-complete event instead of being skipped.
- Top-level `auth_type` from `DriverConfiguration.authType`.
- New `driver_connection_params` block carrying `host_info.host_url`,
`http_path`, `enable_arrow`, `enable_direct_results`, `socket_timeout`,
`enable_metric_view_metadata`, `cloud_fetch_enabled`, `lz4_enabled`,
`retry_max_attempts`, `cloud_fetch_concurrent_downloads`.
Both `auth_type` and `driver_connection_params` are gated behind the
existing authenticated-export guard (same path as `system_configuration`),
since `host_url` and `http_path` are workspace-correlated identifiers
that must not ship on the unauthenticated endpoint.
Co-authored-by: Isaac
* telemetry: restrict driver_connection_params to proto-defined fields
Drop four Node-specific fields that aren't in the receiver's
`DriverConnectionParameters` proto schema:
- cloud_fetch_enabled
- lz4_enabled
- retry_max_attempts
- cloud_fetch_concurrent_downloads
These would be ignored at deserialization on the receiver side anyway.
Remaining block contains only proto-defined fields: `host_info`,
`http_path`, `enable_arrow`, `enable_direct_results`, `socket_timeout`,
`enable_metric_view_metadata`.
Co-authored-by: Isaac
* telemetry: populate mode and use_proxy in driver_connection_params
The four Node-specific fields dropped in the previous commit have no
proto equivalent (CloudFetch enablement, LZ4, retry config, concurrent
downloads aren't tracked at the receiver). But two unrelated proto
fields can be filled from existing Node config:
- `mode = "THRIFT"` — Node.js always uses Thrift transport (no SEA
client). JDBC's `DatabricksClientType` enum is `SEA | THRIFT`.
- `use_proxy` — derived from `ConnectionOptions.proxy`. Stored on
DBSQLClient at `connect()` time alongside the existing host /
httpPath / authType fields, then surfaced through a new
`DriverConfiguration.useProxy` field.
Co-authored-by: Isaac
* telemetry: emit socket_timeout in seconds to match receiver proto
The driver tracks socketTimeout in milliseconds, but the receiver proto
field socket_timeout is defined in seconds. Convert ms -> s at export so a
15-minute timeout reports as 900s instead of 900000s. Adds regression tests
covering the default value and sub-second rounding.
Co-authored-by: Isaac
0 commit comments