Skip to content

fix(server): accept 1..3 control plane replicas, not only 1 or 3 - #103

Merged
atbagan merged 1 commit into
mainfrom
fix/provider-owned-replica-default
Aug 30, 2026
Merged

atbagan merged 1 commit into
mainfrom
fix/provider-owned-replica-default

Conversation

@atbagan

@atbagan atbagan commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

The cluster update validator rejected any control plane replica count that was not 1 or 3, with the message "odd numbers required for etcd quorum". Steward hosts the control plane and does not couple the API server replica count to etcd quorum (etcd is a separate, shared datastore), so 2 is a valid and useful replica count (HA without the cost of 3).

This replaces the odd-only check with a 1..3 range and removes the quorum explanation.

  • 1, 2, 3 accepted
  • 0, 4 rejected
  • the existing 3 -> 1 downgrade-acknowledgement gate is unchanged

Scope

Validation semantics only — no environment-specific replica policy. Pairs with butlerdotdev/butler-api#49 (provider-owned replicas default) but is independent at the code level (this handler uses its own request DTO).

Test

Updated clusters_update_test.go: 2 accepted, 3 accepted (scale-up), 4 rejected, 0 rejected, downgrade-ack cases retained.

The cluster update validator rejected any control plane replica count
that was not 1 or 3, citing an "odd numbers required for etcd quorum"
rule. Steward hosts the control plane and does not tie the API server
replica count to etcd quorum, so 2 is a valid and useful count.

Replace the odd-only check with a 1..3 range and drop the quorum
explanation. The existing 3->1 downgrade acknowledgement gate is
unchanged.
@atbagan
atbagan merged commit cc7835c into main Aug 30, 2026
8 checks passed
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