fix(artwork): include ImportedAt in artwork cache key to invalidate stale cache

Reverts the Phase 3 UpdatedAt bump (which would change album.UpdatedAt
semantics) and instead includes album.ImportedAt in the artwork cache key
computation. Since ImportedAt is bumped to time.Now() on every album Put,
any Phase 3 correction naturally invalidates cached artwork that was
resolved mid-scan with incomplete folder data.
This commit is contained in:
Deluan 2026-05-04 07:10:27 -04:00
parent efdff0e2ce
commit 5bb4e90911
2 changed files with 10 additions and 6 deletions

View File

@ -53,10 +53,12 @@ func newAlbumArtworkReader(ctx context.Context, artwork *artwork, artID model.Ar
lib: lib,
}
a.cacheKey.artID = artID
if a.updatedAt != nil && a.updatedAt.After(al.UpdatedAt) {
a.cacheKey.lastUpdate = al.UpdatedAt
if a.updatedAt != nil && a.updatedAt.After(a.cacheKey.lastUpdate) {
a.cacheKey.lastUpdate = *a.updatedAt
} else {
a.cacheKey.lastUpdate = al.UpdatedAt
}
if al.ImportedAt.After(a.cacheKey.lastUpdate) {
a.cacheKey.lastUpdate = al.ImportedAt
}
return a, nil
}

View File

@ -105,10 +105,12 @@ func newDiscArtworkReader(ctx context.Context, a *artwork, artID model.ArtworkID
updatedAt: imagesUpdatedAt,
}
r.cacheKey.artID = artID
if r.updatedAt != nil && r.updatedAt.After(al.UpdatedAt) {
r.cacheKey.lastUpdate = al.UpdatedAt
if r.updatedAt != nil && r.updatedAt.After(r.cacheKey.lastUpdate) {
r.cacheKey.lastUpdate = *r.updatedAt
} else {
r.cacheKey.lastUpdate = al.UpdatedAt
}
if al.ImportedAt.After(r.cacheKey.lastUpdate) {
r.cacheKey.lastUpdate = al.ImportedAt
}
return r, nil
}