fix(server/m7-353): log retry-missing errors + tighten 404 test + cover EnrichRetryMissing
This commit is contained in:
@@ -144,7 +144,10 @@ func (e *Enricher) EnrichRetryMissing(ctx context.Context, limit int) (int, erro
|
||||
if ctx.Err() != nil {
|
||||
return processed, ctx.Err()
|
||||
}
|
||||
_ = e.EnrichAlbum(ctx, r.ID)
|
||||
if err := e.EnrichAlbum(ctx, r.ID); err != nil {
|
||||
e.logger.Warn("coverart: retry-missing entry failed",
|
||||
"album_id", uuidString(r.ID), "err", err)
|
||||
}
|
||||
processed++
|
||||
}
|
||||
return processed, nil
|
||||
|
||||
@@ -164,7 +164,9 @@ func TestEnrichAlbum_MBCAA404_RecordsNone(t *testing.T) {
|
||||
|
||||
f := NewFetcher(FetcherConfig{BaseURL: upstream.URL, UserAgent: "test", MinPeriod: 0, HTTPClient: upstream.Client()})
|
||||
e := NewEnricher(pool, discardLogger(), f, true)
|
||||
_ = e.EnrichAlbum(context.Background(), id)
|
||||
if err := e.EnrichAlbum(context.Background(), id); err != nil {
|
||||
t.Fatalf("enrich: %v", err)
|
||||
}
|
||||
|
||||
row, err := dbq.New(pool).GetAlbumWithFirstTrackPath(context.Background(), id)
|
||||
if err != nil {
|
||||
@@ -267,3 +269,62 @@ func TestRetryAlbum_DeletesMbcaaFileAndRefetches(t *testing.T) {
|
||||
t.Errorf("source after retry = %v, want 'mbcaa'", row.CoverArtSource)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEnrichRetryMissing_DrainsNullAndNone(t *testing.T) {
|
||||
pool := newPool(t)
|
||||
// Three albums:
|
||||
// id1: NULL source, has sidecar → drains, becomes 'sidecar'.
|
||||
// id2: 'none' source, has sidecar → cleared then drained, becomes 'sidecar'.
|
||||
// id3: 'sidecar' source already → NOT touched.
|
||||
id1, dir1 := seedAlbumWithTrack(t, pool, "RM1", "A", "")
|
||||
if err := os.WriteFile(filepath.Join(dir1, "cover.jpg"), []byte("c1"), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
id2, dir2 := seedAlbumWithTrack(t, pool, "RM2", "B", "")
|
||||
if err := os.WriteFile(filepath.Join(dir2, "cover.jpg"), []byte("c2"), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
none := "none"
|
||||
if err := dbq.New(pool).SetAlbumCover(context.Background(), dbq.SetAlbumCoverParams{
|
||||
ID: id2, Column2: "", CoverArtSource: &none,
|
||||
}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
id3, dir3 := seedAlbumWithTrack(t, pool, "RM3", "C", "")
|
||||
if err := os.WriteFile(filepath.Join(dir3, "cover.jpg"), []byte("c3"), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
sidecar := "sidecar"
|
||||
preservedPath := filepath.Join(dir3, "cover.jpg")
|
||||
if err := dbq.New(pool).SetAlbumCover(context.Background(), dbq.SetAlbumCoverParams{
|
||||
ID: id3, Column2: preservedPath, CoverArtSource: &sidecar,
|
||||
}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
e := NewEnricher(pool, discardLogger(), nil, false)
|
||||
processed, err := e.EnrichRetryMissing(context.Background(), 100)
|
||||
if err != nil {
|
||||
t.Fatalf("retry missing: %v", err)
|
||||
}
|
||||
if processed != 2 {
|
||||
t.Errorf("processed = %d, want 2 (id1 NULL + id2 'none'; id3 already 'sidecar' not touched)", processed)
|
||||
}
|
||||
|
||||
q := dbq.New(pool)
|
||||
for _, c := range []struct {
|
||||
id pgtype.UUID
|
||||
want string
|
||||
}{
|
||||
{id1, "sidecar"},
|
||||
{id2, "sidecar"},
|
||||
{id3, "sidecar"},
|
||||
} {
|
||||
row, _ := q.GetAlbumWithFirstTrackPath(context.Background(), c.id)
|
||||
if row.CoverArtSource == nil || *row.CoverArtSource != c.want {
|
||||
t.Errorf("album %v source = %v, want %q", c.id, row.CoverArtSource, c.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user