Fix ExtraFS Breaking SharedClusterSnapshotRestoreIT (#58026) (#58040)

If `ExtraFS` decides to put `extra0/0` into the indices folder
then the previous logic in this test would have interpreted the `0`
as shard `0` of index `extra0` and fail to list its contents (since it's a file
and not an actual shard directory).

=> simplified the logic to use actually referenced `IndexId` for iterating over indices
instead.
This commit is contained in:
Armin Braun 2020-06-12 15:27:48 +02:00 committed by GitHub
parent 01d8bb8cfa
commit 5662281562
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 15 deletions

View File

@ -93,7 +93,6 @@ import org.elasticsearch.script.StoredScriptsIT;
import org.elasticsearch.snapshots.mockstore.MockRepository;
import org.elasticsearch.threadpool.ThreadPool;
import java.io.IOException;
import java.nio.channels.SeekableByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
@ -1523,20 +1522,14 @@ public class SharedClusterSnapshotRestoreIT extends AbstractSnapshotIntegTestCas
.setWaitForCompletion(true).setIndices("test-idx-*").get();
logger.info("--> deleting shard level index file");
try (Stream<Path> files = Files.list(repo.resolve("indices"))) {
files.forEach(indexPath -> {
try {
final Path shardGen;
try (Stream<Path> shardFiles = Files.list(indexPath.resolve("0"))) {
shardGen = shardFiles
.filter(file -> file.getFileName().toString().startsWith(BlobStoreRepository.INDEX_FILE_PREFIX))
.findFirst().orElseThrow(() -> new AssertionError("Failed to find shard index blob"));
}
Files.delete(shardGen);
} catch (IOException e) {
throw new RuntimeException("Failed to delete expected file", e);
}
});
final Path indicesPath = repo.resolve("indices");
for (IndexId indexId : getRepositoryData("test-repo").getIndices().values()) {
final Path shardGen;
try (Stream<Path> shardFiles = Files.list(indicesPath.resolve(indexId.getId()).resolve("0"))) {
shardGen = shardFiles.filter(file -> file.getFileName().toString().startsWith(BlobStoreRepository.INDEX_FILE_PREFIX))
.findFirst().orElseThrow(() -> new AssertionError("Failed to find shard index blob"));
}
Files.delete(shardGen);
}
logger.info("--> creating another snapshot");