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