Skip to content

Ensure response stream is only closed after request stream is closed #595

Description

@tillrohrmann

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:

  1. SDK finishes writing all response data
  2. SDK waits for the request stream to be fully closed (read until EOF or done)
  3. SDK closes the response stream

Action items

  • Review the HTTP handler code to check if the response stream can be closed before the request stream is fully consumed
  • If susceptible, implement a fix to drain the request stream before closing the response stream
  • Verify with testing

Activity

  1. tillrohrmann commented on Jun 1, 2026

    @tillrohrmann
    ContributorAuthor

    @slinkydeveloper do you know whether this is a problem for the Java SDK?

  2. slinkydeveloper commented on Jul 16, 2026

    @slinkydeveloper
    Contributor

    Most likely solved this one too when we moved to the new state machine, if you see it again reopen it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions