The GitHub Actions job "Backport Auto Label" on 
texera.git/refactor/shared-retry-util has succeeded.
Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).

Head commit for run:
45d0401babf1ed41bb34e53ee94619ed80b5770a / Xinyuan Lin <[email protected]>
refactor(common): host one exponential-backoff retry in common/util

The same doubling-backoff loop was written three times: the async one in
amber's Utils, plus two structurally identical blocking copies in
LakeFSStorageClient and FileService that no module could share because
amber's Utils sits above them in the module graph.

Add a dependency-free `common/util` module with `RetryUtil.withBackoff` and
point both blocking copies at it. The util owns the attempt counting, the
doubling, what counts as transient (NonFatal), interrupt fail-fast with the
interrupt status restored, and the message wording; callers pass a verb-phrase
description and log retries through their own logger via the `onRetry` hook,
so warnings stay attributed to the caller.

This also fixes a hole in the LakeFS copy: its `sleep` call sat inside the
`catch` block, so an interrupt raised while waiting escaped raw with the
interrupt flag left cleared. FileService's copy already handled that; the
shared util keeps the better behavior for both.

The module is deliberately dependency-free -- everything depends on it, so
anything added there lands on every service's classpath. That is also why the
non-blocking variant stays in amber: it needs com.twitter:util-core, which
only amber declares. The two now cross-reference each other.

Closes #7095

Report URL: https://github.com/apache/texera/actions/runs/30517517383

With regards,
GitHub Actions via GitBox

Reply via email to