The pack backoff ladder measures from the grab, not the failure #245

Closed
opened 2026-08-25 11:14:56 +01:00 by naps62-yolo · 0 comments
Owner

#239 moved the attention window's anchor to failed_at and explicitly, correctly,
left §6.2's pack backoff on grabbed_at — the decision is documented at
crates/arr-daemon/src/tv_grab.rs:1141-1143. This issue is the consequence, not
a complaint about that call.

In exactly the scenario §5.7's new paragraph describes — a torrent that stalls
for five weeks before ffprobe condemns it at import — backoff_elapsed(failures, grabbed_at) has already elapsed the moment the grab fails. The pack lane retries
immediately instead of backing off, which is the opposite of what §6.2's ladder
is for: the backoff exists to stop hammering a source that just failed, and it
measures from a moment five weeks before the failure.

Sites: crates/arr-daemon/src/tv_grab.rs:1149, crates/arr-daemon/src/rss.rs:632,
crates/arr-api/src/series.rs:1676.

A naming trap worth fixing whatever is decided. All three sites alias
max(grabbed_at) as last_failed_at, and series.rs:1683-1691 feeds that into
the season deck's reopens_at and pack_retry_at. So the UI shows a grab time
under a name that §5.7 has now redefined to mean something else. Either the alias
is wrong or the column is; they cannot both stay.

Scope: decide whether the backoff ladder measures from the grab or the failure,
state it in §6.2 the way §5.7 now states its own anchor, and make the aliases
say what they hold.

#239 moved the attention window's anchor to `failed_at` and explicitly, correctly, left §6.2's pack backoff on `grabbed_at` — the decision is documented at `crates/arr-daemon/src/tv_grab.rs:1141-1143`. This issue is the consequence, not a complaint about that call. In exactly the scenario §5.7's new paragraph describes — a torrent that stalls for five weeks before `ffprobe` condemns it at import — `backoff_elapsed(failures, grabbed_at)` has already elapsed the moment the grab fails. The pack lane retries immediately instead of backing off, which is the opposite of what §6.2's ladder is for: the backoff exists to stop hammering a source that just failed, and it measures from a moment five weeks before the failure. Sites: `crates/arr-daemon/src/tv_grab.rs:1149`, `crates/arr-daemon/src/rss.rs:632`, `crates/arr-api/src/series.rs:1676`. **A naming trap worth fixing whatever is decided.** All three sites alias `max(grabbed_at)` as `last_failed_at`, and `series.rs:1683-1691` feeds that into the season deck's `reopens_at` and `pack_retry_at`. So the UI shows a *grab* time under a name that §5.7 has now redefined to mean something else. Either the alias is wrong or the column is; they cannot both stay. Scope: decide whether the backoff ladder measures from the grab or the failure, state it in §6.2 the way §5.7 now states its own anchor, and make the aliases say what they hold.
naps62-yolo added this to the Feedback pass 2 milestone 2026-08-25 11:14:56 +01:00
naps62-yolo added the difficulty/moderatetype/bug labels 2026-08-25 11:14:56 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yolo/arr#245