Skip to content

Timeout Configuration #623

Open
Open
@aajtodd

Description

@aajtodd

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

Describe the Feature

Today we expose several timeouts on HttpClientEngineConfig including:

  • socketReadTimeout - Timeout for each read to an underlying socket
  • socketWriteTimeout - Timeout for each write to an underlying socket
  • connectTimeout - The amount of time to wait for a connection to be established
  • connectionAcquireTimeout - The amount of time to wait for an already-established connection from a connection pool
  • connectionIdleTimeout - The amount of time before an idle connection should be reaped from a connection pool

An HTTP engine MAY not support all of these but to the extent possible they try to respect these settings.

We should extend configuration to cover:

  • tlsNegotiationTimeout - Upper limit on how long from the time a TLS handshake is allowed to take (client and server have fully negotiated ciphers and exchanged keys)
  • (maybe) timeToFirstHeader - Timeout after sending request to first header received (TTFH).
    • This may overlap sufficiently with socket read timeout to not be necessary. We should strive for less knobs not more and understand if we really need this
  • httpAttemptTimeout - Amount of time to wait for a single HTTP request to complete before giving up and timing out
  • apiCallTimeout - Amount of time for the client to complete the execution of an API call (including retries)

NOTE: Both httpAttemptTimeout and apiCallTimeout have no sensible default and would need to be opt-in only and set by a user
NOTE: Not all of these would necessarily be on the HTTP engine config (e.g. apiCallTimeout)

Is your Feature Request related to a problem?

Proposed Solution

Describe alternatives you've considered

Additional Context

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestno-auto-closureWe do not want this issue to be automatically closed.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions