Skip to content

Honor the configured Client HTTP timeout for ordinary requests #93

Description

@rmcdaniel

Problem

The Python client's ordinary request helper forwards timeout=None to HTTPX.
In HTTPX that disables timeouts, overriding the value configured by
Client(timeout=...). A stalled control request, completion or heartbeat can
therefore wait indefinitely instead of honoring the configured timeout.

Current main e02afd2 contains this path in
src/durable_workflow/client.py. Published 2.3.8 is the baseline to reproduce,
with wheel SHA256
273ed04cc36f35e6a1426933ba624a1ad8c843be05f3e1fadb07cbcaa67e0727.

This was found during cancellation recovery diagnosis.
It can cause a workflow slot to remain occupied by a pending request. It has
not been established as the cause of the earlier missed cancellation claim.

Acceptance

  • Reproduce against published 2.3.8 with a real isolated socket that accepts a
    request and stalls its response. Respect a configured finite timeout for
    ordinary control, discovery and worker requests.
  • Preserve explicit operation timeouts, including worker poll windows/grace
    margins when the configured default is shorter.
  • Keep retry policy, request identities, protocol 1.19 and payload behavior
    unchanged. A per-attempt timeout is not an end-to-end cancellation budget.
  • Run focused regression tests and normal CI, publish a patch, then verify the
    exact published wheel and affected SDK behavior with published Server.

Fix this as a stable transport defect without freezing or publishing the
unfinished cooperative-cancellation feature.

Activity

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