You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by gd...@apache.org on 2010/08/18 21:15:16 UTC
svn commit: r986862 - in /cassandra/trunk/src/java/org/apache/cassandra/db:
ColumnFamilyStore.java Table.java
Author: gdusbabek
Date: Wed Aug 18 19:15:16 2010
New Revision: 986862
URL: http://svn.apache.org/viewvc?rev=986862&view=rev
Log:
make CFS responsible for registering/unregistering mbeans. patch by gdusbabek, reviewed by jbellis. CASSANDRA-1385
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=986862&r1=986861&r2=986862&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Wed Aug 18 19:15:16 2010
@@ -22,6 +22,7 @@ import java.io.File;
import java.io.FilenameFilter;
import java.io.IOError;
import java.io.IOException;
+import java.lang.management.ManagementFactory;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
@@ -65,6 +66,9 @@ import org.apache.cassandra.utils.FBUtil
import org.apache.cassandra.utils.LatencyTracker;
import org.apache.cassandra.utils.WrappedRunnable;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
public class ColumnFamilyStore implements ColumnFamilyStoreMBean
{
private static Logger logger_ = LoggerFactory.getLogger(ColumnFamilyStore.class);
@@ -113,6 +117,7 @@ public class ColumnFamilyStore implement
public final String table_;
public final String columnFamily_;
public final IPartitioner partitioner_;
+ private final String mbeanName;
private volatile int memtableSwitchCount = 0;
@@ -217,11 +222,39 @@ public class ColumnFamilyStore implement
indexedCfMetadata);
indexedColumns_.put(column, indexedCfs);
}
+
+ String type = this.partitioner_ instanceof LocalPartitioner ? "IndexColumnFamilies" : "ColumnFamilies";
+ mbeanName = "org.apache.cassandra.db:type=" + type + ",keyspace=" + table_ + ",columnfamily=" + columnFamily_;
+ try
+ {
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ ObjectName nameObj = new ObjectName(mbeanName);
+ mbs.registerMBean(this, nameObj);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
}
- String getMBeanName()
+ // called when dropping or renaming a CF. Performs mbean housekeeping.
+ void unregisterMBean()
{
- return "org.apache.cassandra.db:type=ColumnFamilyStores,keyspace=" + table_ + ",columnfamily=" + columnFamily_;
+ try
+ {
+
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ ObjectName nameObj = new ObjectName(mbeanName);
+ if (mbs.isRegistered(nameObj))
+ mbs.unregisterMBean(nameObj);
+ for (ColumnFamilyStore index : indexedColumns_.values())
+ index.unregisterMBean();
+ }
+ catch (Exception e)
+ {
+ // this shouldn't block anything.
+ logger_.warn(e.getMessage(), e);
+ }
}
public long getMinRowSize()
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java?rev=986862&r1=986861&r2=986862&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Table.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Wed Aug 18 19:15:16 2010
@@ -250,22 +250,10 @@ public class Table
}
}
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
for (CFMetaData cfm : new ArrayList<CFMetaData>(DatabaseDescriptor.getTableDefinition(table).cfMetaData().values()))
{
ColumnFamilyStore cfs = ColumnFamilyStore.createColumnFamilyStore(table, cfm.cfName);
columnFamilyStores.put(cfm.cfId, cfs);
- try
- {
- ObjectName mbeanName = new ObjectName(cfs.getMBeanName());
- if (mbs.isRegistered(mbeanName))
- mbs.unregisterMBean(mbeanName);
- mbs.registerMBean(cfs, mbeanName);
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
}
// check 10x as often as the lifetime, so we can exceed lifetime by 10% at most
@@ -303,19 +291,7 @@ 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);
- }
+ cfs.unregisterMBean();
}
}