diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index f709b4fbe3..dee39de044 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -138,7 +138,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { assert metadata != null : "null metadata for " + table + ":" + columnFamilyName; table_ = table; - columnFamily_ = columnFamilyName; + columnFamily_ = columnFamilyName; this.metadata = metadata; this.partitioner_ = partitioner; fileIndexGenerator_.set(generation); @@ -251,6 +251,11 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean indexedColumns_.put(column, indexedCfs); } } + + String getMBeanName() + { + return "org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=" + table_ + ",columnfamily=" + columnFamily_; + } public long getMinRowSize() { diff --git a/src/java/org/apache/cassandra/db/Table.java b/src/java/org/apache/cassandra/db/Table.java index e06a60749d..2033a80957 100644 --- a/src/java/org/apache/cassandra/db/Table.java +++ b/src/java/org/apache/cassandra/db/Table.java @@ -246,7 +246,7 @@ public class Table columnFamilyStores.put(cfm.cfId, cfs); try { - ObjectName mbeanName = new ObjectName("org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=" + table + ",columnfamily=" + cfm.cfName); + ObjectName mbeanName = new ObjectName(cfs.getMBeanName()); if (mbs.isRegistered(mbeanName)) mbs.unregisterMBean(mbeanName); mbs.registerMBean(cfs, mbeanName); @@ -292,6 +292,20 @@ public class Table { throw new IOException(e); } + + // unregister mbean. + try + { + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + ObjectName mbeanName = new ObjectName(cfs.getMBeanName()); + if (mbs.isRegistered(mbeanName)) + mbs.unregisterMBean(mbeanName); + } + catch (Exception e) + { + // I'm not going to let this block the drop. + logger.warn(e.getMessage(), e); + } } }