Conversation
Contributor
Approval status: pending
|
denik
marked this pull request as draft
August 25, 2026 09:24
Collaborator
Integration test reportCommit: 63267f7
Top 6 slowest tests (at least 2 minutes):
|
denik
added a commit
that referenced
this pull request
Aug 25, 2026
The direct engine now sends the PATCH, and the real API rejects the mask path it builds: suspend_timeout_duration is a oneof member, so the API only accepts the group name spec.suspension. Separate bug, separate fix (#6374). The testserver ignores update_mask, which is why the local run is unaffected. Co-authored-by: Isaac
denik
added a commit
that referenced
this pull request
Aug 25, 2026
The direct engine now sends the PATCH, and the API rejects the mask path it builds: suspend_timeout_duration is a member of the suspension oneof, so only the group name spec.suspension is accepted. Separate bug, separate fix (#6374). Teach the testserver to validate update_mask against the paths the real API accepts, so the failure reproduces locally rather than only on aws. The engines diverge from the second deploy on, so those steps go back to per-engine files, and the deploy requests are recorded per engine: same body, different mask. Cloud stays enabled, with the golden recording what the real workspace does. Co-authored-by: Isaac
denik
force-pushed
the
denik/update-mask-fix
branch
from
September 3, 2026 19:36
aa81513 to
e9071cf
Compare
denik
force-pushed
the
denik/update-mask-fix
branch
from
September 7, 2026 13:36
902aedb to
8d8e156
Compare
Growing a config with a nested block — adding default_endpoint_settings with
just autoscaling limits — failed the deploy with
400 INVALID_PARAMETER_VALUE
Field 'spec.default_endpoint_settings.suspension' is in update_mask
but not provided in request
#6440 masks only leaves when a child of the message changed, but a block added
as a whole leaves a single change on the message itself, and that was masked
as-is. Expand such a change to the fields the request body carries.
Two things do not expand. A message the body populates completely, because no
requirement the API places on a masked field can then go unmet and replacing
the message is what the config declares — that keeps spec.settings as the mask
for endpoint settings. And a map, a repeated field or a wrapper like
duration.Duration: the first two are addressable only as a whole, the last is a
struct in Go but a scalar on the wire.
The expansion reads the spec the request body carries rather than the plan's own
copy of the new value, because a plan read back from disk carries that copy as
deserialized JSON with the types erased; deploying a saved plan would otherwise
still send the message path and fail. The READPLAN cell of the acceptance test
covers that path.
This turns the postgres_projects/add_default_endpoint_settings case that #6566
recorded as broken into a passing one; its Badness marker is removed.
Co-authored-by: Isaac
denik
force-pushed
the
denik/update-mask-fix
branch
from
September 9, 2026 20:52
8d8e156 to
63267f7
Compare
This branch has not been deployed
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Why
Growing a config with a nested block — adding
default_endpoint_settingswith just an autoscaling limit — failed the deploy:#6440 masks only leaves when a child of the message changed, but a block added as a whole leaves a single change on the message itself, and that was masked as-is.
Changes
Expand such a change to the fields the request body actually carries. A map, a repeated field and a wrapper like
duration.Durationdo not expand: the first two are addressable only as a whole, and the last is a struct in Go but a scalar on the wire.This also changes the mask
add_settingsasserts, fromspec.settingstospec.settings.pg_settings. The message form happens to be accepted forsettingsbecause everything under it is optional, but it is rejected fordefault_endpoint_settings, whosesuspensiononeof must be populated, and forgroup, whosemaxis required. The leaf form works for all three, so it applies uniformly rather than per message.Tests
New acceptance test
postgres_projects/add_default_endpoint_settings, which reproduces the failure and asserts the value the API applied alongside the siblings' backend defaults. Ran the postgres suite against a real AWS workspace.