mirror of https://github.com/apache/kafka.git
KAFKA-19451: fix flaky test RemoteIndexCacheTest.testCacheEntryIsDeletedOnRemoval() (#20085)
**Problem Description** In the `RemoteIndexCache.cleanup()` method, the asynchronous invocation of `index.deleteIfExists()` may cause a conflict. When the `getIndexFileFromRemoteCacheDir()` method is executed, it utilizes `Files.walk()` to traverse all files in the directory path. If `index.deleteIfExists()` is triggered during this traversal, a `NoSuchFileException` will be thrown. **Solution** To resolve this issue, ensure that `index.deleteIfExists()` has been fully executed before invoking `getIndexFileFromRemoteCacheDir()`. Reviewers: Jun Rao <junrao@gmail.com>
This commit is contained in:
parent
a61a37f7dd
commit
6437135bc0
|
@ -331,6 +331,18 @@ public class RemoteIndexCacheTest {
|
|||
verify(cacheEntry.offsetIndex()).renameTo(any(File.class));
|
||||
verify(cacheEntry.txnIndex()).renameTo(any(File.class));
|
||||
|
||||
// wait until the delete method is invoked
|
||||
TestUtils.waitForCondition(() -> {
|
||||
try {
|
||||
verify(cacheEntry.timeIndex()).deleteIfExists();
|
||||
verify(cacheEntry.offsetIndex()).deleteIfExists();
|
||||
verify(cacheEntry.txnIndex()).deleteIfExists();
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}, "Failed to delete index file");
|
||||
|
||||
// verify no index files on disk
|
||||
assertFalse(getIndexFileFromRemoteCacheDir(cache, LogFileUtils.INDEX_FILE_SUFFIX).isPresent(),
|
||||
"Offset index file should not be present on disk at " + tpDir.toPath());
|
||||
|
|
Loading…
Reference in New Issue