Skip to content

Commit

Permalink
More Verbose Assertion in testSnapshotWithStuckNode (#39893) (#39928)
Browse files Browse the repository at this point in the history
* The test failure in #39852 is caused by a file in the initial repository when there should not be any
  * It seems that on a normal consistent file system no left-over file should exist ever here after the validation finishes and I can't reproduce or see any other path to a dangling file in the fresh respository
=> added a more verbose and strict assertion that will log what file is left over next time
* Relates #39852
  • Loading branch information
original-brownbear authored Mar 11, 2019
1 parent b0b0f66 commit 9eb4614
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
Expand Down Expand Up @@ -74,6 +75,18 @@ public static long getFailureCount(String repository) {
return failureCount;
}

public static void assertFileCount(Path dir, int expectedCount) throws IOException {
final List<Path> found = new ArrayList<>();
Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
found.add(file);
return FileVisitResult.CONTINUE;
}
});
assertEquals("Unexpected file count, found: [" + found + "].", expectedCount, found.size());
}

public static int numberOfFiles(Path dir) throws IOException {
final AtomicInteger count = new AtomicInteger();
Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,7 @@ public void testSnapshotWithStuckNode() throws Exception {
// Remove it from the list of available nodes
nodes.remove(blockedNode);

int numberOfFilesBeforeSnapshot = numberOfFiles(repo);
assertFileCount(repo, 0);
logger.info("--> snapshot");
client.admin().cluster().prepareCreateSnapshot("test-repo", "test-snap")
.setWaitForCompletion(false)
Expand Down Expand Up @@ -490,8 +490,7 @@ public void testSnapshotWithStuckNode() throws Exception {
// (2) index-0 (because we keep the previous version) and
// (3) index-latest
// (4) incompatible-snapshots
assertThat("not all files were deleted during snapshot cancellation",
numberOfFilesBeforeSnapshot, equalTo(numberOfFiles(repo) - 4));
assertFileCount(repo, 4);
logger.info("--> done");
}

Expand Down

0 comments on commit 9eb4614

Please sign in to comment.