Repository navigation
Conversation
A reused sequence with other content was taken as a resend, so its Records went missing with no error. The dedupe entry keeps a content digest, and the shared vectors pin it for the server.
The owner check of a close needs the chain that the ref names. Jetty's Stores take the same signatures.
Anyone could close any Stream with a made-up result. The Store keeps the owner kind and run chain from the create and refuses other closes with stream_not_owner.
The crate's copy must equal the api's, so every SDK and the server read the same fields. It brings the close status, last-N reads, the page byte cap and the task tokens.
A reader could tell a failed close from a completed one only by parsing the failure. A caller's close gets COMPLETED, FAILED or CANCELED, and only the server's owner end sets TERMINATED or TIMED_OUT.
A chat UI paints the newest Records first, and a Workflow page must fit its marker. A last read skips Records that a newer Superseded item withdraws, and one larger Record still comes alone.
nexgen needs every proto field of a record declared or omitted, so the SDK regen failed on the a3 fields that Brook's Stores don't read. Two docs still described the Workflow buffer that S108 removed.
Owner
Author
|
Closing as stale. This layer is folded into the v5 tip, #41, and the upstream review uses a fresh series instead. Plan: https://www.notion.so/4048fc567738814990b7c796ac28fe3f |
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.
What changed?
This PR takes the Store parts of Dan's Jetty into Brook's Redis and memory Stores.
sequenceand other content fails withseq_divergent(bug 7).testdata/digests.jsonpins the digest for the server and every SDK.stream_not_owner. The Store write calls take the wholeStreamRef, as Jetty's do.780768b5) byte for byte. The Stream WIT marks the a3 fields that Brook's Stores don't read as@nexus.omit, so the SDK regen passes, and two stale docs of the Workflow buffer are fixed.close_status. A caller can't setTERMINATEDorTIMED_OUT. An auto close isCOMPLETED.lastreads the newest Records that pass the filter, oldest first, and skips withdrawn ones. Redis reads it withXREVRANGE.max_bytescaps a page's bytes. One larger Record still comes alone.Why?
Dan's Jetty does these better, and the comparison took them over (S112, S114 to S117). A reused sequence with other content went missing with no error, anyone could close any Stream, a reader could not tell a failed close from a canceled one, and a UI had no way to paint the newest Records first.
Redis can't tie a run to its run chain, so a run of another chain that holds the owner's ref can still close the Stream. The native server checks the run. The Redis docs list it under known limits.
How did you test it?
The Store suite runs on a standalone Redis 8.10, a three-primary cluster and the memory Store. New cases show a divergent resend, the owner check, the close status, a last read past a withdrawn Record and a capped page.
cargo fmt --checkandcargo clippy --workspace --tests -D warningspass.