Skip to content

apps: stop planning an update on every deploy - #6328

Queued
shreyas-goenka wants to merge 4 commits into
mainfrom
fix-apps-forward-token-drift
Queued

apps: stop planning an update on every deploy#6328
shreyas-goenka wants to merge 4 commits into
mainfrom
fix-apps-forward-token-drift

Conversation

@shreyas-goenka

@shreyas-goenka shreyas-goenka commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Changes

The direct engine planned an Apps update on every deploy, so each bundle deploy issued a no-op Apps.CreateUpdate call. Every plan looked like this, with a remote value and no local one:

"forward_user_access_token": { "action": "update", "remote": true }

forward_user_access_token became part of apps.App in databricks-sdk-go v0.171.0 (#6320) and was added to the app update mask, but nothing classified it. The backend enables token forwarding and reports it as true even when the bundle omits the field, so the remote true read as drift, hasAppChanges returned true, and the update fired.

Declared under backend_defaults, exactly like compute_size: the remote value is skipped when the config omits the field, while an explicit value in the config still diffs normally (so real drift is still caught).

The backend enables user access token forwarding and reports
forward_user_access_token as true even when the bundle omits it. The field
became part of apps.App in databricks-sdk-go v0.171.0 and was added to the app
update mask, but nothing classified it, so the direct engine read the remote
true as drift: every plan reported "action": "update" with a remote value and no
local one, and every deploy issued a no-op Apps update call.

Declare it under backend_defaults, matching compute_size: the remote value is
skipped when the config omits the field, while an explicit value in the config
still diffs normally.

The fake workspace did not model this default, which is why the regression
reached the nightly integration tests instead of failing here. It now reports
the field the way the platform does, which reproduces the spurious update
without the fix.

Co-authored-by: Isaac
Co-authored-by: Isaac
@denik

denik commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

This should have been caught by no_drift test on cloud. If it did not, could you take a look why not?

@shreyas-goenka
shreyas-goenka marked this pull request as ready for review August 20, 2026 08:14
The fake workspace now reports the field, so the two goldens that dump raw app state (bundle generate and the apps command output) include it.

Co-authored-by: Isaac
@@ -0,0 +1 @@
Fixed apps planning an update on every deploy. The backend enables `forward_user_access_token` and reports it as `true` even when the bundle omits it, which the direct engine read as drift and turned into a no-op update call on each deploy ([#6328](https://github.com/databricks/cli/pull/6328)).

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.

we don't need this changelog entry since the previous release wasn't affected (didn't have this SDK field)

The regression it described has not shipped in a release, so there is nothing user-visible to announce.

Co-authored-by: Isaac
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 5e44f76

Run: 32350951460

Env 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
💚​ aws linux 1 4 274 1162 5:55
💚​ aws windows 1 4 276 1160 3:22
💚​ azure linux 1 4 273 1162 6:46
💚​ azure windows 1 4 275 1160 4:36
💚​ gcp linux 1 4 274 1162 6:14
💚​ gcp windows 1 4 276 1160 5:03
Test Name aws linux aws windows azure linux azure windows gcp linux gcp windows
💚​ TestAccept 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/invariant/no_drift 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
Top 6 slowest tests (at least 2 minutes):
duration env testname
4:54 gcp windows TestAccept
4:29 azure windows TestAccept
3:52 gcp linux TestAccept
3:52 aws linux TestAccept
3:46 azure linux TestAccept
3:11 aws windows TestAccept

@shreyas-goenka
shreyas-goenka added this pull request to the merge queue Aug 20, 2026
Any commits made after this event will not be merged.
Sign up for free to 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.

5 participants