Docs: clarify Databricks retry_delay uses exponential backoff - #68622
Conversation
Document that retry_delay is the minimum wait between retryable attempts when using the default exponential backoff strategy.
|
Congratulations on your first Pull Request and welcome to the Apache Airflow community! If you have any issues or are unsure about any anything please check our Contributors' Guide
|
SameerMesiah97
left a comment
There was a problem hiding this comment.
Just did a quick search in the databricks provider and it appears you have covered all relevant docstring entries. I would check once more before merge just in case any were missed.
@SameerMesiah97 Thanks for the review. Re-searched the databricks provider for the old |
jroachgolf84
left a comment
There was a problem hiding this comment.
Re-reviewed all files, LGTM.
|
@sduvvuri26 — you've pushed commits since the changes-requested review, but the review threads are still open. If you've addressed the feedback, reply to confirm and nudge the reviewer for another look; otherwise let us know what's still outstanding. Thanks! See the PR quality criteria. Automated first-pass triage note drafted by an AI-assisted tool — may get things wrong; once addressed, a real Apache Airflow maintainer takes the next look. (why automated) Drafted-by: Claude Code (Opus 4.8); reviewed by @potiuk before posting |
|
@potiuk, I’ve addressed the feedback, resolved the review threads, and re-requested review. @jroachgolf84 has reviewed and approved the PR on Jun 20. |
|
cc @moomindani for Databricks team review |
moomindani
left a comment
There was a problem hiding this comment.
LGTM. Verified the claim rather than just the wording.
BaseDatabricksHook builds its default retry with wait_exponential(min=self.retry_delay, max=(2 ** retry_limit)), so the old "number of seconds between retries" was simply wrong. I reproduced your table against tenacity directly and it matches, including the counter-intuitive retry_delay=20 shape (20, 20, 20, 20, 20, 32, 64, 128 — the 2**(n-1) series clipped at the floor until it overtakes it) and the 2 ** retry_limit cap.
On completeness, which was the open question earlier: current main has 17 occurrences of the old phrasing across 8 files, and this PR updates all 8 with matching per-file counts. Nothing left behind — the remaining databricks_retry_delay: decimal lines are the type column, not stale prose.
Worth a rebase before merge; the branch is ~1.5 months behind main, though I confirmed no new retry_delay docstrings landed in the meantime, so nothing is newly stale.
Drafted-by: Claude Code (Opus 5)
potiuk
left a comment
There was a problem hiding this comment.
Docs and docstrings only, and the claim matches the implementation — databricks_base.py builds wait_exponential(min=self.retry_delay, max=2 ** retry_limit), so "minimum wait, exponential backoff, capped at 2 ** retry_limit" is accurate. Thanks.
Drafted-by: Claude Code (Opus 5); reviewed by @potiuk before posting
|
Awesome work, congrats on your first merged pull request! You are invited to check our Issue Tracker for additional contributions. |
Summary
Clarifies
databricks_retry_delay/retry_delaydocumentation for Databricks operators, hooks, and triggers that useBaseDatabricksHook.The previous docs described a fixed number of seconds between retries. The default implementation uses exponential backoff with
retry_delayas the minimum wait (wait_exponentialinBaseDatabricksHook).Note:
databricks_retry_argscan override the default wait strategy; this documents the default behavior only.Test plan
DatabricksSubmitRunOperatorand a broken connection (retry_delay=1andretry_delay=20)Manual verification
Observed retry timing with
DatabricksSubmitRunOperator, broken connection,databricks_retry_limit=10:retry_delay120This matches
wait_exponential(min=retry_delay, max=2**retry_limit)inBaseDatabricksHook.Was generative AI tooling used to co-author this PR?
Generated-by: Cursor following the guidelines
Important
🛠️ Maintainer triage note for @sduvvuri26 · by
@potiuk· 2026-06-17 18:53 UTCSome review feedback from
jroachgolf84is waiting on you:The ball is in your court — you've been assigned to this PR. Reply or push a fix in each thread, then mark them resolved.
Automated triage — may be imperfect; a maintainer takes the next look.