release / govulncheck (push) Successful in 16s
release / web (push) Successful in 1m26s
release / go (push) Successful in 1m43s
release / integration (push) Successful in 5m14s
release / android (push) Successful in 5m15s
release / Build signed APK (releases and dev) (push) Successful in 5m20s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 1m18s
release / Verify release artifacts (tag releases only) (push) Skipped
The image's fpcalc 1.5.1 exits 3 with "Error decoding audio frame (End of file)" whenever it reaches the end of a file before -length, at any length, so every track under two minutes failed both the AcoustID lookup print and the duplicate-detection print: 471 lookups and all 1,979 present short tracks' chromaprints. - runFingerprintTool returns the tool's stdout beside a toolExitError. - fpcalcReadToEnd keeps a partial exit whose stderr is the end of file and whose declared DURATION is within the span asked for. A damaged file that stops early declares more than it read, and still fails. - Migration 0097 clears the stored failures so the lookup worker and the fingerprint backfill take those tracks again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
21 lines
1.0 KiB
SQL
21 lines
1.0 KiB
SQL
-- #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;
|