Skip to content

Suppress /Workspace prefix diff for experiment names in direct deployment - #4627

Merged
shreyas-goenka merged 2 commits into
mainfrom
fix-workspace-prefix
Mar 13, 2026
Merged

Suppress /Workspace prefix diff for experiment names in direct deployment#4627
shreyas-goenka merged 2 commits into
mainfrom
fix-workspace-prefix

Conversation

@shreyas-goenka

@shreyas-goenkashreyas-goenka commented Mar 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Why?

The backend always strips the /Workspace prefix from experiment names, so remote returns /Users/... while the config has /Workspace/Users/.... Instead of mutating the config value (stripping the prefix in ApplyPresets), we suppress the diff during change detection via OverrideChangeDesc — the same approach the Terraform provider uses with its experimentNameSuppressDiff function.

Without this fix you get a persistent drift:

 "name": {
"action": "update",
"old": "/Workspace/Users/shreyas.goenka@databricks.com/test-experiment-bundle",
"new": "/Workspace/Users/shreyas.goenka@databricks.com/test-experiment-bundle",
"remote": "/Users/shreyas.goenka@databricks.com/test-experiment-bundle"
},

Test plan

  • Acceptance test bundle/deployment/bind/experiment verifies plan shows 0 changes with /Workspace/Users/... path
  • Same test verifies plan shows 0 changes with /Users/... path (without /Workspace prefix)
  • bundle/resources/experiments/basic acceptance test still passes

🤖 Generated with Claude Code

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Mar 2, 2026

Copy link
Copy Markdown
Collaborator

Commit: ccb2482

Run: 23057269979

Env❌​FAIL🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
💚​aws linux8726878711:24
💚​aws windows872707857:00
🔄​aws-ucws linux68735970229:07
🔄​aws-ucws windows58736270018:54
💚​azure linux2927178510:25
💚​azure windows292737839:02
❌​azure-ucws linux252936369826:54
❌​azure-ucws windows321936869622:30
💚​gcp linux2926778810:51
💚​gcp windows292697868:42
31 interesting tests: 12 flaky, 7 SKIP, 7 RECOVERED, 5 FAIL
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🔄​TestAccept💚​R💚​R💚​R💚​R💚​R💚​R💚​R🔄​f💚​R💚​R
🔄​TestAccept/bundle/resources/apps/inline_config✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p
🔄​TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p✅​p✅​p✅​p✅​p🔄​f✅​p✅​p✅​p
🔄​TestAccept/bundle/resources/model_serving_endpoints/basic🙈​s🙈​s✅​p🔄​f🙈​s🙈​s🔄​f✅​p🙈​s🙈​s
🔄​TestAccept/bundle/resources/model_serving_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=direct✅​p🔄​f✅​p✅​p
🔄​TestAccept/bundle/resources/model_serving_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🔄​f✅​p
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
🔄​TestAccept/bundle/resources/permissions/dashboards/create/DATABRICKS_BUNDLE_ENGINE=direct✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/resources/permissions/dashboards/create/DATABRICKS_BUNDLE_ENGINE=terraform✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/resources/permissions/jobs/delete_one/cloud🙈​s🙈​s🔄​f✅​p🙈​s🙈​s✅​p✅​p🙈​s🙈​s
🔄​TestAccept/bundle/resources/permissions/jobs/delete_one/cloud/DATABRICKS_BUNDLE_ENGINE=direct🔄​f✅​p✅​p✅​p
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions💚​R💚​R💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions💚​R💚​R💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​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/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/recreate🙈​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/ssh/connect-serverless-gpu🙈​s🙈​s🔄​f🔄​f🙈​s🙈​s✅​p🔄​f🙈​s🙈​s
💚​TestAccept/ssh/connection💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
🔄​TestSyncFullFileSync✅​p✅​p✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p
❌​TestFetchRepositoryInfoAPI_FromRepo✅​p✅​p🔄​f🔄​f✅​p✅​p🔄​f❌​F✅​p✅​p
❌​TestFetchRepositoryInfoAPI_FromRepo//Workspace/Repos/a71e69be-fe57-484b-ae8b-bb6ce382668a/integration-test-03005b624aaf41be85439558319a6d59❌​F
❌​TestFetchRepositoryInfoAPI_FromRepo//Workspace/Repos/a71e69be-fe57-484b-ae8b-bb6ce382668a/integration-test-03005b624aaf41be85439558319a6d59/knowledge_base/dashboard_nyc_taxi❌​F
❌​TestFetchRepositoryInfoAPI_FromRepo//Workspace/Repos/a71e69be-fe57-484b-ae8b-bb6ce382668a/integration-test-cb249c9d095e433f8524fc33165241c2❌​F
❌​TestFetchRepositoryInfoAPI_FromRepo//Workspace/Repos/a71e69be-fe57-484b-ae8b-bb6ce382668a/integration-test-cb249c9d095e433f8524fc33165241c2/knowledge_base/dashboard_nyc_taxi❌​F
Top 50 slowest tests (at least 2 minutes):
durationenvtestname
6:25azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
5:46aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
5:24aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:59aws-ucws linuxTestAccept/bundle/resources/jobs/no-git-provider/DATABRICKS_BUNDLE_ENGINE=terraform
4:59aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:52aws-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:49azure-ucws windowsTestAccept/bundle/resources/volumes/recreate/DATABRICKS_BUNDLE_ENGINE=terraform
4:46azure-ucws linuxTestAccept/bundle/resources/volumes/recreate/DATABRICKS_BUNDLE_ENGINE=direct
4:35azure-ucws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:33azure-ucws linuxTestAccept/bundle/deployment/bind/job/generate-and-bind/DATABRICKS_BUNDLE_ENGINE=terraform
4:32aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:31azure-ucws windowsTestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=terraform
4:22azure-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:19azure-ucws linuxTestAccept/bundle/resources/volumes/recreate/DATABRICKS_BUNDLE_ENGINE=terraform
4:15aws-ucws linuxTestAccept/bundle/resources/permissions/jobs/delete_one/cloud/DATABRICKS_BUNDLE_ENGINE=terraform
4:14azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:13aws-ucws windowsTestAccept/bundle/generate/auto-bind
4:09aws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:08aws-ucws linuxTestAccept/ssh/connect-serverless-gpu
4:02aws windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:59aws-ucws linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:48gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:41azure-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=terraform
3:38gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:27gcp windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:26azure linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:26azure-ucws windowsTestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=direct
3:24aws-ucws linuxTestAccept/bundle/resources/volumes/recreate/DATABRICKS_BUNDLE_ENGINE=terraform
3:20gcp linuxTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:20azure-ucws linuxTestAccept/bundle/resources/jobs/check-metadata/DATABRICKS_BUNDLE_ENGINE=direct
3:13azure-ucws windowsTestAccept/bundle/deployment/bind/job/generate-and-bind/DATABRICKS_BUNDLE_ENGINE=terraform
3:11aws-ucws linuxTestAccept/bundle/resources/volumes/recreate/DATABRICKS_BUNDLE_ENGINE=direct
3:08azure-ucws linuxTestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=direct
3:03aws-ucws linuxTestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=terraform
2:58azure-ucws linuxTestAccept/bundle/resources/jobs/shared-root-path/DATABRICKS_BUNDLE_ENGINE=direct
2:54aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=direct
2:52aws-ucws linuxTestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=terraform
2:47azure-ucws linuxTestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_BUNDLE_ENGINE=terraform
2:45azure-ucws windowsTestAccept/bundle/resources/permissions/jobs/delete_one/cloud/DATABRICKS_BUNDLE_ENGINE=terraform
2:44azure-ucws windowsTestAccept/bundle/generate/auto-bind
2:42azure-ucws linuxTestAccept/bundle/deploy/mlops-stacks
2:40azure windowsTestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:40azure-ucws linuxTestAccept/bundle/resources/jobs/no-git-provider/DATABRICKS_BUNDLE_ENGINE=direct
2:39aws-ucws linuxTestAccept/bundle/resources/jobs/shared-root-path/DATABRICKS_BUNDLE_ENGINE=direct
2:32aws-ucws linuxTestAccept/bundle/resources/dashboards/generate_inplace/DATABRICKS_BUNDLE_ENGINE=terraform
2:27azure-ucws linuxTestAccept/bundle/resources/permissions/jobs/delete_one/cloud/DATABRICKS_BUNDLE_ENGINE=terraform
2:25aws-ucws linuxTestAccept/bundle/resources/alerts/with_file/DATABRICKS_BUNDLE_ENGINE=direct
2:25azure-ucws windowsTestAccept/bundle/deployment/bind/job/generate-and-bind/DATABRICKS_BUNDLE_ENGINE=direct
2:25aws-ucws windowsTestAccept/bundle/resources/jobs/shared-root-path/DATABRICKS_BUNDLE_ENGINE=terraform
2:24azure-ucws linuxTestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_BUNDLE_ENGINE=terraform

@andrewnesterandrewnester left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not entirely sure that TF behaviour is correct; we should have all workspace paths prefixed with /Workspace. Can this be fixed in the TF provider instead?

@shreyas-goenka

Copy link
Copy Markdown
ContributorAuthor

The backend always strips the /Workspace prefix so this is necessary to avoid a persistent drift. Otherwise you end up with this permanent diff:

 "name": {
"action": "update",
"old": "/Workspace/Users/shreyas.goenka@databricks.com/test-experiment-bundle",
"new": "/Workspace/Users/shreyas.goenka@databricks.com/test-experiment-bundle",
"remote": "/Users/shreyas.goenka@databricks.com/test-experiment-bundle"
},

@denik

denik commented Mar 3, 2026

Copy link
Copy Markdown
Contributor

Another option, less drastic and future proof (in case backend stops stripping) is to implement OverrideChangeDesc that compares strings with stripped prefix.

The direct deployment engine was sending experiment names with the
/Workspace prefix to the API, while the Terraform provider strips it.
This caused divergent behavior between the two engines.
Fixes#4285
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@shreyas-goenkashreyas-goenka changed the title Strip /Workspace prefix from experiment names for direct deploymentSuppress /Workspace prefix diff for experiment names in direct deploymentMar 13, 2026

trace $CLI experiments get-experiment ${EXPERIMENT_ID} | jq '{name: .experiment.name, lifecycle_stage: .experiment.lifecycle_stage}' > out.get.$DATABRICKS_BUNDLE_ENGINE.json
# Plan should show no changes with /Workspace/Users/... path in config
trace $CLI bundle plan

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we record change from json change?

Comment threadbundle/direct/dresources/experiment.go
Comment threadbundle/direct/dresources/experiment.go
Use OverrideChangeDesc to normalize the /Workspace prefix on experiment
names instead of stripping it in apply_presets, matching the Terraform
provider's experimentNameSuppressDiff behavior. Add acceptance test
coverage for both /Workspace/Users/... and /Users/... path forms.
Co-authored-by: Isaac
@shreyas-goenka
shreyas-goenka merged commit 96d017a into mainMar 13, 2026
22 of 23 checks passed
@shreyas-goenka
shreyas-goenka deleted the fix-workspace-prefix branch March 13, 2026 17:23
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Commit: 96d017a

Run: 23062569375

Env❌​FAIL🟨​KNOWN🔄​flaky💚​RECOVERED🙈​SKIP✅​pass🙈​skipTime
❌​aws linux1127749474052:36
❌​aws windows1127746674844:16
❌​aws-ucws linux1211231756588104:47
❌​aws-ucws windows1211231719599102:54
❌​azure linux111949973849:08
❌​azure windows111947174646:35
🔄​azure-ucws linux24874659393:18
💚​azure-ucws windows5871060471:15
❌​gcp linux111948274654:50
❌​gcp windows111945475450:27
43 interesting tests: 23 RECOVERED, 13 FAIL, 5 flaky, 1 KNOWN, 1 SKIP
Test Nameaws linuxaws windowsaws-ucws linuxaws-ucws windowsazure linuxazure windowsazure-ucws linuxazure-ucws windowsgcp linuxgcp windows
🟨​TestAccept🟨​K🟨​K🟨​K🟨​K🟨​K🟨​K🔄​f💚​R🟨​K🟨​K
❌​TestAccept/bundle/apps/job_permissions❌​F❌​F🔄​f✅​p❌​F❌​F✅​p✅​p❌​F❌​F
🔄​TestAccept/bundle/resources/dashboards/change-parent-path✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/resources/dashboards/change-parent-path/DATABRICKS_BUNDLE_ENGINE=terraform✅​p🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🙈​TestAccept/bundle/resources/permissions🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions💚​R💚​R💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions💚​R💚​R💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/basic🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_branches/basic/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/recreate🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_branches/recreate/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/recreate/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/update_protected🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_branches/update_protected/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/update_protected/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/without_branch_id🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
💚​TestAccept/bundle/resources/postgres_branches/without_branch_id/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R
💚​TestAccept/bundle/resources/postgres_branches/without_branch_id/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R
❌​TestAccept/bundle/resources/postgres_endpoints/basic🙈​s🙈​s❌​F❌​F🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s
❌​TestAccept/bundle/resources/postgres_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F
❌​TestAccept/bundle/resources/postgres_endpoints/basic/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F
💚​TestAccept/bundle/resources/postgres_endpoints/recreate🙈​S🙈​S💚​R💚​R🙈​S🙈​S🙈​S🙈​S🙈​S🙈​S
❌​TestAccept/bundle/resources/postgres_projects/basic🙈​s🙈​s❌​F❌​F🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s
❌​TestAccept/bundle/resources/postgres_projects/basic/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F
❌​TestAccept/bundle/resources/postgres_projects/basic/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F
❌​TestAccept/bundle/resources/postgres_projects/recreate🙈​s🙈​s❌​F❌​F🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s
❌​TestAccept/bundle/resources/postgres_projects/recreate/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F
❌​TestAccept/bundle/resources/postgres_projects/recreate/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F
❌​TestAccept/bundle/resources/postgres_projects/update_display_name🙈​s🙈​s❌​F❌​F🙈​s🙈​s🙈​s🙈​s🙈​s🙈​s
❌​TestAccept/bundle/resources/postgres_projects/update_display_name/DATABRICKS_BUNDLE_ENGINE=direct❌​F❌​F
❌​TestAccept/bundle/resources/postgres_projects/update_display_name/DATABRICKS_BUNDLE_ENGINE=terraform❌​F❌​F
💚​TestAccept/bundle/resources/synced_database_tables/basic🙈​S🙈​S💚​R💚​R🙈​S🙈​S💚​R💚​R🙈​S🙈​S
💚​TestAccept/bundle/resources/synced_database_tables/basic/DATABRICKS_BUNDLE_ENGINE=direct💚​R💚​R💚​R💚​R
💚​TestAccept/bundle/resources/synced_database_tables/basic/DATABRICKS_BUNDLE_ENGINE=terraform💚​R💚​R💚​R💚​R
🔄​TestAccept/bundle/run/app-with-job🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform🔄​f✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p✅​p
🔄​TestAccept/ssh/connect-serverless-gpu🙈​s🙈​s✅​p🔄​f🙈​s🙈​s🔄​f✅​p🙈​s🙈​s
💚​TestAccept/ssh/connection💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R💚​R
Top 50 slowest tests (at least 2 minutes):
durationenvtestname
14:43gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
14:19azure-ucws linuxTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
13:42aws-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
13:24aws-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
12:37azure linuxTestAccept/bundle/resources/clusters/deploy/update-after-create/DATABRICKS_BUNDLE_ENGINE=direct
11:41aws-ucws windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
11:06azure linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:27gcp windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
10:13gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
9:30azure-ucws linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
8:51gcp linuxTestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS
8:45gcp windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:41gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
8:41gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
8:34aws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=SINGLE_USER
8:30gcp windowsTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
8:23aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
8:08aws-ucws windowsTestAccept/bundle/invariant/migrate/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=database_instance.yml.tmpl
8:07gcp linuxTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=terraform
8:02gcp windowsTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=terraform
8:01gcp windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=SINGLE_USER
8:01gcp linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
7:55aws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
7:55gcp linuxTestAccept/bundle/resources/clusters/run/spark_python_task/DATABRICKS_BUNDLE_ENGINE=terraform
7:51aws-ucws windowsTestAccept/bundle/resources/synced_database_tables/basic/DATABRICKS_BUNDLE_ENGINE=terraform
7:50gcp windowsTestAccept/bundle/integration_whl/interactive_cluster/DATABRICKS_BUNDLE_ENGINE=direct
7:50azure windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=terraform
7:47aws-ucws linuxTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
7:47gcp linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:39gcp linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
7:35aws windowsTestAccept/bundle/resources/permissions/factcheck/DATABRICKS_BUNDLE_ENGINE=terraform
7:35aws-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
7:27aws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:27azure-ucws windowsTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=terraform
7:25aws-ucws linuxTestAccept/bundle/invariant/no_drift/DATABRICKS_BUNDLE_ENGINE=direct/INPUT_CONFIG=synced_database_table.yml.tmpl
7:21azure windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=direct/DATA_SECURITY_MODE=USER_ISOLATION
7:20azure-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
7:20gcp windowsTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=direct
7:17aws linuxTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:11azure-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct
7:10gcp windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:09aws-ucws linuxTestAccept/bundle/run/app-with-job/DATABRICKS_BUNDLE_ENGINE=direct
7:08azure-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=direct
7:07aws-ucws linuxTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
7:07aws-ucws windowsTestAccept/bundle/integration_whl/interactive_cluster_dynamic_version/DATABRICKS_BUNDLE_ENGINE=terraform/DATA_SECURITY_MODE=USER_ISOLATION
7:05gcp windowsTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=direct
7:05aws-ucws windowsTestAccept/bundle/resources/database_instances/single-instance/DATABRICKS_BUNDLE_ENGINE=direct
7:00azure-ucws linuxTestAccept/bundle/integration_whl/interactive_single_user/DATABRICKS_BUNDLE_ENGINE=direct
7:00aws-ucws windowsTestAccept/bundle/integration_whl/base/DATABRICKS_BUNDLE_ENGINE=terraform
6:55aws-ucws linuxTestAccept/bundle/resources/model_serving_endpoints/running-endpoint/DATABRICKS_BUNDLE_ENGINE=direct

@denik

Copy link
Copy Markdown
Contributor

Could you add NEXT_CHANGELOG entry?

shreyas-goenka added a commit that referenced this pull request Mar 16, 2026
shreyas-goenka added a commit that referenced this pull request Mar 16, 2026
## Summary
Add changelog entry for #4627 (suppress `/Workspace` prefix diff for
experiment names in direct deployment).
This pull request was AI-assisted by Isaac.
rauchy pushed a commit that referenced this pull request Mar 17, 2026
…ment (#4627)
## Summary
- Use `OverrideChangeDesc` to suppress the `/Workspace` prefix diff on
experiment names, matching the Terraform provider's
`experimentNameSuppressDiff` behavior
- Fix test server `ExperimentUpdate` to strip `/Workspace` prefix,
matching cloud behavior
- Add acceptance test coverage for both `/Workspace/Users/...` and
`/Users/...` path forms
- Resolves#4285#4324 ## Why?
The backend always strips the `/Workspace` prefix from experiment names,
so remote returns `/Users/...` while the config has
`/Workspace/Users/...`. Instead of mutating the config value (stripping
the prefix in `ApplyPresets`), we suppress the diff during change
detection via `OverrideChangeDesc` — the same approach the Terraform
provider uses with its
[`experimentNameSuppressDiff`](https://github.com/databricks/terraform-provider-databricks/blob/8945a7b2328659b1fc976d04e32457305860131f/mlflow/resource_mlflow_experiment.go#L13)
function.
Without this fix you get a persistent drift:
```
"name": {
"action": "update",
"old": "/Workspace/Users/shreyas.goenka@databricks.com/test-experiment-bundle",
"new": "/Workspace/Users/shreyas.goenka@databricks.com/test-experiment-bundle",
"remote": "/Users/shreyas.goenka@databricks.com/test-experiment-bundle"
},
```
## Test plan
- [x] Acceptance test `bundle/deployment/bind/experiment` verifies plan
shows 0 changes with `/Workspace/Users/...` path
- [x] Same test verifies plan shows 0 changes with `/Users/...` path
(without `/Workspace` prefix)
- [x] `bundle/resources/experiments/basic` acceptance test still passes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
rauchy pushed a commit that referenced this pull request Mar 17, 2026
## Summary
Add changelog entry for #4627 (suppress `/Workspace` prefix diff for
experiment names in direct deployment).
This pull request was AI-assisted by Isaac.
deco-sdk-taggingBot added a commit that referenced this pull request Mar 18, 2026
## Release v0.295.0
### Notable Changes
* Databricks Asset Bundles have been renamed to Declarative Automation Bundles (DABs). This is a non-breaking change; no code or configuration modifications are required. See the [FAQ](https://docs.databricks.com/aws/en/dev-tools/bundles/faqs#why-was-databricks-asset-bundles-renamed-to-declarative-automation-bundles).
* Add `bundle.engine` config setting to select the deployment engine (`terraform` or [`direct`](https://docs.databricks.com/aws/en/dev-tools/bundles/direct)). The `bundle.engine` setting takes precedence over the `DATABRICKS_BUNDLE_ENGINE` environment variable. When the configured engine doesn't match existing deployment state, a warning is issued and the existing engine is used ([#4749](#4749), [#4782](#4782))
### CLI
* Add `databricks auth switch` command for setting the default profile ([#4651](#4651))
* Add positional argument support to `auth logout` ([#4744](#4744))
* Strip trailing slash from host in `auth login`, `auth token`, and `configure` commands ([#4633](#4633))
### Bundles
* Standardize `personal_schemas` enum across bundle templates ([#4401](#4401))
* engine/direct: Fix permanent drift on experiment name field ([#4627](#4627))
* engine/direct: Fix permissions state path to match input config schema ([#4703](#4703))
* Add default project name and success message to default-scala template ([#4661](#4661))
* Skip enum validation for unresolved variable references ([#4752](#4752))
* engine/direct: Support references to/from grants ([#4774](#4774))
denik pushed a commit that referenced this pull request May 20, 2026
…ment (#4627)
## Summary
- Use `OverrideChangeDesc` to suppress the `/Workspace` prefix diff on
experiment names, matching the Terraform provider's
`experimentNameSuppressDiff` behavior
- Fix test server `ExperimentUpdate` to strip `/Workspace` prefix,
matching cloud behavior
- Add acceptance test coverage for both `/Workspace/Users/...` and
`/Users/...` path forms
- Resolves#4285#4324 ## Why?
The backend always strips the `/Workspace` prefix from experiment names,
so remote returns `/Users/...` while the config has
`/Workspace/Users/...`. Instead of mutating the config value (stripping
the prefix in `ApplyPresets`), we suppress the diff during change
detection via `OverrideChangeDesc` — the same approach the Terraform
provider uses with its
[`experimentNameSuppressDiff`](https://github.com/databricks/terraform-provider-databricks/blob/8945a7b2328659b1fc976d04e32457305860131f/mlflow/resource_mlflow_experiment.go#L13)
function.
Without this fix you get a persistent drift:
```
"name": {
"action": "update",
"old": "/Workspace/Users/shreyas.goenka@databricks.com/test-experiment-bundle",
"new": "/Workspace/Users/shreyas.goenka@databricks.com/test-experiment-bundle",
"remote": "/Users/shreyas.goenka@databricks.com/test-experiment-bundle"
},
```
## Test plan
- [x] Acceptance test `bundle/deployment/bind/experiment` verifies plan
shows 0 changes with `/Workspace/Users/...` path
- [x] Same test verifies plan shows 0 changes with `/Users/...` path
(without `/Workspace` prefix)
- [x] `bundle/resources/experiments/basic` acceptance test still passes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
denik pushed a commit that referenced this pull request May 20, 2026
## Summary
Add changelog entry for #4627 (suppress `/Workspace` prefix diff for
experiment names in direct deployment).
This pull request was AI-assisted by Isaac.
denik pushed a commit that referenced this pull request May 20, 2026
## Release v0.295.0
### Notable Changes
* Databricks Asset Bundles have been renamed to Declarative Automation Bundles (DABs). This is a non-breaking change; no code or configuration modifications are required. See the [FAQ](https://docs.databricks.com/aws/en/dev-tools/bundles/faqs#why-was-databricks-asset-bundles-renamed-to-declarative-automation-bundles).
* Add `bundle.engine` config setting to select the deployment engine (`terraform` or [`direct`](https://docs.databricks.com/aws/en/dev-tools/bundles/direct)). The `bundle.engine` setting takes precedence over the `DATABRICKS_BUNDLE_ENGINE` environment variable. When the configured engine doesn't match existing deployment state, a warning is issued and the existing engine is used ([#4749](#4749), [#4782](#4782))
### CLI
* Add `databricks auth switch` command for setting the default profile ([#4651](#4651))
* Add positional argument support to `auth logout` ([#4744](#4744))
* Strip trailing slash from host in `auth login`, `auth token`, and `configure` commands ([#4633](#4633))
### Bundles
* Standardize `personal_schemas` enum across bundle templates ([#4401](#4401))
* engine/direct: Fix permanent drift on experiment name field ([#4627](#4627))
* engine/direct: Fix permissions state path to match input config schema ([#4703](#4703))
* Add default project name and success message to default-scala template ([#4661](#4661))
* Skip enum validation for unresolved variable references ([#4752](#4752))
* engine/direct: Support references to/from grants ([#4774](#4774))
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.

Different result for experiments resource after bind

4 participants

@shreyas-goenka@eng-dev-ecosystem-bot@denik@andrewnester