Skip to content

Set connect_timeout and read_timeout on the storage client #7234

Open

Description

@alex-hunt-materialize

There is no exposed way to set a connect or read timeout on the storage client. The only per-attempt bound on HTTP requests is .with_attempt_timeout, which reqwest applies until the response body is fully received. That limits the total duration of a download, so it cannot detect a stalled read_object or write_object without also cutting off healthy large transfers.

Is your feature request related to a problem? Please describe.
We hit this in MaterializeInc/materialize#39983.

Describe the solution you'd like

  • add fn with_connect_timeout(...) and fn with_read_timeout(...) on the storage::client::ClientBuilder.
  • store the values in the gax::internal::ClientConfig.
  • plumb the values into reqwest::ClientBuilder::connect_timeout and reqwest::ClientBuilder::read_timeout in gax-internal::http::ReqwestClient.
  • and add tests.

These are client-level only, as reqwest applies them to pooled connections and does not support them per request.

Additional context
Related issues:
#2044 covers progress-based timeouts for uploads.
#4466 added attempt_timeout on the client.

Activity

  1. added
    type: feature request‘Nice-to-have’ improvement, new feature or different behavior or design.
    priority: p3Desirable enhancement or fix. May not be included in next release.
    on Oct 20, 2026
  2. added a commit that references this issue on Nov 2, 2026
    87f5e3c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

api: storageIssues related to the Cloud Storage API.priority: p3Desirable enhancement or fix. May not be included in next release.type: feature request‘Nice-to-have’ improvement, new feature or different behavior or design.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions