Skip to content

fix(tunnel): retry heartbeat status persistence - #1412

Closed
HarpeLm wants to merge 1 commit into
yyjeqhc:mainfrom
HarpeLm:harpelm-retry-tunnel-persist
Closed

HarpeLm wants to merge 1 commit into
yyjeqhc:mainfrom
HarpeLm:harpelm-retry-tunnel-persist

Conversation

@HarpeLm

@HarpeLm HarpeLm commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Closes #1410

Retry transient persist_status() failures during the Server-owned Tunnel heartbeat with bounded 25/50/100 ms backoff. Persistent publication failures still terminate the profile with the explicit tunnel_health_unavailable diagnostic.

Validation:

  • cargo test --locked -p webcodex --lib server_tunnels
  • cargo fmt --all -- --check
  • git diff --check

Retry transient heartbeat publication failures with bounded backoff while preserving explicit failure after exhaustion.

swjnxyf commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator

Thank you for taking the time to investigate #1410 and contribute a focused fix. We appreciate the clear implementation and tests, especially the bounded-retry approach.

We've now merged #1411, which addresses the same heartbeat-persistence failure. We chose to keep an already-running Server-owned Tunnel alive through publication errors and retry on subsequent normal health ticks, rather than terminate the Tunnel if a short retry window is exhausted. This also adds deterministic contention/recovery coverage, including Windows CI.

Since the two changes overlap in the same code path, we'll close this PR as superseded by #1411 to avoid introducing competing recovery behaviors. Your short-backoff approach is still useful feedback and something we can revisit if needed.

Thanks again for contributing to WebCodex!

@swjnxyf swjnxyf closed this Nov 9, 2026
@HarpeLm
HarpeLm deleted the harpelm-retry-tunnel-persist branch November 9, 2026 16:38
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.

Embedded Tunnel goes terminal Failed (tunnel_health_unavailable) after a single readiness.json write error, no retry

2 participants