chore(multigres): bump images and module to 300f673 - #558
Closed
soedirgo wants to merge 1 commit into
Closed
Conversation
soedirgo
force-pushed
the
chore/bump-multigres-b713432
branch
from
August 3, 2026 11:45
e0683b8 to
c2b5a64
Compare
This comment has been minimized.
This comment has been minimized.
soedirgo
force-pushed
the
chore/bump-multigres-b713432
branch
from
August 3, 2026 11:48
c2b5a64 to
bdf3485
Compare
soedirgo
marked this pull request as ready for review
August 3, 2026 11:50
This comment has been minimized.
This comment has been minimized.
niconosenzo
approved these changes
Aug 3, 2026
This comment has been minimized.
This comment has been minimized.
- Multigres 300f673 removes the RewindToSource RPC and the POSTGRES_ACTION_REWIND enum value; diverged standbys now self-heal locally inside multipooler. The operator references neither symbol, so the module bump is source-compatible and needs no code change. - pgctld now brings an already-initialized data directory up as a standby unless StartRequest.as_primary is set, so a crashed primary returns read-only until consensus promotes it. That path is entirely data-plane; the operator does not call pgctld's Start RPC. - pgctld live-includes --pg-initdb-extra-conf files via include_if_exists instead of copying their bytes at initdb, so edits to the ConfigMap the operator mounts at POSTGRES_INITDB_EXTRA_CONF are re-read on restart and SIGHUP. Only newly initialized data directories gain the include directive, since InitDataDirWithResult early-returns on an initialized PGDATA. - The structured-logging refactor lowercases messages and enforces snake_case attribute keys, but leaves the slog JSON builtins alone. The observer's log scanner still parses level, msg, error, and problem_code, and its probe-noise message strings are unchanged upstream. - multiadmin-web stays at sha-64da1ab: it is the newest commit touching web/multiadmin/ at or before 300f673, and no multiadmin-web image is published for the later SHAs. Signed-off-by: Bobbie Soedirgo <bobbie@supabase.io> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
soedirgo
force-pushed
the
chore/bump-multigres-b713432
branch
from
August 3, 2026 12:09
bdf3485 to
c87acc7
Compare
soedirgo
marked this pull request as draft
August 3, 2026 12:10
🔬 Go Test Coverage ReportSummary
Status✅ PASS DetailShow New Coverage |
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.
What
Bumps the default upstream images and the
github.com/multigres/multigresmodule to300f673.DefaultPostgresImageghcr.io/multigres/pgctldsha-54b4c18sha-300f673DefaultMultiadminImageghcr.io/multigres/multigressha-54b4c18sha-300f673DefaultMultiorchImageghcr.io/multigres/multigressha-54b4c18sha-300f673DefaultMultipoolerImageghcr.io/multigres/multigressha-54b4c18sha-300f673DefaultMultigatewayImageghcr.io/multigres/multigressha-54b4c18sha-300f673DefaultMultiadminWebImageghcr.io/multigres/multiadmin-websha-95eb327sha-64da1abModule:
v0.0.0-20260722000357-54b4c18f6f5f→v0.0.0-20260731210621-300f673c63ee.DefaultEtcdImageandDefaultPostgresExporterImageare untouched.Tags verified present in GHCR before pinning:
multiadmin-web has no
sha-300f673build.64da1abis the newest commit touchingweb/multiadmin/at or before300f673c(the following nine commits are Go-only, docs, or CI), so it is the correct web-side equivalent. The module is pinned to300f673to match the core images.Operator impact
No operator code changes are required. Findings from the
pin_upstream_imagesaudit over54b4c18..300f673c(50 upstream commits):RewindToSourceRPC removed (22d50ae2) — dropped fromproto/multipoolermanagerdata.proto,consensusservice.proto, and therpcclientinterface; diverged standbys now self-heal locally in multipooler.grep -rn RewindToSourceover the operator returns nothing. No impact.POSTGRES_ACTION_REWIND = 4removed from thePostgresActionenum. The operator never referencesPostgresAction. No impact.06c2155b) —StartRequest.as_primarynow defaults to false, so a crashed former primary comes back in recovery mode and is only promoted through consensus-gatedpg_promote(). The operator does not importgo/pb/pgctldserviceand never callsStartitself. No impact, but relevant when reading e2e failover timings: a hard-killed sole primary now stays read-only until multiorch promotes it.11675fd7) — this one targets the operator's flow directly.appendExtraConfFilesnow emitsinclude_if_exists '<abs path>'at the end ofpostgresql.confrather than copying bytes, so the ConfigMap the operator mounts and passes viaPOSTGRES_INITDB_EXTRA_CONF(containers.go:276,PostgresConfigMountPath = /etc/pgctld/postgres-config) is re-read on every start andpg_reload_conf()SIGHUP. Previously operator config edits were frozen at cluster creation. The env var name and absolute-path contract are unchanged, so no operator change — but note the caveat below.4e311c15, plusc5c6b80bquieting the health/replication paths) — 84 files, messages lowercased and attribute keys held to snake_case bysloglint.buildHandleringo/common/servenv/logging.gois a plainslog.NewJSONHandlerwith noReplaceAttr, so thelevel/msgbuiltins are untouched. The observer's scanner (tools/observer/pkg/observer/logs.go:200-205) reads exactlylevel,msg,error,problem_code—problem_codeis still emitted (go/services/multiorch/recovery/recovery_grace_period.go:204), andisProbeNoise's two message strings (startup failed,error handling message) are unchanged in this range (git log -Sover both returns nothing). No impact.eventlog.Emitnow uses the canonical event type as the record message instead of themultigres.eventsentinel. Nothing in this repo greps for that sentinel. No impact.StandbyReplicationStatus.last_receive_lsn_advance_time(012077f5) andPrimaryConnInfo.passfile(64da1abd) added; multiorch cohort-eligibility tightening (57db243a,9111441c),SetPrimarytarget caching (300f673c), and deferred repair on unknown replication status (d78123d0). The operator consumes none of these messages. New feature opportunity, not wired up here.clustermetadata.protois unchanged across the whole range, so there is no repeat of thePoolerTypedeprecation handled in 4ec99a5. Thetopoclientchanges in this range are log-message lowercasing only, no API surface change.The only
multipoolermanagerdatasymbols the operator uses areBackupMetadata,BackupMetadata_COMPLETE,BackupMetadata_INCOMPLETE,GetBackupsRequest/Response, andUpdateConsensusRuleRequest/Response— none changed.Caveat: existing shards do not gain the config include directive
GeneratePostgresServerConfigis only called fromInitDataDirWithResult, which early-returns whenIsDataDirInitialized()is true (go/cmd/pgctld/command/init.go:97-102). Shards whose PGDATA was initialized by an older pgctld therefore keep the copied-bytes snapshot inPGDATA/postgresql.confand noinclude_if_existsline, so the image bump alone does not make their mounted config live. Newly created shards get the new behavior. Worth knowing before anyone treats #554-style config propagation as fixed for existing clusters.Flag compatibility
All 38
--flagstrings inpkg/resource-handler/controller/shard/containers.gostill exist upstream at300f673. Two apparent misses are false positives:--repo1-pathappears only in a comment about pgbackrest, and--web.listen-addressbelongs topostgres-exporter, not a multigres binary.Environment variable compatibility
PGDATAandPOSTGRES_PASSWORD_FILEremain the only hard requirements, and both are set on each container that needs them —buildPgctldSidecar(containers.go:262,:266) andbuildMultipoolerContainer(:513,:517).buildMultiorchContainerneeds neither.Verification
go build ./...,go vet ./...,go test ./...— all pass, no failures.go mod tidyproduced no transitive churn:go.modchanges by exactly one line.tools/observer:go mod tidyis a no-op,go build ./...andgo test ./...pass.make kind-redeploysmoke test against a real cluster. Left to CI's e2e matrix, hence draft.The branch name still reads
chore/bump-multigres-b713432— it was retargeted fromb713432to300f673in place, and GitHub does not allow changing a PR's head ref.