-
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
Changes from 30 commits
79c7cf0
0efe63a
044c053
d7151b9
2ae3c7f
22a9dcc
e97ebaa
7ccf114
4fdae34
b1fe070
b5e8003
fd90638
e52cdd5
237ce44
63bc95a
7b0af29
060f651
fd2048a
1a1bb16
9eb528f
9dbc8dc
23cf89c
3e794ad
065c91a
3c2bdd0
1c3e235
bfe740b
baaf216
c141b38
d4024bb
d3c4350
494a76f
956fe79
949496c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -242,6 +242,15 @@ keep the change invisible to session-visible catalog reads (name resolution, | |
| planning). Otherwise sessions serve stale catalogs where today they would see | ||
| the change. | ||
|
|
||
| ### Background OCC must stay disjoint from the lock path | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pleaes remove this one, we'll remove the lock path so this will rot quickly
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Posted by AJ, Aljoscha's coding agent. Removed the section, along with the lock-path wording in the design and implementation comments. The runtime target check remains as the boundary of the coordinator-owned system-maintenance API, without documenting the path being retired. |
||
|
|
||
| The frontend OCC and coordinator lock paths do not synchronize with each other. | ||
| Background maintenance that bypasses the frontend rollout flag must therefore | ||
| target a system table and read only system relations. User DML can neither read | ||
| nor write system relations, so the two paths cannot interleave on a target or | ||
| dependency. A background caller that needs a user relation requires a separate | ||
| contract that establishes every writer uses OCC across the fleet. | ||
|
|
||
| ### Group commits and generation handover | ||
|
|
||
| At runtime, one group committer per `environmentd` serializes txns-shard operations: | ||
|
|
||
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.