Lidarr's metadata is keyed by MusicBrainz release group, but re-acquisition requested albums by release id, so every add came back "not found" (#5241).
5c19a916: albums.release_group_mbid (migration 0070), read from tags; tagReadVersion 3 re-reads tags on the next scan (#5242)
2b4e274b: tags.ReleaseGroupForRelease, a MusicBrainz release → group lookup on the shared rate limiter (#5243)
e509d7d5: the sweeper requests by group, the reconciler repoints stored release-id requests, and completion matches by release or group and needs a present track (#5244)
Lidarr's metadata is keyed by MusicBrainz release group, but re-acquisition requested albums by release id, so every add came back "not found" (#5241).
- 5c19a916: albums.release_group_mbid (migration 0070), read from tags; tagReadVersion 3 re-reads tags on the next scan (#5242)
- 2b4e274b: tags.ReleaseGroupForRelease, a MusicBrainz release → group lookup on the shared rate limiter (#5243)
- e509d7d5: the sweeper requests by group, the reconciler repoints stored release-id requests, and completion matches by release or group and needs a present track (#5244)
CI run 8533 is green on e509d7d5.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
albums.mbid is the release id (Picard's musicbrainz_albumid, one edition).
Lidarr names albums by release group, so re-acquisition and request
completion need that id too (#5241).
Migration 0070 adds albums.release_group_mbid (nullable, non-unique index:
several releases share a group). The scanner reads musicbrainz_releasegroupid
through extractReleaseGroupMBID, writes it on insert and heals it onto
existing rows when NULL. tagReadVersion goes to 3 so the next scan fills
it for the library already indexed, bound by tag reads (no ffprobe, no
decode).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ReleaseGroupForRelease asks /ws/2/release/<id>?inc=release-groups through
the registered MusicBrainz provider, so it shares that provider's client
and 1 req/s limiter with tag enrichment and respects its on/off switch.
ErrNotFound when switched off or MusicBrainz has no such release (an id
that is already a release group included); ErrTransient to retry.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lidarr's metadata is keyed by MusicBrainz release group, but re-acquisition
requested albums by their release id, so every add came back "not found".
- Sweeper requests an album by its tag-supplied release group, else the one
MusicBrainz names (cached onto the album). An album MusicBrainz cannot name
is skipped and counted, with no attempt spent.
- Reconciler: an add refused as not found re-reads the request's album id as
a release (library first, then MusicBrainz), rewrites the request to the
group and adds again. This repairs the requests already stored.
- Completion matches an album by release id or release group, and only once a
track of it is on disk, so a re-acquisition request no longer completes
against the row of the album it is trying to bring back.
Closes#5241.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Lidarr's metadata is keyed by MusicBrainz release group, but re-acquisition requested albums by release id, so every add came back "not found" (#5241).
5c19a916: albums.release_group_mbid (migration 0070), read from tags; tagReadVersion 3 re-reads tags on the next scan (#5242)2b4e274b: tags.ReleaseGroupForRelease, a MusicBrainz release → group lookup on the shared rate limiter (#5243)e509d7d5: the sweeper requests by group, the reconciler repoints stored release-id requests, and completion matches by release or group and needs a present track (#5244)CI run 8533 is green on
e509d7d5.🤖 Generated with Claude Code