Skip to content

test: cover graceful cluster reconfiguration with single-replica sources#37854

Open
def- wants to merge 2 commits into
MaterializeInc:mainfrom
def-:graceful-reconfig-test-coverage
Open

test: cover graceful cluster reconfiguration with single-replica sources#37854
def- wants to merge 2 commits into
MaterializeInc:mainfrom
def-:graceful-reconfig-test-coverage

Conversation

@def-

@def- def- commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

ALTER CLUSTER ... WITH (WAIT UNTIL READY) deadlocking on clusters that host a single-replica source (SQL-530, fixed in #37740) shipped because no test combined a readiness-gated reconfiguration with a Postgres, MySQL, or SQL Server source. Close the gap from three sides:

  • parallel-workload: a new ReconfigureClusterAction gracefully resizes a random managed cluster with ON TIMEOUT ROLLBACK and fails the run if the realized config never cuts over, so a wedged readiness check surfaces as a test failure instead of a silent rollback. Sources land on random clusters, so resizes regularly hit clusters hosting Postgres sources.

  • platform-checks: a new AlterClusterGracefulReconfiguration check reconfigures a cluster hosting a Postgres source in both manipulate phases and validates that the realized config, the finalized reconfiguration record, and ingestion survive restarts and upgrades. Gated on base version v26.35.0-dev: the fix predates the v26.35.0-rc.1 cut, and older versions wedge on the reconfiguration itself, so no phase may run there.

  • cloudtest: test_zero_downtime_reconfiguration now resizes a cluster hosting a Postgres source and asserts the reconfiguration finalizes and ingestion continues across cut-over, covering the k8s path where target replica pods must come online before cut-over.

Test run: https://buildkite.com/materialize/nightly/builds/17529 & https://buildkite.com/materialize/nightly/builds/17531 & https://buildkite.com/materialize/nightly/builds/17543

One issue came out of this: https://linear.app/materializeinc/issue/SQL-568/graceful-reconfiguration-of-cluster-cluster-3-to-size-scale1workers1

@def-
def- requested a review from a team as a code owner July 24, 2026 09:02
@def-
def- force-pushed the graceful-reconfig-test-coverage branch from f8ead11 to 7997caf Compare July 24, 2026 09:30
@def-
def- requested a review from aljoscha July 24, 2026 09:31
def- and others added 2 commits July 24, 2026 13:18
ALTER CLUSTER ... WITH (WAIT UNTIL READY) deadlocking on clusters that
host a single-replica source (SQL-530, fixed in MaterializeInc#37740) shipped because
no test combined a readiness-gated reconfiguration with a Postgres,
MySQL, or SQL Server source. Close the gap from three sides:

* parallel-workload: a new ReconfigureClusterAction gracefully resizes
  a random managed cluster with ON TIMEOUT ROLLBACK and fails the run
  if the realized config never cuts over, so a wedged readiness check
  surfaces as a test failure instead of a silent rollback. Sources land
  on random clusters, so resizes regularly hit clusters hosting
  Postgres sources.

* platform-checks: a new AlterClusterGracefulReconfiguration check
  reconfigures a cluster hosting a Postgres source in both manipulate
  phases and validates that the realized config, the finalized
  reconfiguration record, and ingestion survive restarts and upgrades.
  Gated on base version v26.35.0-dev: the fix predates the
  v26.35.0-rc.1 cut, and older versions wedge on the reconfiguration
  itself, so no phase may run there.

* cloudtest: test_zero_downtime_reconfiguration now resizes a cluster
  hosting a Postgres source and asserts the reconfiguration finalizes
  and ingestion continues across cut-over, covering the k8s path where
  target replica pods must come online before cut-over.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@def-
def- force-pushed the graceful-reconfig-test-coverage branch from 7997caf to 8b6c462 Compare July 24, 2026 13:24
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.

1 participant