Feature Description
Add RetryLayer::with_max_elapsed_time(Duration) to stop scheduling retries after a configured time budget.
Problem and Solution
Lance exposes client_retry_timeout and uses it for its native object store providers. Lance is adding retry support for OpenDAL-backed stores in:
lance-format/lance#8363
OpenDAL can map client_max_retries to RetryLayer::with_max_times, but currently has no equivalent for client_retry_timeout.
The elapsed-time primitive should first be implemented in BackON because BackON owns the retry state machine. OpenDAL can then expose it through RetryLayer and apply it consistently to normal and stateful operations.
The timer should start with the first attempt. After a retryable failure, BackON should stop scheduling retries when either the elapsed-time budget or max_times is reached. It should not cancel an attempt or sleep already in progress.
Additional Context
BackON implementation PR: Xuanwo/backon#241
OpenDAL implementation PR: #8111
Expected order:
- Implement and release the elapsed-time primitive in BackON.
- Expose it through OpenDAL
RetryLayer.
- Map Lance
client_retry_timeout to the OpenDAL API.
Are you willing to contribute to the development of this feature?
Feature Description
Add
RetryLayer::with_max_elapsed_time(Duration)to stop scheduling retries after a configured time budget.Problem and Solution
Lance exposes
client_retry_timeoutand uses it for its native object store providers. Lance is adding retry support for OpenDAL-backed stores in:lance-format/lance#8363
OpenDAL can map
client_max_retriestoRetryLayer::with_max_times, but currently has no equivalent forclient_retry_timeout.The elapsed-time primitive should first be implemented in BackON because BackON owns the retry state machine. OpenDAL can then expose it through
RetryLayerand apply it consistently to normal and stateful operations.The timer should start with the first attempt. After a retryable failure, BackON should stop scheduling retries when either the elapsed-time budget or
max_timesis reached. It should not cancel an attempt or sleep already in progress.Additional Context
BackON implementation PR: Xuanwo/backon#241
OpenDAL implementation PR: #8111
Expected order:
RetryLayer.client_retry_timeoutto the OpenDAL API.Are you willing to contribute to the development of this feature?