Skip to content

Adapt to timely #817: least()/retain_least(), inspect_core, Collection::delay - #874

Open
frankmcsherry wants to merge 3 commits into
dd-dynamic-stampsfrom
stamp-totalorder
Open

Adapt to timely #817: least()/retain_least(), inspect_core, Collection::delay#874
frankmcsherry wants to merge 3 commits into
dd-dynamic-stampsfrom
stamp-totalorder

Conversation

@frankmcsherry

Copy link
Copy Markdown
Member

Catches differential-dataflow up to timely #817 (InputCapability::time() requires TotalOrder and returns Option; retain is retain_least; for_each_time is for_each_stamp; inspect is inspect_core + inspect). Stacked on #855, whose retain_stamp adaptations this builds on; base is dd-dynamic-stamps so the diff is only these changes.

  • Collection::inspect_batch hands the closure the batch's Stamp<T> rather than a time, and Collection::inspect_container is inspect_core, both without bounds.
  • Collection::delay no longer uses timely's delay_batch (bounded, then removed). DD keeps the time in the data, so it delays each stamp element and each update's time through func and sends at once under the delayed CapabilitySet. Works for partial orders; the spurious T: Hash bound is gone.
  • capture's CDC progress operator holds a CapabilitySet from retain_stamp; upsert takes retain_least if present; the diagnostics loggers take least() if present, dropping a message with no capabilities.
  • dogsdogsdogs half_join inserts each element of retain_stamp.
  • Tests: the dynamic-stamps test asserts a singleton stamp explicitly; the wcoj partial-order test uses inspect.

Workspace tests pass against timely master at 11beaae3 (the Cargo.lock is not tracked, so the git dependency floats there on its own).

🤖 Generated with Claude Code

https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK

frankmcsherry and others added 3 commits September 11, 2026 16:15
- Collection::inspect_batch / inspect_container: T: TotalOrder (they reveal one time).
- capture.rs CDC progress operator: hold a CapabilitySet via retain_stamp.
- dogsdogsdogs half_join: insert each element of retain_stamp.
- tests: dynamic.rs asserts stamp().len() == 1 explicitly; wcoj_partial_order uses inspect.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK
…delay_batch

upsert and the diagnostics loggers take the time if present and drop the message
otherwise. Collection::delay no longer uses timely's delay_batch (now TotalOrder
bounded): it delays each stamp element and each update's time by func and sends
immediately under the delayed capability set, which works for partial orders.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK
…y_notify is gone

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012k2GSwxmvD2LvckkoXi6GK

@antiguru antiguru left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

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.

2 participants