feat: reconstruct remote instance history over the transport#85
Merged
Conversation
Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
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.
Adds distributed time-travel over the gRPC transport. A node hosting durable instances registers a
TimeTravelEndpoint(built from a durable Store + machine viaDurableTimeTravel), and any node can reconstruct an instance's state as of a recorded step by callingTransport.StateAt(node, id, step)— the owning node runsdurable.StateAtread-only and returns the marshaled historical snapshot, which the caller decodes withstate.UnmarshalSnapshotfor its own types. It is a thin consumer of the existing durable time-travel reader: no service is run, no actor re-instantiated, no effect dispatched. The time-travel service is a separate gRPC service from the actor transport (a node can serve either or both); it reuses the JSON codec and the transport's connection registry. Adds thedurabledependency to the transport module (which already carries the network deps); cluster core stays stdlib-only. Tested over bufconn: remote reconstruction at multiple steps, interceptor path, and error propagation. Coverage: transport 92.6 percent. Additive.