Skip to content

[Rust][Arrow] Report request-body loss before EOF #667

Description

@teodordelibasic-db

Summary

RequestBodyControl::wait_for_eof() currently treats disappearance of the request-body EOF sender as an indefinitely pending state. The surrounding rotation drain eventually reaches its overall deadline, which hides the actual request-body failure and consumes the remaining drain budget.

Report request-body loss explicitly when the body disappears before reaching EOF.

Scope

  • Change wait_for_eof() to distinguish clean EOF from loss of its signaling sender.
  • Return and propagate an explicit error when the request body disappears before EOF.
  • Surface the error through Arrow rotation and teardown without waiting for the overall drain deadline.
  • Preserve stable precedence for a real peer or protocol error already observed during the same teardown.
  • Keep the existing bounded drain behavior; this issue does not extend or configure the post-EOF drain duration.
  • Update rust/NEXT_CHANGELOG.md for the observable error-model improvement.

Acceptance criteria

  • Clean request EOF still completes successfully.
  • Dropping the request-body producer before EOF returns an explicit error promptly.
  • The dropped-body path does not remain pending until the rotation drain deadline.
  • Deterministic tests cover both clean EOF and sender disappearance.
  • Existing post-EOF ACK, peer-error, and drain-timeout tests continue to pass.

Relationship to other work

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions