Skip to content

storage: stage frontend listener activation#449

Draft
jveski wants to merge 6 commits into
storage-stack/09-config-supervisionfrom
storage-stack/10-frontend-lifecycle
Draft

storage: stage frontend listener activation#449
jveski wants to merge 6 commits into
storage-stack/09-config-supervisionfrom
storage-stack/10-frontend-lifecycle

Conversation

@jveski

@jveski jveski commented Jul 10, 2026

Copy link
Copy Markdown
Contributor
  • split HTTP and S3 socket binding from listener activation so replacements can be prepared without accepting traffic
  • track each frontend binding and stripe geometry so failed rebuilds remain detectable on later config applies
  • retain replaced frontend drivers until commit and restore them on rollback

@jveski

jveski commented Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

AI review: This comment was generated by an AI agent, not by the PR author.

  • Startup listeners become externally visible during preparation (cmd/unbounded-storage/src/main.rs:1409-1411, cmd/unbounded-storage/src/main.rs:1459-1469): FrontendRegistry::new calls build, which immediately calls activate/listen, while prepare_shard_layer is still waiting for phase B and before startup disks are reconciled and published. TCP handshakes can therefore succeed before startup is committed; a later shard or disk failure tears those listeners back down after clients have observed them. Startup must retain the bound sockets dormant until layer activation after successful disk publication.

  • A multi-frontend reload can commit a partial externally visible configuration (cmd/unbounded-storage/src/main.rs:1507-1518): every reconciler add/remove creates and finalizes its own transaction immediately. If an earlier replacement starts listening and a later replacement fails, the earlier change remains live and there is no transaction left to roll it back, despite the apply being reported as failed. Stage all affected frontends, activate them only after every preparation succeeds, and keep one transaction across the reconcile so a later activation failure restores the complete prior set.

jveski added 3 commits July 10, 2026 19:59
…ion' into storage-stack/10-frontend-lifecycle

# Conflicts:
#	cmd/unbounded-storage/src/main.rs
…cle' into storage-stack/10-frontend-lifecycle
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