This is an automated email from the ASF dual-hosted git repository. jonmeredith pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/trunk by this push: new 94580a2 Test Failure: org.apache.cassandra.db.lifecycle.LogTransactionTest.testGetTemporaryFilesSafeAfterObsoletion-cdc 94580a2 is described below commit 94580a272e77439e4150926a1bd1e723a36236e6 Author: Jon Meredith <jonmered...@apache.org> AuthorDate: Tue Mar 22 15:14:00 2022 -0600 Test Failure: org.apache.cassandra.db.lifecycle.LogTransactionTest.testGetTemporaryFilesSafeAfterObsoletion-cdc patch by Jon Meredith; reviewed by Josh McKenzie for CASSANDRA-17286 --- .../cassandra/db/lifecycle/LogTransactionTest.java | 28 +++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/test/unit/org/apache/cassandra/db/lifecycle/LogTransactionTest.java b/test/unit/org/apache/cassandra/db/lifecycle/LogTransactionTest.java index 133a51d..2e9cd42 100644 --- a/test/unit/org/apache/cassandra/db/lifecycle/LogTransactionTest.java +++ b/test/unit/org/apache/cassandra/db/lifecycle/LogTransactionTest.java @@ -19,7 +19,9 @@ package org.apache.cassandra.db.lifecycle; import java.io.IOException; +import java.io.UncheckedIOException; import java.nio.file.Files; +import java.nio.file.NoSuchFileException; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -30,6 +32,7 @@ import java.util.Set; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.stream.Collectors; +import java.util.stream.Stream; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; @@ -54,6 +57,7 @@ import org.apache.cassandra.io.util.FileHandle; import org.apache.cassandra.io.util.FileUtils; import org.apache.cassandra.schema.MockSchema; import org.apache.cassandra.utils.AlwaysPresentFilter; +import org.apache.cassandra.utils.Throwables; import org.apache.cassandra.utils.concurrent.AbstractTransactionalTest; import org.apache.cassandra.utils.concurrent.Transactional; @@ -1356,6 +1360,28 @@ public class LogTransactionTest extends AbstractTransactionalTest return listFiles(folder, Directories.FileType.FINAL); } + // Used by listFiles - this test is deliberately racing with files being + // removed and cleaned up, so it is possible that files are removed between listing and getting their + // canonical names, in which case they can be dropped from the stream. + private static Stream<File> toCanonicalIgnoringNotFound(File file) + { + try + { + return Stream.of(file.toCanonical()); + } + catch (UncheckedIOException io) + { + if (Throwables.isCausedBy(io, t -> t instanceof NoSuchFileException)) + { + return Stream.empty(); + } + else + { + throw io; + } + } + } + static Set<File> listFiles(File folder, Directories.FileType... types) { Collection<Directories.FileType> match = Arrays.asList(types); @@ -1363,7 +1389,7 @@ public class LogTransactionTest extends AbstractTransactionalTest (file, type) -> match.contains(type), Directories.OnTxnErr.IGNORE).list() .stream() - .map(File::toCanonical) + .flatMap(LogTransactionTest::toCanonicalIgnoringNotFound) .collect(Collectors.toSet()); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org