Skip to content

Conversation

@msrathore-db
Copy link
Contributor

Summary

Adds support for separate retry configuration for HTTP 429 (Too Many Requests) responses, allowing independent control of rate limit retry behavior from other retryable errors (408, 502, 503, 504).

Changes Made

  • New Connection Parameters:
  1. adbc.databricks.rate_limit_retry (boolean, default: true): Controls whether to retry HTTP 429 (TooManyRequests) responses. Can be disabled independently from other retry types
    Example: "adbc.databricks.rate_limit_retry": "false"
  2. adbc.databricks.rate_limit_retry_timeout (integer, default: 120 seconds): Maximum total time in seconds to retry HTTP 429 responses before failing. Set to 0 to retry indefinitely
    Separate from the TemporarilyUnavailableRetryTimeout (900 seconds for 408/502/503/504)
    Example: "adbc.databricks.rate_limit_retry_timeout": "60"

@msrathore-db msrathore-db marked this pull request as ready for review October 24, 2025 18:53
@github-actions github-actions bot added this to the ADBC Libraries 21 milestone Oct 24, 2025
@jadewang-db
Copy link
Contributor

possible to create some mock test on this?

Copy link
Contributor

@eric-wang-1990 eric-wang-1990 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems for other error we are already using exponential backoff, why do we need special case for 429? Just change the timeout seems not that valuable to me.
Does ODBC/JDBC has this special parameter for 429 retry?
Just wanna understand the context a little bit more.

@msrathore-db
Copy link
Contributor Author

It seems for other error we are already using exponential backoff, why do we need special case for 429? Just change the timeout seems not that valuable to me. Does ODBC/JDBC has this special parameter for 429 retry? Just wanna understand the context a little bit more.

ODBC has a param for rateLimitRetryTimeout specific to 429. The parameter refers to the number of seconds that the connector waits before stopping an attempt to retry an operation when the operation receives an HTTP 429 response with Retry-After headers.

@CurtHagenlocher CurtHagenlocher merged commit ef8c485 into apache:main Nov 5, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants