remove entries from internal memory store when deleting outdated cache files from disc

This commit is contained in:
Martin Lippert
2023-07-24 11:16:00 +02:00
parent d82d28fb40
commit 91f7feb9d7
2 changed files with 15 additions and 0 deletions

View File

@@ -308,6 +308,7 @@ public class IndexCacheOnDisc implements IndexCache {
&& key.getIndexer().equals(cacheKey.getIndexer())
&& key.getCategory().equals(cacheKey.getCategory())) {
cacheFiles[i].delete();
this.stores.remove(key);
}
// cleanup old cache files without category information (pre 4.19.1 release)
else if (key != null && !key.equals(cacheKey)

View File

@@ -217,6 +217,20 @@ public class IndexCacheOnDiscTest {
assertFalse(Files.exists(tempDir.resolve(Paths.get(key1.toString() + ".json"))));
}
@Test
void testDoNotRetrieveOldCacheDataIfNewerVersionIsStored() throws Exception {
IndexCacheKey key1 = CACHE_KEY_VERSION_1;
IndexCacheKey key2 = new IndexCacheKey("someProject", "someIndexer", "someCategory", "2");
cache.store(key1, new String[0], new ArrayList<>(), null, CachedSymbol.class);
assertNotNull(cache.retrieve(key1, new String[0], CachedSymbol.class));
assertNull(cache.retrieve(key2, new String[0], CachedSymbol.class));
cache.store(key2, new String[0], new ArrayList<>(), null, CachedSymbol.class);
assertNull(cache.retrieve(key1, new String[0], CachedSymbol.class));
assertNotNull(cache.retrieve(key2, new String[0], CachedSymbol.class));
}
@Test
void testDeleteOldCacheFileFromPreviousReleasesIfNewOneIsStored() throws Exception {
IndexCacheKey key1 = new IndexCacheKey("someProject", "someIndexer", "", "2");