databricks-cli/acceptance/telemetry/failure/output.txt

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

54 lines
2.2 KiB
Plaintext
Raw Normal View History

Add synchronous logger for telemetry (#2432) ## Changes This PR adds a synchronous telemetry logger for the CLI with a max timeout of 3 seconds. Due to the 3-second timeout configuration, this is only meant to be used in long-running commands. This is a short-term solution. Eventually, we'd like to transition to a daemon process to upload the telemetry logs to amortise the costs of configuring authentication and maintaining a warm pool of HTTP connections, as well as a better UX for the end user. Note that users can set the `DATABRICKS_CLI_DISABLE_TELEMETRY` environment variable to disable telemetry collection. ## Why To collect telemetry, which was previously inaccessible to us, and answer questions like which templates customers like to use and which DABs features would be safe to deprecate. ## Tests Unit and acceptance tests. Also manually verified that the telemetry upload works: ``` (artifact-playground) ➜ cli git:(sync-logger) cli selftest send-telemetry --debug 15:58:20 Info: start pid=40386 version=0.0.0-dev+a2825ca89a23 args="cli, selftest, send-telemetry, --debug" 15:58:20 Debug: Loading DEFAULT profile from /Users/shreyas.goenka/.databrickscfg pid=40386 sdk=true 15:58:20 Info: completed execution pid=40386 exit_code=0 15:58:21 Debug: POST /telemetry-ext > { > "items": null, > "protoLogs": [ > "{\"frontend_log_event_id\":\"82d29b3a-d5ff-48f3-8a21-dae6e08d2999\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)", > "{\"frontend_log_event_id\":\"d6be8220-7db8-45d9-97d6-4c09c25e2664\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)" > ], > "uploadTime": 1741186700967 > } < HTTP/2.0 200 OK < { < "errors": null, < "numProtoSuccess": 2, < "numSuccess": 0 < } pid=40386 sdk=true ```
2025-03-12 13:05:10 +00:00
>>> [CLI] selftest send-telemetry --debug
HH:MM:SS Info: start pid=PID version=[DEV_VERSION] args="[CLI], selftest, send-telemetry, --debug"
HH:MM:SS Info: completed execution pid=PID exit_code=0
HH:MM:SS Debug: POST /telemetry-ext
> {
> "items": null,
> "protoLogs": [
> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (N more bytes)",
> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (N more bytes)"
> ],
> "uploadTime": "UNIX_TIME_MILLIS"
> }
< HTTP/1.1 501 Not Implemented
< {
< "error_code": "ERROR_CODE",
< "message": "Endpoint not implemented."
< } pid=PID sdk=true
HH:MM:SS Debug: non-retriable error: Endpoint not implemented. pid=PID sdk=true
HH:MM:SS Info: Attempt 1 failed due to a server side error. Retrying status code: 501 pid=PID
HH:MM:SS Debug: POST /telemetry-ext
> {
> "items": null,
> "protoLogs": [
> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (N more bytes)",
> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (N more bytes)"
> ],
> "uploadTime": "UNIX_TIME_MILLIS"
> }
< HTTP/1.1 501 Not Implemented
< {
< "error_code": "ERROR_CODE",
< "message": "Endpoint not implemented."
< } pid=PID sdk=true
HH:MM:SS Debug: non-retriable error: Endpoint not implemented. pid=PID sdk=true
HH:MM:SS Info: Attempt 2 failed due to a server side error. Retrying status code: 501 pid=PID
HH:MM:SS Debug: POST /telemetry-ext
> {
> "items": null,
> "protoLogs": [
> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (N more bytes)",
> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (N more bytes)"
> ],
> "uploadTime": "UNIX_TIME_MILLIS"
> }
< HTTP/1.1 501 Not Implemented
< {
< "error_code": "ERROR_CODE",
< "message": "Endpoint not implemented."
< } pid=PID sdk=true
HH:MM:SS Debug: non-retriable error: Endpoint not implemented. pid=PID sdk=true
HH:MM:SS Info: Attempt 3 failed due to a server side error. Retrying status code: 501 pid=PID
HH:MM:SS Info: telemetry upload failed: failed to upload telemetry logs after three attempts pid=PID