Skip to content

Conversation

bretambrose
Copy link
Contributor

@bretambrose bretambrose commented May 20, 2025

  • adds a termination callback for continuations. This gives us a safe, guaranteed (regardless of state) timepoint after which we know no further callbacks are possible for binding object lifetime management.
  • adds a termination callback for connections. This gives us a safe, guaranteed (regardless of state) timepoint after which we know no further callbacks are possible for binding object lifetime management.
  • relaxes the server-side constraint around stream id lookup for incoming messages. A terminate-stream-flagged message with no corresponding continuation is no longer a protocol error in order to support simultaneous close. This probably should have been done three years ago when Relax protocol constraint to work around client-side race condition #83 was applied.
  • Fixes a continuation table race condition where we could be iterating the continuation table while a concurrent execution path attempts to remove an entry
  • Eventstream connections now select and track their event loop before the connection attempt. This allows us to reason about whether or not a callback can concurrently overlap binding logic (ie, if we're in the event loop, it cannot).

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

…on receipt of an End-Stream flagged message
@sbSteveK
Copy link

Kinda unrelated to this PR but while we're here we may as well fix this comment:
Line 75 in event_stream_rpc_client.h * but it is still open, you must call aws_aws_event_stream_rpc_client_close()
should probably be pointing to aws_event_stream_rpc_client_connection_close

Copy link
Contributor

@sfod sfod left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bretambrose bretambrose merged commit 8f8f599 into main Jun 20, 2025
39 checks passed
@bretambrose bretambrose deleted the CppRefactorSupport branch June 20, 2025 21:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants