-
Notifications
You must be signed in to change notification settings - Fork 111
Eventstream Refactor #816
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Eventstream Refactor #816
Conversation
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
…erminal status codes
…or debugging on posix systems
sfod
reviewed
Jul 2, 2025
sfod
reviewed
Jul 3, 2025
sfod
reviewed
Jul 3, 2025
sfod
reviewed
Jul 4, 2025
sfod
reviewed
Jul 17, 2025
sfod
reviewed
Jul 28, 2025
sfod
approved these changes
Aug 8, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Beside a couple trivial things, looks good
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 is a substantial rewrite of the eventstream RPC bindings as well as the code-generated clients for eventstream-based services. This refactor was necessitated by a variety of deadlock and race condition problems with the original implementation. The complexity of the original implementation made targeted fixes nearly impossible to apply.
Refactor Goals
Public API Changes
The original implementation exposed a large amount of unnecessary details in the public API. As part of the refactor, we make a number of publicly visible changes that, while technically breaking, we believe should not be user-impacting. We consider a change to be user-impacting if it is a breaking change to a type that is used during service client interaction.
We detail each change below as well as the reasoning why we think making this change is safe. Obviously, if you were mocking out any of these changed type contracts, then they will be breaking.
OperationModelContext
subclasses have been made private. These types were used internally by the service model and there is no reason to expose them.ContinuationCallbackData
removed. Was not user-facing. Unneeded in refactorClientContinuationHandler
- Public functions that were only for internal use have been removed. Class now useless but has been retained in case users were tracking operations by it.ClientContinuation
- Internal type that has been re-implemented as the private typeClientContinuationImpl
ClientOperation
GetOperationResult
API removed - This function could not be called externally without triggering exceptions by multi-consuming a promise's futureWithLaunchMode
- This function persists but no longer does anything useful. Launch mode is no longer relevant to the processing of operations and was a mistake to include originally.ClientConnection
- This is an internal type used by generated service clients.SendPing
andSendPingResponse
removed.Connect
andNewStream
signatures changed.Additional Changes
We now launch an EchoTest RPC server in CI and run a much larger suite of tests against it.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.