Manual episode and season commands are never drained #132

Closed
opened 2026-08-23 16:53:07 +01:00 by naps62-yolo · 0 comments
Owner

AppState exposes next_episode_command, and POST /api/episodes/{id}/search
and POST /api/episodes/{id}/releases/{rid}/grab both enqueue onto that
channel. Nothing drains it: crates/arr-daemon/src/manual.rs imports only
MovieCommand and its loop calls next_movie_command alone.

Both endpoints therefore return 202 and drop the work on the floor. Manual
episode search has never functioned; the movie equivalent does, which is why it
was not noticed. #125 added SeasonCommand with the same shape, so the new
season deck endpoints have the same gap from the moment they merged.

Drain all three in the daemon's manual lane:

  • EpisodeCommand::Search / Grab — the episode targeted search and grab paths
    already exist in tv_grab.rs; this is wiring, not new selection logic.
  • SeasonCommand::Search / Grab — same, against the season-pack path and the
    season_releases table from #125.

The movie lane is the template, including how it reports failures. Cover each
command variant with a test that asserts the work actually happened, not just
that the command was accepted — the missing assertion is what let this survive.

`AppState` exposes `next_episode_command`, and `POST /api/episodes/{id}/search` and `POST /api/episodes/{id}/releases/{rid}/grab` both enqueue onto that channel. Nothing drains it: `crates/arr-daemon/src/manual.rs` imports only `MovieCommand` and its loop calls `next_movie_command` alone. Both endpoints therefore return 202 and drop the work on the floor. Manual episode search has never functioned; the movie equivalent does, which is why it was not noticed. #125 added `SeasonCommand` with the same shape, so the new season deck endpoints have the same gap from the moment they merged. Drain all three in the daemon's manual lane: - `EpisodeCommand::Search` / `Grab` — the episode targeted search and grab paths already exist in `tv_grab.rs`; this is wiring, not new selection logic. - `SeasonCommand::Search` / `Grab` — same, against the season-pack path and the `season_releases` table from #125. The movie lane is the template, including how it reports failures. Cover each command variant with a test that asserts the work actually happened, not just that the command was accepted — the missing assertion is what let this survive.
naps62-yolo added this to the TV tracking milestone 2026-08-23 16:53:07 +01:00
naps62-yolo added the phase/6-tvdifficulty/moderatearea/daemontype/bug labels 2026-08-23 16:53:07 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yolo/arr#132