Improved collector resilience to prevent noisy logs and unstable behavior when targets are unreachable.
What Was Done
Added per-target exponential backoff for failed targets.
Retry delay now increases with consecutive failures (with jitter) up to a max cap.
Unreachable targets are skipped until next_attempt_at, instead of being retried every poll cycle.
Added/kept per-target log throttling for repeated failures.
No traceback flood for expected connection failures.
Warning logs now include retry timing metadata (retry_in_seconds).
Ensured collector loop remains stable and cadence-aware.
Poll loop now compensates for collection runtime (sleep = poll_interval - elapsed) to reduce interval drift.
Added recovery and cleanup behavior.
On target recovery, collector logs recovery context (after_failures, downtime_seconds).
Stale failure state is cleaned when targets are removed.
Acceptance Criteria
✅ No log flood when a target is down.
✅ Collector continues polling healthy targets while failed targets are backoff-scheduled.
✅ Recovery works automatically when target comes back online.
Notes
This change is internal to collector behavior; no API schema changes required.
No DB migration required.
Implemented in commit(s) for **NX-102**.
## Goal Achieved
Improved collector resilience to prevent noisy logs and unstable behavior when targets are unreachable.
## What Was Done
- Added **per-target exponential backoff** for failed targets.
- Retry delay now increases with consecutive failures (with jitter) up to a max cap.
- Unreachable targets are skipped until `next_attempt_at`, instead of being retried every poll cycle.
- Added/kept **per-target log throttling** for repeated failures.
- No traceback flood for expected connection failures.
- Warning logs now include retry timing metadata (`retry_in_seconds`).
- Ensured collector loop remains stable and cadence-aware.
- Poll loop now compensates for collection runtime (`sleep = poll_interval - elapsed`) to reduce interval drift.
- Added recovery and cleanup behavior.
- On target recovery, collector logs recovery context (`after_failures`, `downtime_seconds`).
- Stale failure state is cleaned when targets are removed.
## Acceptance Criteria
- ✅ No log flood when a target is down.
- ✅ Collector continues polling healthy targets while failed targets are backoff-scheduled.
- ✅ Recovery works automatically when target comes back online.
## Notes
- This change is internal to collector behavior; no API schema changes required.
- No DB migration required.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Goal
Prevent noisy logs and unstable behavior when targets are unreachable.
Scope
Acceptance Criteria
Implemented in commit(s) for NX-102.
Goal Achieved
Improved collector resilience to prevent noisy logs and unstable behavior when targets are unreachable.
What Was Done
next_attempt_at, instead of being retried every poll cycle.retry_in_seconds).sleep = poll_interval - elapsed) to reduce interval drift.after_failures,downtime_seconds).Acceptance Criteria
Notes