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 2021/03/05 10:07:48 UTC

[cassandra] 02/02: Expose data dirs to ColumnFamilyStoreMBean

This is an automated email from the ASF dual-hosted git repository.

marcuse pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 0979bda958a35f748b30ce102872278bfbafa578
Author: Stefan Miklosovic <st...@instaclustr.com>
AuthorDate: Fri Dec 11 15:43:45 2020 +0100

    Expose data dirs to ColumnFamilyStoreMBean
    
    Patch by Stefan Miklosovic; reviewed by marcuse for CASSANDRA-16335
---
 CHANGES.txt                                           |  1 +
 .../org/apache/cassandra/db/ColumnFamilyStore.java    | 11 +++++++++++
 .../apache/cassandra/db/ColumnFamilyStoreMBean.java   |  3 +++
 .../apache/cassandra/db/ColumnFamilyStoreTest.java    | 19 +++++++++++++++++++
 4 files changed, 34 insertions(+)

diff --git a/CHANGES.txt b/CHANGES.txt
index 24163c6..b7a7e74 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 4.0-beta5
+ * Expose data dirs to ColumnFamilyStoreMBean (CASSANDRA-16335)
  * Add possibility to copy SSTables in SSTableImporter instead of moving them (CASSANDRA-16407)
  * Fix DESCRIBE statement for CUSTOM indices with options (CASSANDRA-16482)
  * Fix cassandra-stress JMX connection (CASSANDRA-16473)
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 00aebc4..895746d 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -495,6 +495,17 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
         return directories;
     }
 
+    public List<String> getDataPaths() throws IOException
+    {
+        List<String> dataPaths = new ArrayList<>();
+        for (File dataPath : directories.getCFDirectories())
+        {
+            dataPaths.add(dataPath.getCanonicalPath());
+        }
+
+        return dataPaths;
+    }
+
     public SSTableMultiWriter createSSTableMultiWriter(Descriptor descriptor, long keyCount, long repairedAt, UUID pendingRepair, boolean isTransient, int sstableLevel, SerializationHeader header, LifecycleNewTracker lifecycleNewTracker)
     {
         MetadataCollector collector = new MetadataCollector(metadata().comparator).sstableLevel(sstableLevel);
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java b/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
index 23757ba..0360e34 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
@@ -17,6 +17,7 @@
  */
 package org.apache.cassandra.db;
 
+import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -248,4 +249,6 @@ public interface ColumnFamilyStoreMBean
      *         If all SSTables are correctly placed or the partitioner does not support splitting, it returns false.
      */
     public boolean hasMisplacedSSTables();
+
+    public List<String> getDataPaths() throws IOException;
 }
diff --git a/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java b/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
index 442072a..48ef580 100644
--- a/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
+++ b/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
@@ -22,8 +22,11 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Assume;
 import org.junit.BeforeClass;
@@ -459,6 +462,22 @@ public class ColumnFamilyStoreTest
     }
 
     @Test
+    public void testDataDirectoriesOfColumnFamily() throws Exception
+    {
+        ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(CF_STANDARD1);
+        List<String> dataPaths = cfs.getDataPaths();
+        Assert.assertFalse(dataPaths.isEmpty());
+
+        Path path = Paths.get(dataPaths.get(0));
+
+        String keyspace = path.getParent().getFileName().toString();
+        String table = path.getFileName().toString().split("-")[0];
+
+        Assert.assertEquals(cfs.getTableName(), table);
+        Assert.assertEquals(KEYSPACE1, keyspace);
+    }
+
+    @Test
     public void testScrubDataDirectories() throws Throwable
     {
         ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(CF_STANDARD1);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org