From a5ac1a3630cd6af4f09d35dd63d45d3150ba9e53 Mon Sep 17 00:00:00 2001 From: Hiram Chirino Date: Thu, 3 Oct 2013 10:33:17 -0400 Subject: [PATCH] Avoid logging ZooKeeper related exceptions during a replicated leveldb store shutdown. --- .../activemq/leveldb/replicated/ElectingLevelDBStore.scala | 3 ++- .../leveldb/replicated/groups/internal/ZooKeeperGroup.scala | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/replicated/ElectingLevelDBStore.scala b/activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/replicated/ElectingLevelDBStore.scala index decc506210..7c82dd5ad7 100644 --- a/activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/replicated/ElectingLevelDBStore.scala +++ b/activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/replicated/ElectingLevelDBStore.scala @@ -179,7 +179,7 @@ class ElectingLevelDBStore extends ProxyLevelDBStore { zk_client.start zk_client.waitForConnected(Timespan.parse("30s")) - val zk_group = ZooKeeperGroupFactory.create(zk_client, zkPath) + zk_group = ZooKeeperGroupFactory.create(zk_client, zkPath) val master_elector = new MasterElector(this) debug("Starting ZooKeeper group monitor") master_elector.start(zk_group) @@ -267,6 +267,7 @@ class ElectingLevelDBStore extends ProxyLevelDBStore { if(brokerService!=null){ brokerService.getManagementContext().unregisterMBean(objectName); } + zk_group.close zk_client.close() zk_client = null if( master_started.get() ) { diff --git a/activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/replicated/groups/internal/ZooKeeperGroup.scala b/activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/replicated/groups/internal/ZooKeeperGroup.scala index f416013867..a44cc22d76 100644 --- a/activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/replicated/groups/internal/ZooKeeperGroup.scala +++ b/activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/replicated/groups/internal/ZooKeeperGroup.scala @@ -70,13 +70,17 @@ class ZooKeeperGroup(val zk: ZKClient, val root: String) extends Group with Life create(root) tree.track(new NodeEventsListener[Array[Byte]]() { def onEvents(events: Collection[NodeEvent[Array[Byte]]]): Unit = { - fire_cluster_change + if( !closed ) + fire_cluster_change } }) fire_cluster_change + @volatile + var closed = false def close = this.synchronized { + closed = true joins.foreach { case (path, version) => try { zk.delete(member_path_prefix + path, version)