navidrome/utils/cache
Deluan cabbbc0ced fix(cache): re-fetch when a cache entry outlives its data file
fscache's Remove drops the in-memory entry, releases the lock, and only then
unlinks - blocking until every outstanding reader closes. A Get landing in that
window re-creates the file at the same path under a fresh entry, and the deferred
unlink deletes those new bytes. The entry survives pointing at nothing, and since
a present entry is treated as a hit, every later Get for that key returns ENOENT
for the rest of the process's life. Only a restart, which rebuilds the map from
disk, cleared it.

Get now drops such an entry and retries once, so a vanished data file costs one
re-fetch instead of poisoning the key permanently. This also covers a file
disappearing for reasons unrelated to that race, such as external deletion or a
restored backup.

Specs cover an in-process entry, one adopted at startup, and the deferred-removal
race itself.
2026-07-26 01:07:30 -04:00
..
benchmark_test.go chore: go fix 2026-05-28 22:13:05 -03:00
cache_suite_test.go Rename log.LevelCritical to log.LevelFatal 2022-12-21 14:53:36 -05:00
cached_http_client.go refactor: multiple syntax updates for Go 1.26 2026-05-19 18:02:36 -03:00
cached_http_client_test.go test: fix flaky tests in utils/cache (#5567) 2026-06-05 18:06:52 -04:00
file_caches.go fix(cache): re-fetch when a cache entry outlives its data file 2026-07-26 01:07:30 -04:00
file_caches_test.go fix(cache): re-fetch when a cache entry outlives its data file 2026-07-26 01:07:30 -04:00
file_haunter.go Remove potential integer overflow conversion uint64 -> int64 2024-08-22 19:28:22 -04:00
file_haunter_test.go test: fix flaky tests in utils/cache (#5567) 2026-06-05 18:06:52 -04:00
simple_cache.go fix: dedupe and cap concurrent lyrics plugin fetches (#5792) 2026-07-16 20:10:35 -04:00
simple_cache_test.go fix: dedupe and cap concurrent lyrics plugin fetches (#5792) 2026-07-16 20:10:35 -04:00
spread_fs.go fix(cache): don't serve partially-written transcodes after a crash (#5657) 2026-06-23 22:23:54 -04:00
spread_fs_test.go fix(cache): don't serve partially-written transcodes after a crash (#5657) 2026-06-23 22:23:54 -04:00