Repository navigation
Conversation
This was referenced Nov 10, 2026
moetemp
changed the base branch from
moe/brook/streams-combined-base
to
moe/streams/restart-base
November 13, 2026 04:20
moetemp
force-pushed
the
moe/brook/streams-combined
branch
from
November 13, 2026 04:20
3f6b88b to
5240dfe
Compare
A Stream id and a Producer id are opaque bytes, since the caller builds both. The Store requires a non-empty Producer id of at most 4096 bytes, and a kind.
A Store crate runs the suite on its own Store through `testing::TestStore`. The suite checks that a Producer id is stored as bytes, also with a field separator in it.
A bridge calls `StreamRuntime::call` with an operation name and the encoded request. The read path, the metrics and the shared service suite come with it, and the Store name is on each ref it builds.
The fence of a Producer is kept by kind and id, so the id of a run-based kind must hold its run. The shared suites now cover two runs, two kinds with one id, any text in an id and a close of each kind, so every Store keeps these rules.
moetemp
changed the base branch from
moe/streams/restart-base
to
moe/streams-crate-protos
November 13, 2026 06:42
The crate builds on the API files of the base branch, which follow temporalio/api#895 again.
The vendored Stream WIT follows temporalio/api#895, whose Workflow target omits append, close and read.
The repo has no Python, so the script is now an example of the Stream crate. It is still a second implementation, and it shares no code with the modules that the vector tests check.
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.
This PR adds a small
temporalio-streamscrate that runs the five Stream operations.SDK users call the code that nexgen generates from the Stream WIT. The SDK hands each call to a Store as an operation name and an encoded request. So a lang bridge needs one Rust call,
StreamRuntime::call(operation, request), which gives back the encoded response.The crate has the
Storetrait, a memory Store,StreamRuntime, and shared test suites that each Store runs. A higher epoch of a Producer fences a lower one, and a batch with a sequence is written once. A Workflow Producer can't append, because a Workflow appends through its Local Activity. Stream and Producer ids are opaque text, and the runtime refuses only an empty id or one over 4096 bytes.The base is the branch of temporalio#1733, which adds the Stream protos and WIT. The Redis Store is temporal-community/sdk-streams#8. The earlier, larger crate is kept at
backup/pr-228-streams-combined-1112.