Uh oh!
There was an error while loading. Please reload this page.
docs(kernel): document the cluster-invalidation family (#14339) - #14475
Merged
baozhoutao merged 2 commits intoSep 2, 2026
Conversation
`content/docs/kernel/cluster.mdx` §6.2 described cross-node metadata invalidation as one channel, `metadata.changed`. Two more landed lanes were undocumented: `metadata.mutated` (#13331, the ObjectQL object registry) and `datasource.mutated` (#13805, the ObjectQL driver registry). Retitles §6.2 "The cluster-invalidation family": a summary table plus the shared contract the two newer lanes carry (address-only signal, receipt = convergence from the replica's own read, originNode loopback suppression, at-most-once bounded by boot rehydration). Keeps the existing `metadata.changed` description as Lane 1; adds Lane 2 and Lane 3 with their channel constants, payload types and receipt logic. Adds a cross-reference in §7.3 pointing long-lived ObjectQL registry caches at lanes 2/3 instead of a redundant `metadata.changed` subscription. Section numbering (§6.3, §7.x) is unchanged. Also fixes the bridge plugin's stale `See cluster.mdx §5.` docblock pointer to `§6.2` (comment text only, no code change).
…uster-invalidation-family-docs
Contributor
📓 Docs Drift Check
What this run could not see
Coarse fallback — 4 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
baozhoutao
marked this pull request as ready for review
September 2, 2026 09:00
baozhoutao
enabled auto-merge
September 2, 2026 09:00
Uh oh!
There was an error while loading. Please reload this page.
baozhoutao
deleted the
claude/issue-14339-cluster-invalidation-family-docs
branch
September 2, 2026 09:26
This was referenced Sep 2, 2026
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 freeto 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.
Fixes#14339
What
content/docs/kernel/cluster.mdx§6.2 described cross-node metadatainvalidation as one channel,
metadata.changed. Two more convergence lanesexist in the tree and were undocumented:
metadata.mutated(#13331, theObjectQL object registry) and
datasource.mutated(#13805, the ObjectQLdriver registry).
Both lanes are landed on
main:METADATA_MUTATION_CLUSTER_CHANNEL = 'metadata.mutated'—packages/metadata-protocol/src/protocol.ts:4010,ClusterMetadataMutationPayloadat
:4023(runtime: TS-config boot registers a 'metadata' service without attachClusterPubSub — cross-node invalidation disabled; new object gives OBJECT_NOT_FOUND on non-writing replicas, never heals #13331, closed).DATASOURCE_MUTATION_CLUSTER_CHANNEL = 'datasource.mutated'—packages/services/service-datasource/src/datasource-admin-service.ts:71,ClusterDatasourceMutationPayloadat:86([finding] driver-registry eviction is per-replica — the driver registry has no cluster propagation in either direction, so a deleted datasource still drains the replicas that did not serve the DELETE #13805, closed).MetadataClusterBridgePlugin(packages/services/service-cluster/src/metadata-cluster-bridge-plugin.ts)binds all three lanes at
kernel:ready(:80-82) and its header docblock(
:18-58) already describes all three — the source of truth this PR turnsinto reader-facing docs.
git grep -n "metadata\.mutated\|datasource\.mutated" -- content/docswaszero hits before this PR.
Docs change
content/docs/kernel/cluster.mdx§6.2 retitled "The cluster-invalidationfamily": a summary table (channel · payload type · package · what it
converges) plus the shared contract the two newer lanes carry (address-only
signal, receipt = convergence from the replica's own read,
originNodeloopback suppression, at-most-once bounded by boot rehydration — quoting
protocol.ts:5020-5027anddatasource-admin-service.ts:331-337verbatim).The existing
metadata.changeddescription is kept, unchanged in substance,as "Lane 1"; two new subsections, "Lane 2" and "Lane 3", document the two
missing channels with their channel constants, payload types and receipt
logic. Section numbering is unchanged — §6.3/§7.x are untouched, and the new
content lives inside §6.2 as
####-level sub-parts.Also added: one cross-reference sentence in §7.3 ("I want to read metadata
in a long-lived cache") noting that a cache of ObjectQL's object/driver
registry state is already converged by lanes 2/3 and does not need its own
metadata.changedsubscription.packages/services/service-cluster/src/metadata-cluster-bridge-plugin.ts:58— the docblock's
See content/docs/kernel/cluster.mdx §5.pointer was wrong(§5 is service scope/leader election; the fan-out lives in §6) — fixed to
§6.2. Comment text only, no code change.Left untouched, per the card's scope:
services-checklist.mdx:150's"Multi-instance Sync" row and
concepts/metadata-lifecycle.mdx:179bothdescribe
metadata.changedspecifically (lane 1's own mechanism), in theirown scoped context — neither claims to be the complete cluster-invalidation
story, so neither reads as misleading after this PR.
Out of scope
content/docs/kernel/cluster.mdx§6.1/§6.3/§7.1/§7.2 (versionwidening, the planned reader contract, event-firing/service-registration
guidance) are untouched — none of it is about the invalidation family.
Generated by Claude Code
Generated by Claude Code