v0.4.29: delete promoted cache file on first epoch-mismatch in publishIfNotCancelled
Some checks failed
build / build (push) Has been cancelled
Some checks failed
build / build (push) Has been cancelled
If wipeOnShutdown runs between download's pre-move epoch check and the atomic Files.move, the wipe's directory scan misses the just-promoted final file. The first epoch-mismatch branch in publishIfNotCancelled was returning without deleting, leaking the file across sessions. Delete on the first branch too.
This commit is contained in:
@@ -284,7 +284,13 @@ public final class VideoCache {
|
||||
* caller's work was cancelled and {@code path} has been cleaned up.
|
||||
*/
|
||||
private static boolean publishIfNotCancelled(String url, Path path, long startEpoch) {
|
||||
if (CACHE_EPOCH.get() != startEpoch) return false;
|
||||
// If the wipe ran between download's pre-move epoch check and Files.move, its
|
||||
// directory scan won't have seen this just-promoted file. We must delete it here,
|
||||
// not just bail — otherwise the freshly-moved final file leaks across shutdown.
|
||||
if (CACHE_EPOCH.get() != startEpoch) {
|
||||
try { Files.deleteIfExists(path); } catch (Throwable ignored) {}
|
||||
return false;
|
||||
}
|
||||
READY.put(url, path);
|
||||
if (CACHE_EPOCH.get() != startEpoch) {
|
||||
READY.remove(url, path);
|
||||
|
||||
Reference in New Issue
Block a user