fix(edge): separate attempt-cleanup from terminal finish on fault-escalation (#867)#875
Conversation
…alation (#867) Fault-escalation auto-retry re-registered the concurrency slot then returned, which ran deferred finish() and tore down the successor attempt's running entry. Also make wait failures fall through to the escalation check (path was unreachable due to early publishFailed return). - Skip terminal finish on retry handoff (successor owns the slot) - Re-queue from started/failed and re-register cancel under lock before handoff - Regression: fail→retry stays registered; exhausted/disabled → single finish
|
Warning Review limit reached
Next review available in: 51 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Closes #867
Summary
ProcessExecutor fault-escalation auto-retry re-registered
e.running[runID]thenreturned, which fireddefer e.finish(runID)and deleted the successor attempt's concurrency slot. Attempt cleanup was conflated with terminal finish.Additionally, wait failures returned early via
publishFailedinside the session-retry loop, so the post-loop fault-escalation path was unreachable.Fix
finishwithterminalFinish; set false on escalation handoff so the successor owns terminal teardownbreakto the escalation check instead of terminalizing immediatelystarted/failed, re-register cancel under lock, then spawn successorrun()Test evidence
Regression coverage:
e.runningfinishis idempotentFiles
edge-server/internal/lifecycle/process_executor.goedge-server/internal/lifecycle/process_executor_test.go