Repository navigation
Conversation
Core only passed the runtime through to lang. The bridge builds it per client, as Dan's bridge does, so the crate drops sdk-core and pins sdk-rust c7.
A handle's writer went only with a Stream close, and closed writers' sequences stayed for the life of the process. A process-wide sequence needs no such record, and a named client Producer lets a caller fence its earlier self.
The protos still named a generic extension call, which Core no longer has.
A case runs on every backend that gives what it needs, so the native Store can join the suite where its guarantees hold (S125). Each case's comment says its guarantee.
The server gives the item its own offset, where Redis shares one entry. The order is the guarantee, not the shared offset.
A restarted client's earlier Records are real messages, not a failed attempt's (S120). The withdrawal rule stays for Workflow, Local Activity and Activity Producers, and the shared vectors have the client case.
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 makes the Stream runtime a plain object that the bridge builds per client, and shares one writer per Producer.
StreamExtensionhas no Core trait. A bridge callsStreamExtension::call(method, bytes), and an error hascode()anddetails(). The crate dropstemporalio-sdk-coreand pinstemporalio-commonat sdk-rust Brook c7b565c433.OpenWriteradds a handle,CloseWriteror the newFreeWriterreleases one, and the last one drops the writer.StreamExtension::free_writerreleases with no wait, for a finalizer.sequencefrom one counter per process, so a reopened writer goes on above its earlier batches with no map of closed writers.ids::named_client_producer_idmakesclient:<name>, a Producer id that a caller keeps across restarts. With the caller's epoch inattempt, a new incarnation fences the earlier one.Needs), so Jetty's native Store joins the same suites.Why?
Core only passed the runtime through to lang, and Dan's bridge shows the crate needs no Core hook. A
ClientStreamhandle's writer went only with a Stream close, and the closed-writer map grew for the life of the process.A client Producer's newer epoch fences its earlier epochs but writes no
Supersededitem and withdraws nothing (S120), since a restarted client's earlier Records are real messages. The Redis script, the memory Store and the reader rule agree, andtestdata/withdrawals.jsonhas the case. The withdrawal rule stays for Workflow, Local Activity and Activity Producers.How did you test it?
The suite runs on a standalone Redis 8.10, a three-primary cluster and the memory Store. New cases show two handles sharing a writer until the last one lets go, and a named client fencing its earlier self.
cargo fmt --checkandcargo clippy --workspace --tests -D warningspass, also with--no-default-features --features tls-aws-lc.