The GitHub Actions job "Required Checks" on 
texera.git/backport/5647-retry-lakefs-health-check-on-startup-v1.2 has failed.
Run started by GitHub user Yicong-Huang (triggered by Yicong-Huang).

Head commit for run:
3000525fd34f8c06c0bd458b08f5569f9d00fa59 / Matthew B. <[email protected]>
fix(file-service): retry LakeFS health check on startup (#5647)

### What changes were proposed in this PR?
- `LakeFSStorageClient.healthCheck()` now retries the LakeFS health
check with **exponential backoff** before failing, so a transient
`Connection reset` during concurrent startup no longer crashes the
file-service.
- Retry policy: 5 attempts with the delay doubling each time, starting
at 200ms (200, 400, 800, 1600ms), capping total wait at ~3s.
- The retry logic is factored into a small, reusable `retryWithBackoff`
helper with an injectable `sleep` function so the backoff can be
unit-tested without real waiting.
- Each failed attempt logs a warning; if LakeFS is still unreachable
after all attempts, startup fails with a clear aggregated error
(preserving the last exception as the cause) so a genuine outage is
still surfaced.
- An `InterruptedException` while waiting restores the thread's
interrupt status and fails fast instead of retrying.
- Added `LakeFSStorageClientSpec` covering immediate success,
retry-then-success with doubling delays, give-up-after-max-attempts
(with cause preserved), and interrupt handling.

### Any related issues, documentation, discussions?
Closes: #5646

### How was this PR tested?
- Unit tests: `LakeFSStorageClientSpec` exercises the backoff behavior
(delay sequence, max-attempt failure, interrupt handling) using an
injected `sleep`.
- Reproduce the race: stop LakeFS, start file-service, then start LakeFS
within a few seconds; confirm file-service logs retry warnings and then
starts successfully instead of exiting.
- Regression with LakeFS already up: start file-service, confirm it
binds `:9092` and `curl http://127.0.0.1:9092/api/healthcheck` returns
HTTP 200.
- Compile: run `sbt "FileService/compile"` and expect `[success]`.

### Was this PR authored or co-authored using generative AI tooling?
Co-authored with Claude Opus 4.8 in compliance with ASF

(backported from commit 263093aaa54b34996013c717e4bdf7f8902230d0)

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

With regards,
GitHub Actions via GitBox

Reply via email to