You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2022/07/27 20:14:40 UTC

[cassandra] branch cassandra-4.1 updated: Remove usages of Path#toFile() in the snapshot apparatus

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 <ca...@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-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org