From 2fd856de35de88681319ba5c2fa19307113887b2 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Tue, 12 May 2009 17:56:31 +0000 Subject: [PATCH] unregister mbean on flush. patch by daishi; reviewed by jbellis for CASSANDRA-157 git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@774002 13f79535-47bb-0310-9956-ffa450edef68 --- .../DebuggableThreadPoolExecutor.java | 17 ++++++++++++++++- src/java/org/apache/cassandra/db/Memtable.java | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java b/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java index 51faa4c05f1f..bd3d98547193 100644 --- a/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java +++ b/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java @@ -38,6 +38,7 @@ public class DebuggableThreadPoolExecutor extends ThreadPoolExecutor implements { private static Logger logger_ = Logger.getLogger(DebuggableThreadPoolExecutor.class); + private ObjectName objName; public DebuggableThreadPoolExecutor(String threadPoolName) { this(1, 1, Integer.MAX_VALUE, TimeUnit.SECONDS, new LinkedBlockingQueue(), new ThreadFactoryImpl(threadPoolName)); @@ -55,7 +56,21 @@ public DebuggableThreadPoolExecutor(int corePoolSize, MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); try { - mbs.registerMBean(this, new ObjectName("org.apache.cassandra.concurrent:type=" + threadFactory.id_)); + objName = new ObjectName("org.apache.cassandra.concurrent:type=" + threadFactory.id_); + mbs.registerMBean(this, objName); + } + catch (Exception e) + { + throw new RuntimeException(e); + } + } + + public void unregisterMBean() + { + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + try + { + mbs.unregisterMBean(objName); } catch (Exception e) { diff --git a/src/java/org/apache/cassandra/db/Memtable.java b/src/java/org/apache/cassandra/db/Memtable.java index 0c50de7bcb93..1add97ffaeab 100644 --- a/src/java/org/apache/cassandra/db/Memtable.java +++ b/src/java/org/apache/cassandra/db/Memtable.java @@ -384,6 +384,7 @@ protected void terminated() { flushQueuer.run(); } + this.unregisterMBean(); } public void flushWhenTerminated(final CommitLog.CommitLogContext cLogCtx)