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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
