-- #6178: the image's fpcalc exits 3 ("Error decoding audio frame (End of -- file)") on every file shorter than the span it is asked for, so every track -- under two minutes failed both prints. The failure was stored as a verdict, -- and a verdict is not retried until the file changes. fpcalcReadToEnd now -- keeps those prints; clear the failures so the workers take them again. -- The AcoustID lookup's queue takes a track with no lookup row. DELETE FROM track_acoustid_lookups WHERE state = 'failed' AND detail LIKE '%Error decoding audio frame (End of file)%'; -- The fingerprint backfill's queue takes a track with no fingerprint row. A -- NULL chromaprint is always a verdict (an inconclusive attempt stores -- nothing), and on a track no longer than the span it was taken at it is this -- failure. A track that is damaged fails again and is stamped again. DELETE FROM track_fingerprints f USING tracks t WHERE f.track_id = t.id AND f.chromaprint IS NULL AND t.duration_ms <= f.chromaprint_length_sec * 1000;