Problem
When handling an invocation over HTTP, the SDK must not close the HTTP response stream before the request stream has been fully consumed/closed. If the response stream is closed while the request stream is still open, the runtime may interpret this as a connection abort and log warnings or trigger unnecessary retries.
This issue was discovered and fixed in the TypeScript SDK: restatedev/sdk-typescript#651
Expected behavior
After the SDK has flushed all output to the response stream, it should drain/await the request stream EOS (end-of-stream) before closing the response stream. This ensures a clean HTTP connection lifecycle:
- SDK finishes writing all response data
- SDK waits for the request stream to be fully closed (read until EOF or done)
- SDK closes the response stream
Action items
Problem
When handling an invocation over HTTP, the SDK must not close the HTTP response stream before the request stream has been fully consumed/closed. If the response stream is closed while the request stream is still open, the runtime may interpret this as a connection abort and log warnings or trigger unnecessary retries.
This issue was discovered and fixed in the TypeScript SDK: restatedev/sdk-typescript#651
Expected behavior
After the SDK has flushed all output to the response stream, it should drain/await the request stream EOS (end-of-stream) before closing the response stream. This ensures a clean HTTP connection lifecycle:
Action items