This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-4.1 in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-4.1 by this push: new 3a0936b61f Remove usages of Path#toFile() in the snapshot apparatus 3a0936b61f is described below commit 3a0936b61f63d8d7ab08bda411dd7d5963cafe0b Author: Caleb Rackliffe <calebrackli...@gmail.com> AuthorDate: Tue Jul 26 16:27:21 2022 -0500 Remove usages of Path#toFile() in the snapshot apparatus patch by Caleb Rackliffe; reviewed by David Capwell and Benedict Elliot Smith for CASSANDRA-17769 --- CHANGES.txt | 1 + checkstyle.xml | 13 +++++++++++++ src/java/org/apache/cassandra/db/Directories.java | 5 +++++ src/java/org/apache/cassandra/db/DisallowedDirectories.java | 3 +-- .../org/apache/cassandra/io/sstable/SSTableHeaderFix.java | 2 +- src/java/org/apache/cassandra/io/util/File.java | 3 ++- .../apache/cassandra/service/snapshot/SnapshotLoader.java | 2 +- .../apache/cassandra/service/snapshot/TableSnapshot.java | 2 +- src/java/org/apache/cassandra/utils/binlog/BinLog.java | 4 ++-- .../org/apache/cassandra/utils/binlog/ExternalArchiver.java | 2 +- 10 files changed, 28 insertions(+), 9 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 0aa25101a3..7bf2f35b33 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.1-alpha2 + * Remove usages of Path#toFile() in the snapshot apparatus (CASSANDRA-17769) * Fix Settings Virtual Table to update paxos_variant after startup and rename enable_uuid_sstable_identifiers to uuid_sstable_identifiers_enabled as per our config naming conventions (CASSANDRA-17738) * index_summary_resize_interval_in_minutes = -1 is equivalent to index_summary_resize_interval being set to null or diff --git a/checkstyle.xml b/checkstyle.xml index 9a71312e63..8e2f90ee22 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -54,6 +54,12 @@ <property name="idFormat" value="blockSystemClock"/> <property name="influenceFormat" value="0"/> </module> + + <module name="SuppressWithNearbyCommentFilter"> + <property name="commentFormat" value="checkstyle: permit this invocation"/> + <property name="idFormat" value="blockPathToFile"/> + <property name="influenceFormat" value="0"/> + </module> <module name="RegexpSinglelineJava"> <!-- block system time --> @@ -92,6 +98,13 @@ <module name="IllegalInstantiation"> <property name="classes" value="java.io.File,java.lang.Thread,java.util.concurrent.FutureTask,java.util.concurrent.Semaphore,java.util.concurrent.CountDownLatch,java.util.concurrent.ScheduledThreadPoolExecutor,java.util.concurrent.ThreadPoolExecutor,java.util.concurrent.ForkJoinPool,java.lang.OutOfMemoryError"/> </module> + + <module name="RegexpSinglelineJava"> + <!-- block Path#toFile() --> + <property name="id" value="blockPathToFile"/> + <property name="format" value="toFile\(\)"/> + <property name="message" value="Avoid Path#toFile(), as some implementations may not support it." /> + </module> </module> </module> diff --git a/src/java/org/apache/cassandra/db/Directories.java b/src/java/org/apache/cassandra/db/Directories.java index 8672377b75..079b294686 100644 --- a/src/java/org/apache/cassandra/db/Directories.java +++ b/src/java/org/apache/cassandra/db/Directories.java @@ -1197,6 +1197,11 @@ public class Directories return dir.name().startsWith(SECONDARY_INDEX_NAME_SEPARATOR); } + public static boolean isSecondaryIndexFolder(Path dir) + { + return PathUtils.filename(dir).startsWith(SECONDARY_INDEX_NAME_SEPARATOR); + } + public List<File> getCFDirectories() { List<File> result = new ArrayList<>(); diff --git a/src/java/org/apache/cassandra/db/DisallowedDirectories.java b/src/java/org/apache/cassandra/db/DisallowedDirectories.java index 968a08d8c7..e666bad785 100644 --- a/src/java/org/apache/cassandra/db/DisallowedDirectories.java +++ b/src/java/org/apache/cassandra/db/DisallowedDirectories.java @@ -20,7 +20,6 @@ package org.apache.cassandra.db; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collections; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.atomic.AtomicInteger; @@ -64,7 +63,7 @@ public class DisallowedDirectories implements DisallowedDirectoriesMBean private static Set<java.io.File> toJmx(Set<File> set) { - return set.stream().map(f -> f.toPath().toFile()).collect(Collectors.toSet()); + return set.stream().map(f -> f.toPath().toFile()).collect(Collectors.toSet()); // checkstyle: permit this invocation } public void markUnreadable(String path) diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableHeaderFix.java b/src/java/org/apache/cassandra/io/sstable/SSTableHeaderFix.java index 643a9dea1e..f78200a31f 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTableHeaderFix.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTableHeaderFix.java @@ -301,7 +301,7 @@ public abstract class SSTableHeaderFix .filter(p -> { try { - return Descriptor.fromFilenameWithComponent(new File(p.toFile())).right.type == Component.Type.DATA; + return Descriptor.fromFilenameWithComponent(new File(p)).right.type == Component.Type.DATA; } catch (IllegalArgumentException t) { diff --git a/src/java/org/apache/cassandra/io/util/File.java b/src/java/org/apache/cassandra/io/util/File.java index 23113b164b..71f8fc589e 100644 --- a/src/java/org/apache/cassandra/io/util/File.java +++ b/src/java/org/apache/cassandra/io/util/File.java @@ -699,7 +699,8 @@ public class File implements Comparable<File> public java.io.File toJavaIOFile() { - return path == null ? new java.io.File("") : path.toFile(); // checkstyle: permit this instantiation + return path == null ? new java.io.File("") // checkstyle: permit this instantiation + : path.toFile(); // checkstyle: permit this invocation } /** diff --git a/src/java/org/apache/cassandra/service/snapshot/SnapshotLoader.java b/src/java/org/apache/cassandra/service/snapshot/SnapshotLoader.java index 5f50937bf4..979904b111 100644 --- a/src/java/org/apache/cassandra/service/snapshot/SnapshotLoader.java +++ b/src/java/org/apache/cassandra/service/snapshot/SnapshotLoader.java @@ -80,7 +80,7 @@ public class SnapshotLoader extends SimpleFileVisitor<Path> { try { - if (dataDir.toFile().exists()) + if (new File(dataDir).exists()) { Files.walkFileTree(dataDir, Collections.EMPTY_SET, 5, this); } diff --git a/src/java/org/apache/cassandra/service/snapshot/TableSnapshot.java b/src/java/org/apache/cassandra/service/snapshot/TableSnapshot.java index 93fe2455c4..476bad7ab3 100644 --- a/src/java/org/apache/cassandra/service/snapshot/TableSnapshot.java +++ b/src/java/org/apache/cassandra/service/snapshot/TableSnapshot.java @@ -299,7 +299,7 @@ public class TableSnapshot { // Snapshot directory structure format is {data_dir}/snapshots/{snapshot_name}/{snapshot_file} Path liveDir = snapshotFilePath.getParent().getParent().getParent(); - if (Directories.isSecondaryIndexFolder(new File(snapshotFilePath.getParent().toFile()))) + if (Directories.isSecondaryIndexFolder(snapshotFilePath.getParent())) { // Snapshot file structure format is {data_dir}/snapshots/{snapshot_name}/.{index}/{sstable-component}.db liveDir = Paths.get(liveDir.getParent().toString(), snapshotFilePath.getParent().getFileName().toString()); diff --git a/src/java/org/apache/cassandra/utils/binlog/BinLog.java b/src/java/org/apache/cassandra/utils/binlog/BinLog.java index e2ae1ec09b..b4ec06673e 100644 --- a/src/java/org/apache/cassandra/utils/binlog/BinLog.java +++ b/src/java/org/apache/cassandra/utils/binlog/BinLog.java @@ -122,7 +122,7 @@ public class BinLog implements Runnable Preconditions.checkNotNull(path, "path was null"); Preconditions.checkNotNull(options.roll_cycle, "roll_cycle was null"); Preconditions.checkArgument(options.max_queue_weight > 0, "max_queue_weight must be > 0"); - SingleChronicleQueueBuilder builder = SingleChronicleQueueBuilder.single(path.toFile()); + SingleChronicleQueueBuilder builder = SingleChronicleQueueBuilder.single(path.toFile()); // checkstyle: permit this invocation builder.rollCycle(RollCycles.valueOf(options.roll_cycle)); sampleQueue = new WeightedQueue<>(options.max_queue_weight); @@ -430,7 +430,7 @@ public class BinLog implements Runnable if (cleanDirectory) { logger.info("Cleaning directory: {} as requested", path); - if (path.toFile().exists()) + if (new File(path).exists()) { Throwable error = cleanDirectory(new File(path), null); if (error != null) diff --git a/src/java/org/apache/cassandra/utils/binlog/ExternalArchiver.java b/src/java/org/apache/cassandra/utils/binlog/ExternalArchiver.java index 3f1d6bc51a..a6b233502e 100644 --- a/src/java/org/apache/cassandra/utils/binlog/ExternalArchiver.java +++ b/src/java/org/apache/cassandra/utils/binlog/ExternalArchiver.java @@ -154,7 +154,7 @@ public class ExternalArchiver implements BinLogArchiver { if (path == null) return; - for (File f : path.toFile().listFiles((f) -> f.isFile() && f.getName().endsWith(SingleChronicleQueue.SUFFIX))) + for (File f : path.toFile().listFiles((f) -> f.isFile() && f.getName().endsWith(SingleChronicleQueue.SUFFIX))) // checkstyle: permit this invocation { try { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org