-
Notifications
You must be signed in to change notification settings - Fork 514
adapter: collect durable object hydration history #38347
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
aljoscha
merged 34 commits into
aljoscha/hydration-03-catalog
from
aljoscha/hydration-04-collector
Aug 26, 2026
Merged
Changes from 33 commits
Commits
Show all changes
34 commits
Select commit
Hold shift + click to select a range
79c7cf0
adapter: simplify hydration replica readiness
aljoscha 0efe63a
adapter: restrict read-then-write to transactional tables
aljoscha 044c053
catalog: identify derived-relation dependencies
aljoscha d7151b9
adapter: declare hydration history dyncfgs at environment scope
aljoscha 2ae3c7f
adapter: collect durable object hydration history
aljoscha 22a9dcc
ci: gate hydration history defaults to v26.40
aljoscha e97ebaa
adapter: attribute a trailing replica frontier to the timeout
aljoscha 7ccf114
adapter: offset the sweep schedule per environment
aljoscha 4fdae34
adapter: seed hydration scheduling from the full environment id
aljoscha b1fe070
adapter: document hydration sampling under clock skew
aljoscha b5e8003
adapter: scope hydration timeout diagnostics to collection
aljoscha fd90638
test: verify the multi-worker hydration finish
aljoscha e52cdd5
adapter: drain expired hydration history in bounded batches
aljoscha 237ce44
test: require a fresh hydration episode after restart
aljoscha 63bc95a
test: state hydration retention coverage accurately
aljoscha 7b0af29
test: validate the hydration timing query result
aljoscha 060f651
adapter: name the write-attempt discriminator
aljoscha fd2048a
adapter: clarify hydration history completeness
aljoscha 1a1bb16
adapter: expose hydration history maintenance metrics
aljoscha 9eb528f
adapter: repair read-then-write rustdoc placement
aljoscha 9dbc8dc
adapter: clarify background dependency validation
aljoscha 23cf89c
adapter: document hydration episode key stability
aljoscha 3e794ad
adapter: clarify the background OCC rollout flag
aljoscha 065c91a
adapter: document hydration history freshness scaling
aljoscha 3c2bdd0
adapter: state the hydration collection result bound
aljoscha 1c3e235
adapter: bound hydration retention work per sweep
aljoscha bfe740b
adapter: make coordinator response drops fallible
aljoscha baaf216
adapter: propagate compute lookup shutdown
aljoscha c141b38
adapter: enforce background OCC system boundaries
aljoscha d4024bb
adapter: skip unready hydration replicas
aljoscha d3c4350
adapter: make hydration schedule offsets portable
aljoscha 494a76f
adapter: remove an unused subscribe accessor
aljoscha 956fe79
test: discover the off-zero hydration sink worker
aljoscha 949496c
adapter: simplify hydration review contracts
aljoscha File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this whole change "adapter: skip unready hydration replicas" worth the hassle? What does this buy us?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Posted by AJ, Aljoscha's coding agent.
Kept the optimization but reduced it to one transient scan per sweep. The coordinator builds a set of installed hydration subscribes that have not delivered data, then admits replicas absent from that set or reported
Online. Missing subscribes preserve behavior when introspection subscribes are disabled, andOnlinecovers delayed invalidation after replacement data arrived.The cost is
O(S log U + R log U)per enabled sweep, withSsubscribes,Uunready replicas, andRcandidates. There is no persistent state or per-replica subscribe scan. The standalone helper, bespoke test, long comment, and readiness design-doc discussion are gone.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Posted by AJ, Aljoscha's coding agent.
Follow-up after narrowing the production scope: unmanaged replicas are test-only and never receive orchestrator status events, so distinguishing ready from unreachable unmanaged replicas did not justify coupling this collector to introspection-subscribe state. I removed the scan and helper entirely.
Managed replicas are now admitted only when their rolled-up status is
Online. Unmanaged test replicas remain eligible unconditionally, so working ones can still record history. A deliberately unreachable test replica may consume the bounded mutation timeout, which is an accepted test-only tradeoff.