Skip to content

ssh: surface server errors from a running server on failed connections - #5555

Merged
anton-107 merged 4 commits into
mainfrom
anton-107/ssh-logs-endpoint
Jun 15, 2026
Merged

ssh: surface server errors from a running server on failed connections#5555
anton-107 merged 4 commits into
mainfrom
anton-107/ssh-logs-endpoint

Conversation

@anton-107

Copy link
Copy Markdown
Contributor

Changes

  • The SSH server keeps its recent warning/error log records in a bounded in-memory buffer (16KB, oldest evicted) and serves them at /logs next to the existing /metadata endpoint, behind the same driver-proxy auth. Implemented as a tee slog.Handler, so all records still flow to stdout (the run-page logs) unchanged.
  • When the spawned ssh client exits with a connection-level failure (code 255), ssh connect fetches /logs and prints the server's actual errors (e.g. failed to start SSHD process: ... /usr/sbin/sshd: no such file or directory). The generic "install openssh-server" hint remains as the fallback when no logs are available (e.g. older server versions without /logs); the fetch is best-effort.
  • Extracted newDriverProxyRequest from getServerMetadata, shared by the new logs fetch.

Why

When a connection attempt fails against a healthy-looking bootstrap job (FAILURE_MODES.md Mode 1: the container lacks sshd, the server logs the error per connection and keeps running), the real error was unreachable from the client: the Jobs API exposes no stdout logs for a running notebook task (GetRunOutput requires a terminal state and RunOutput.Logs is unsupported for notebook tasks). The server's own HTTP service behind the driver proxy is the only channel available while the job is alive. Complements #5552, which covers the terminated-job case.

Tests

  • New unit tests for the log buffer and tee handler (eviction, warn+ filtering, per-connection session attrs, HTTP handler); ./task test-exp-ssh and full lint pass.
  • Manually verified against dogfood with a planted failing sshd path: the bootstrap job stays RUNNING, and after the connection drops the terminal prints The SSH connection closed unexpectedly. Recent SSH server errors: followed by the server's failed to start SSHD process: fork/exec ...: no such file or directory log line. A regular ssh connect (no plant) still connects end-to-end.

This pull request and its description were written by Isaac.

The ssh server keeps its recent warning/error log lines in a bounded
in-memory buffer and serves them at /logs next to /metadata. When the
spawned ssh client exits with a connection-level failure (code 255),
"ssh connect" fetches that endpoint and prints the server's actual
errors instead of only a generic hint. The Jobs API exposes no stdout
logs for a running notebook task, so this is the only way to read the
server's errors while the bootstrap job is still alive.
Co-authored-by: Isaac
@anton-107
anton-107force-pushed the anton-107/ssh-logs-endpoint branch from ddc7889 to 0a76b0cCompareJune 11, 2026 14:27
@anton-107
anton-107 requested a review from rclareyJune 11, 2026 14:30
@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: d56d64f

Run: 27554810981

Env🟨​KNOWN💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🟨​aws linux7152649786:36
🟨​aws windows71526697610:02
💚​aws-ucws linux7153608929:08
💚​aws-ucws windows7153628908:46
💚​azure linux1172679766:27
💚​azure windows1172699746:17
💚​azure-ucws linux1173658887:53
💚​azure-ucws windows1173678867:33
💚​gcp linux1172639796:30
💚​gcp windows1172659776:28
22 interesting tests: 15 SKIP, 7 KNOWN
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept🟨​K🟨​K💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
🙈​TestAccept/bundle/invariant/no_drift🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions🟨​K🟨​K💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions🟨​K🟨​K💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct🟨​K🟨​K💚​R💚​R
🟨​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🟨​K🟨​K💚​R💚​R
🙈​TestAccept/bundle/resources/postgres_branches/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/recreate🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/replace_existing🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/update_protected🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_branches/without_branch_id🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_endpoints/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_endpoints/recreate🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/postgres_projects/update_display_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/synced_database_tables/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_indexes/basic🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/bundle/resources/vector_search_indexes/grants/select🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🙈​TestAccept/ssh/connection🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
Top 20 slowest tests (at least 2 minutes):
durationenvtestname
4:34gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:20gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:08gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:01gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:59aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:20aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:16azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:09azure-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:02azure-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:02azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:58aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:58azure windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:57aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:50aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:49azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:45aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:38azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:34azure windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:31aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:30aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct

@anton-107
anton-107 added this pull request to the merge queueJun 15, 2026
Merged via the queue into main with commit 0ded6efJun 15, 2026
25 checks passed
@anton-107
anton-107 deleted the anton-107/ssh-logs-endpoint branch June 15, 2026 15:52
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 0ded6ef

Run: 27558658861

Env💥​PANIC❌​FAIL🟨​KNOWN🤯​MISS🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
🟨​aws linux71554591372:59
🟨​aws windows71551192374:47
💥​aws-ucws linux14215102739737120:00
💥​aws-ucws windows1662312820752120:04
❌​azure linux21817544909244:22
❌​azure windows19617498917120:03
💥​azure-ucws linux121242812638745120:00
💥​azure-ucws windows117183812652760120:04
❌​gcp linux4117532917272:01
❌​gcp windows41417494927287:07
524 interesting tests: 468 MISS, 38 FAIL, 7 KNOWN, 4 PANIC, 3 flaky, 2 SKIP, 2 RECOVERED
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept🟨​K🟨​K🤯​M🤯​M🟨​K🤯​M🤯​M🤯​M🟨​K🟨​K
🤯​TestAccept/bundle/apps/job_permissions🙈​s🙈​s🤯​M✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=direct🤯​M✅​p🤯​M🤯​M
🤯​TestAccept/bundle/apps/job_permissions/DATABRICKS_BUNDLE_ENGINE=terraform🤯​M✅​p🤯​M🤯​M
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist🙈​s🙈​s🤯​M✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DATABRICKS_BUNDLE_ENGINE=direct🤯​M✅​p🤯​M🤯​M
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DATABRICKS_BUNDLE_ENGINE=terraform🤯​M✅​p🤯​M🤯​M
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed🙈​s🙈​s🤯​M✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DATABRICKS_BUNDLE_ENGINE=direct🤯​M✅​p🤯​M🤯​M
🤯​TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DATABRICKS_BUNDLE_ENGINE=terraform🤯​M✅​p🤯​M🤯​M
🤯​TestAccept/bundle/config-remote-sync/cli_defaults✅​p🙈​s🤯​M🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/cli_defaults/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/config_edits✅​p🙈​s🤯​M🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/config_edits/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/config_edits/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/dashboard_etag✅​p🙈​s🤯​M🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/dashboard_etag/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/dashboard_etag/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/flushed_cache✅​p🙈​s🤯​M🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/flushed_cache/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/flushed_cache/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/formatting_preserved✅​p🙈​s🤯​M🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/formatting_preserved/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M✅​p
💥​TestAccept/bundle/config-remote-sync/formatting_preserved/DATABRICKS_BUNDLE_ENGINE=terraform✅​p💥​P✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/job_fields🙈​s🙈​s✅​p🙈​s🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s
🤯​TestAccept/bundle/config-remote-sync/job_fields/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M
🤯​TestAccept/bundle/config-remote-sync/job_fields/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M
🤯​TestAccept/bundle/config-remote-sync/job_multiple_tasks✅​p🙈​s✅​p🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/job_multiple_tasks/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/job_multiple_tasks/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/job_params_variables🙈​s🙈​s✅​p🙈​s🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s
🤯​TestAccept/bundle/config-remote-sync/job_params_variables/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M
🤯​TestAccept/bundle/config-remote-sync/job_params_variables/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M
🤯​TestAccept/bundle/config-remote-sync/job_pipeline_task✅​p🙈​s✅​p🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/job_pipeline_task/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/multiple_files✅​p🙈​s✅​p🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/multiple_files/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/multiple_files/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/multiple_resources🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s
🤯​TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=direct🤯​M🤯​M
🤯​TestAccept/bundle/config-remote-sync/multiple_resources/DATABRICKS_BUNDLE_ENGINE=terraform🤯​M🤯​M
🤯​TestAccept/bundle/config-remote-sync/output_json✅​p🙈​s✅​p🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/output_json/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/output_json/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/output_no_changes✅​p🙈​s✅​p🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/output_no_changes/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/output_no_changes/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/pipeline_fields🙈​s🙈​s✅​p🙈​s🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s
🤯​TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M
🤯​TestAccept/bundle/config-remote-sync/pipeline_fields/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M
🤯​TestAccept/bundle/config-remote-sync/resolve_variables🙈​s🙈​s✅​p🙈​s🙈​s🙈​s🤯​M🙈​s🙈​s🙈​s
🤯​TestAccept/bundle/config-remote-sync/resolve_variables/DATABRICKS_BUNDLE_ENGINE=direct✅​p🤯​M
🤯​TestAccept/bundle/config-remote-sync/resolve_variables/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🤯​M
🤯​TestAccept/bundle/config-remote-sync/target_override✅​p🙈​s✅​p🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/target_override/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/target_override/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/task_rename_revert✅​p🙈​s✅​p🙈​s✅​p🙈​s🤯​M🙈​s✅​p🙈​s
🤯​TestAccept/bundle/config-remote-sync/task_rename_revert/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/config-remote-sync/task_rename_revert/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p🤯​M✅​p
🤯​TestAccept/bundle/deploy/empty-bundle✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=true/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/empty-bundle/DATABRICKS_BUNDLE_ENABLE_EXPERIMENTAL_YAML_SYNC=true/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/files/no-snapshot-sync✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/mlops-stacks✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/mlops-stacks/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/mlops-stacks/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/snapshot-comparison✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/snapshot-comparison/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/spark-jar-task✅​p✅​p🤯​M✅​p✅​p🤯​M🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🤯​M✅​p✅​p🤯​M🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/alert🙈​s🙈​s🙈​s🙈​s✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/alert/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/alert/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/catalog🙈​s🙈​s✅​p✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/deployment/bind/catalog/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/cluster✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/cluster/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/cluster/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/dashboard✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/dashboard/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/dashboard/recreation✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/dashboard/recreation/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/experiment✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/experiment/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/experiment/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/job/generate-and-bind✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/job/generate-and-bind/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/job/generate-and-bind/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/job/job-abort-bind✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/job/job-abort-bind/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/job/job-abort-bind/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/job/job-spark-python-task✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/job/job-spark-python-task/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/job/job-spark-python-task/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/model-serving-endpoint✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/model-serving-endpoint/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/model-serving-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/pipelines/recreate✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/pipelines/recreate/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/bind/registered-model🙈​s🙈​s✅​p✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/deployment/bind/registered-model/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/registered-model/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/schema🙈​s🙈​s✅​p✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/deployment/bind/schema/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/schema/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/secret-scope🙈​s🙈​s✅​p✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/deployment/bind/secret-scope/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/secret-scope/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/vector_search_endpoint🙈​s🙈​s✅​p✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/deployment/bind/vector_search_endpoint/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/vector_search_index🙈​s🙈​s✅​p✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/deployment/bind/vector_search_index/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/volume🙈​s🙈​s✅​p✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/deployment/bind/volume/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/bind/volume/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/unbind/grants🙈​s🙈​s✅​p✅​p🙈​s🙈​s🤯​M🤯​M🙈​s🙈​s
🤯​TestAccept/bundle/deployment/unbind/grants/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/unbind/grants/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🤯​M🤯​M
🤯​TestAccept/bundle/deployment/unbind/permissions✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/unbind/permissions/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/deployment/unbind/permissions/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/destroy/jobs-and-pipeline✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/generate/alert✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/generate/alert/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/generate/alert/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/generate/auto-bind✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/generate/auto-bind/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
🤯​TestAccept/bundle/generate/pipeline_and_deploy✅​p✅​p✅​p✅​p✅​p✅​p🤯​M🤯​M✅​p✅​p
Top 50 slowest tests (at least 2 minutes):
durationenvtestname
29:17azure-ucws windowsTestAccept/bundle/resources/vector_search_indexes/grants/select/DATABRICKS_BUNDLE_ENGINE=direct
28:31aws-ucws windowsTestAccept/bundle/invariant/continue_293/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl
26:40azure-ucws linuxTestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension/DATABRICKS_BUNDLE_ENGINE=direct
26:15aws-ucws linuxTestAccept/bundle/resources/vector_search_indexes/basic/DATABRICKS_BUNDLE_ENGINE=direct
26:12aws-ucws linuxTestAccept/bundle/invariant/continue_293/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl
26:03aws-ucws windowsTestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl
24:46azure-ucws windowsTestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension/DATABRICKS_BUNDLE_ENGINE=direct
24:42azure-ucws linuxTestAccept/bundle/resources/vector_search_indexes/grants/select/DATABRICKS_BUNDLE_ENGINE=direct
24:37azure-ucws windowsTestAccept/bundle/resources/vector_search_indexes/basic/DATABRICKS_BUNDLE_ENGINE=direct
24:29aws-ucws linuxTestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=vector_search_index.yml.tmpl
23:41aws-ucws linuxTestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension/DATABRICKS_BUNDLE_ENGINE=direct
22:44aws-ucws linuxTestAccept/bundle/resources/vector_search_indexes/grants/select/DATABRICKS_BUNDLE_ENGINE=direct
22:25azure-ucws linuxTestAccept/bundle/resources/vector_search_indexes/basic/DATABRICKS_BUNDLE_ENGINE=direct
17:48azure linuxTestAccept/bundle/resources/sql_warehouses/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
16:47aws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
14:59aws-ucws windowsTestAccept/bundle/resources/sql_warehouses/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
14:35azure windowsTestAccept/bundle/integration_whl/custom_params/DATABRICKS_BUNDLE_ENGINE=terraform
14:25aws-ucws linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
14:20azure windowsTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=terraform
13:43aws linuxTestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
12:48azure windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
12:27gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
12:11gcp windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
12:08gcp windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
11:38gcp linuxTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
11:01gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
10:52aws windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:40gcp linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:29aws-ucws windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:23azure windowsTestAccept/bundle/resources/clusters/deploy/simple/DATABRICKS_BUNDLE_ENGINE=direct
10:15aws-ucws windowsTestAccept/bundle/resources/sql_warehouses/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:58gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
9:43aws windowsTestAccept/bundle/resources/sql_warehouses/lifecycle-started-toggle/DATABRICKS_BUNDLE_ENGINE=direct
9:29aws-ucws windowsTestAccept/bundle/deploy/spark-jar-task/DATABRICKS_BUNDLE_ENGINE=terraform
9:27aws linuxTestAccept/bundle/resources/clusters/run/spark_python_task/DATABRICKS_BUNDLE_ENGINE=terraform
9:26aws linuxTestAccept/bundle/resources/clusters/run/spark_python_task/DATABRICKS_BUNDLE_ENGINE=direct
9:24gcp windowsTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform
9:22aws windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:16aws-ucws windowsTestAccept/bundle/resources/apps/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
9:08azure windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
9:06azure windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=direct
8:50gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:48gcp windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=direct
8:36gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:30aws-ucws windowsTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
8:28gcp linuxTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=direct
8:28gcp windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
8:26aws-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:24azure linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
8:21gcp linuxTestAccept/bundle/resources/clusters/lifecycle-started/DATABRICKS_BUNDLE_ENGINE=direct
(384 table rows omitted to keep the report under 60000 bytes)

deco-sdk-taggingBot added a commit that referenced this pull request Jun 17, 2026
## Release v1.4.0
### CLI
* Improved error messages for `ssh connect`: when an SSH connection attempt fails, the client now fetches and prints the server's recent error logs ([#5555](#5555)).
* Increase the SSH server startup timeout from 10 to 45 minutes when a GPU accelerator is requested via `databricks ssh connect --accelerator` ([#5569](#5569)).
* Fix authentication falling back to the default profile in `.databrickscfg` when a host is already configured via the environment (e.g. `DATABRICKS_HOST` with `DATABRICKS_TOKEN`) ([#5616](#5616)).
* ssh: fix opening remote environment in Cursor, which previously hung on default-extension install and never opened the editor ([#5619](#5619)).
* Improve the error shown when `databricks labs install` cannot find a project's `labs.yml`: the message now explains that either the requested version does not exist or the project is not installable with the CLI, and links to the repository ([#5559](#5559)).
### Bundles
* Remove API enum values and types that are still in development from the `databricks-bundles` Python package; these were never accepted by the backend ([#5484](#5484)).
* direct: Fix resolving a resource reference that is used more than once within the same field ([#5558](#5558)).
* Bundle variable references now accept Unicode letters in path segments (e.g. `${var.变量}`). ([#5532](#5532))
* Ignore remote changes for vector search direct_access_index_spec.schema_json to prevent drift when the backend normalizes the schema ([#5481](#5481)).
* Remove hidden, never-functional `--existing-dashboard-id`, `--existing-dashboard-path`, `--existing-alert-id`, and `--existing-genie-space-id` alias flags from `bundle generate`; use the documented `--existing-id` / `--existing-path` flags instead ([#5591](#5591)).
* engine/direct: Fix WAL corruption after two consecutive failed deploys ([#5606](#5606)).
* engine/direct: Don't open the deployment state WAL when a deploy's plan fails ([#5607](#5607)).
* Ignore unity catalog managed schema property defaults to avoid unnecessary drift ([#5195](#5195)).
* Add `postgres_roles` and `postgres_databases` resources to create Postgres roles and databases on a Lakebase branch ([#5467](#5467), [#5627](#5627)).
* direct: Stop spurious recreate/rename on redeploy when the backend normalizes a resource's name-based ID (e.g. Unity Catalog lowercasing a schema or volume name) ([#5599](#5599)).
* Fix the generated pipeline README to suggest `databricks bundle run <pipeline> --refresh <table>` for running a single transformation; the previously documented `--select` flag is not supported by `bundle run` ([#5252](#5252)).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@anton-107@eng-dev-ecosystem-bot@rclarey