[DNM] spike: host storage objects on the compute timely cluster - #38579
Draft
antiguru wants to merge 5 commits into
Draft
[DNM] spike: host storage objects on the compute timely cluster#38579antiguru wants to merge 5 commits into
antiguru wants to merge 5 commits into
Conversation
Throwaway spike, not for merge. Behind the MZ_UNIFIED_CLUSTER env var, clusterd builds a single timely cluster. The storage CTP is served unchanged by a guest StorageState embedded in the compute worker loop. Storage-internal commands ride the compute command channel, generalized into a two-hop sequencer so all dataflow construction, compute and storage alike, follows one definitive cross-worker order. Validated: smoke (source+MV+index), concurrent creation storms on multi-process replicas, native->unified topology swap with an existing catalog, and envd kill mid-storm plus recovery. No lint run. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The storage timely log bridge (Replay storage timely logs, Concatenate) no longer exists; storage events arrive on the host cluster's own logging stream. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ler.td The section gated hydration with a blocking mz_sleep dataflow on the source's own cluster. With storage objects hosted on the compute timely cluster, that gate starves the co-hosted source and its command processing outright instead of merely delaying hydration, so the scenario as written cannot work. A note in the file records what replacement coverage needs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Member
Author
Path to productizingThe spike validates the mechanism: storage objects render, run, and recover on the compute timely cluster with the wire protocols and controllers byte-identical. Smoke, concurrent creation storms on multi-process replicas, a topology swap of an existing catalog, environmentd kill and recovery, and source suspend-and-restart all pass locally, and the PR test pipeline is green up to the items below. What remains falls into decisions, validation, and productionizing. Decisions
Validation
Productionizing
Process
Posted by Claude Code. |
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.
Motivation
Explores unifying the storage and compute timely clusters by migrating the objects instead of the runtime, the reverse of the protocol-first approach in #37091. The wire protocols and controllers stay byte-identical, so the change is confined to clusterd and the cluster-side crates. The goal of this draft is CI signal on the unified topology, not review.
Description
clusterd builds a single timely cluster and serves the storage protocol from a guest
StorageStateembedded in the compute worker loop. Timely requires all workers to construct dataflows in the same order, and storage already funnels all dataflow construction through its internal command sequencer while compute funnels it through the command channel. The change merges the two into one sequencing lane carrying both command kinds, so one definitive cross-worker order covers compute and storage construction alike. Storage-local behavior such as suspend-and-restart and replica-side resume-upper computation is unchanged.Default on in this draft to exercise CI.
MZ_UNIFIED_CLUSTER=0falls back to separate clusters. Themz-compute -> mz-storagedependency edge is newly allowed inci/test/lint-deps.toml.Validated locally: source, materialized view, and index co-hosted on one cluster; concurrent creation storms on multi-process replicas; restarting an existing catalog into the unified topology; environmentd kill and recovery mid-storm. Untested so far: Kafka sinks, oneshot ingestion, and controller reconnects without a process restart, which is part of what this CI run is for.
Posted by Claude Code.