From ec9b7b9d376e9c98cedb3ad4eae90311923bc7bd Mon Sep 17 00:00:00 2001 From: Stefan Miklosovic Date: Mon, 15 Feb 2021 14:04:59 +0100 Subject: [PATCH] Expose StorageServiceMBean#getKeyspaceReplicationInfo (backport from 4.0 and CASSANDRA-13853) patch by Stefan Miklosovic; reviewed by Mick Semb Wever for CASSANDRA-16447 --- CHANGES.txt | 1 + .../org/apache/cassandra/service/StorageService.java | 10 ++++++++++ .../apache/cassandra/service/StorageServiceMBean.java | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index f7d8209eb8..a91f1cd314 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.11.11 + * Add StorageServiceMBean.getKeyspaceReplicationInfo(keyspaceName) (CASSANDRA-16447) * Upgrade jackson-databind to 2.9.10.8 (CASSANDRA-16462) Merged from 3.0: * Ignore trailing zeros in hint files (CASSANDRA-16523) diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index 65596aac76..a4cbf1ed43 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -84,6 +84,7 @@ import org.apache.cassandra.repair.*; import org.apache.cassandra.repair.messages.RepairOption; import org.apache.cassandra.schema.CompactionParams.TombstoneOption; import org.apache.cassandra.schema.KeyspaceMetadata; +import org.apache.cassandra.schema.ReplicationParams; import org.apache.cassandra.schema.SchemaKeyspace; import org.apache.cassandra.service.paxos.CommitVerbHandler; import org.apache.cassandra.service.paxos.PrepareVerbHandler; @@ -2996,6 +2997,15 @@ public class StorageService extends NotificationBroadcasterSupport implements IE return Schema.instance.getVersion().toString(); } + public String getKeyspaceReplicationInfo(String keyspaceName) + { + Keyspace keyspaceInstance = Schema.instance.getKeyspaceInstance(keyspaceName); + if (keyspaceInstance == null) + throw new IllegalArgumentException(); // ideally should never happen + ReplicationParams replicationParams = keyspaceInstance.getMetadata().params.replication; + return replicationParams.klass.getSimpleName() + " " + replicationParams.options.toString(); + } + public List getLeavingNodes() { return stringify(tokenMetadata.getLeavingEndpoints()); diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/java/org/apache/cassandra/service/StorageServiceMBean.java index 218cdd9fb9..233673ad30 100644 --- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java +++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java @@ -97,6 +97,11 @@ public interface StorageServiceMBean extends NotificationEmitter */ public String getSchemaVersion(); + /** + * Fetch the replication factor for a given keyspace. + * @return string representation of replication information + */ + public String getKeyspaceReplicationInfo(String keyspaceName); /** * Get the list of all data file locations from conf