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
Dynamically construct update_mask in ResourceApp.DoUpdate using collectUpdatePathsWithPrefix(entry.Changes, "").
Filter out non-API / deploy-only fields (source_code_path, config, git_source, lifecycle, lifecycle.*) from update_mask.
Removed the static, hardcoded updateMask variable string in bundle/direct/dresources/app.go.
Updated the acceptance test request recording acceptance/bundle/resources/apps/update/out.requests.direct.json.
Added a changelog fragment in .nextchanges/bundles/app_update_mask.md.
Why
Previously, ResourceApp.DoUpdate sent a fixed update_mask string containing all updatable apps.App fields (including compute_size, compute_min_instances, compute_max_instances, etc.) on every UpdateApp call regardless of what was specified in the bundle config. Because apps.App fields use omitempty, omitted fields were dropped from the request body while still being specified in update_mask. Building the update_mask dynamically ensures it strictly matches the fields modified in entry.Changes.
Tests
Updated acceptance/bundle/resources/apps/update/out.requests.direct.json fixture to verify that updating only description yields "update_mask": "description".
Verified TestAppDoUpdate_UpdateMaskHasAllFields in bundle/direct/dresources/app_test.go.
Files: .nextchanges/bundles/app_update_mask.md
Based on git history:
@denik -- recent work in .nextchanges/bundles/, bundle/direct/dresources/, acceptance/bundle/resources/apps/update/
Any maintainer (@andrewnester, @anton-107, @denik, @pietern, @shreyas-goenka, @simonfaltum, @renaudhartert-db, @janniklasrose, @lennartkats-db, @rugpanov, @rclarey) can approve all areas.
See OWNERS for ownership rules.
Shushankranjan
changed the title
fix(bundle/direct): construct UpdateApp update_mask dynamically based…
fix(bundle/direct): construct UpdateApp update_mask dynamically based on changed fields (#6400)
Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
update_maskinResourceApp.DoUpdateusingcollectUpdatePathsWithPrefix(entry.Changes, "").source_code_path,config,git_source,lifecycle,lifecycle.*) fromupdate_mask.updateMaskvariable string inbundle/direct/dresources/app.go.acceptance/bundle/resources/apps/update/out.requests.direct.json..nextchanges/bundles/app_update_mask.md.Why
Previously,
ResourceApp.DoUpdatesent a fixedupdate_maskstring containing all updatableapps.Appfields (includingcompute_size,compute_min_instances,compute_max_instances, etc.) on everyUpdateAppcall regardless of what was specified in the bundle config. Becauseapps.Appfields useomitempty, omitted fields were dropped from the request body while still being specified inupdate_mask. Building theupdate_maskdynamically ensures it strictly matches the fields modified inentry.Changes.Tests
acceptance/bundle/resources/apps/update/out.requests.direct.jsonfixture to verify that updating onlydescriptionyields"update_mask": "description".TestAppDoUpdate_UpdateMaskHasAllFieldsinbundle/direct/dresources/app_test.go.