Skip to content

Commit

Permalink
More Verbose Assertion in testSnapshotWithStuckNode (elastic#39893)
Browse files Browse the repository at this point in the history
* The test failure in elastic#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 elastic#39852
  • Loading branch information
original-brownbear committed Mar 11, 2019
1 parent f54924d commit ceac9bd
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 @@ -457,7 +457,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 @@ -493,8 +493,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 ceac9bd

Please sign in to comment.