From 837905787441f4f684a801ab2e26239b47bcbe7e Mon Sep 17 00:00:00 2001 From: Jonathan Gray Date: Fri, 29 Oct 2010 21:32:11 +0000 Subject: [PATCH] HBASE-3172 Reverse order of AssignmentManager and MetaNodeTracker in ZooKeeperWatcher git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1028911 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 2 ++ .../org/apache/hadoop/hbase/master/HMaster.java | 2 +- .../hadoop/hbase/zookeeper/ZooKeeperWatcher.java | 16 +++++++++++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 91446ab4b4a..c37848e1f6b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -624,6 +624,8 @@ Release 0.21.0 - Unreleased and assorted fixes around this + TestRollingRestart added HBASE-3160 Use more intelligent priorities for PriorityCompactionQueue (Nicolas Spiegelberg via Stack) + HBASE-3172 Reverse order of AssignmentManager and MetaNodeTracker in + ZooKeeperWatcher IMPROVEMENTS diff --git a/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index 6c306872eb2..0354f3036f2 100644 --- a/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -342,7 +342,7 @@ implements HMasterInterface, HMasterRegionInterface, MasterServices, Server { this.assignmentManager = new AssignmentManager(this, serverManager, this.catalogTracker, this.executorService); - zooKeeper.registerListener(assignmentManager); + zooKeeper.registerListenerFirst(assignmentManager); this.regionServerTracker = new RegionServerTracker(zooKeeper, this, this.serverManager); diff --git a/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java b/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java index cb3ba000037..fdb61a05f5c 100644 --- a/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java +++ b/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.java @@ -21,8 +21,9 @@ package org.apache.hadoop.hbase.zookeeper; import java.io.IOException; import java.util.HashSet; +import java.util.List; import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; +import java.util.concurrent.CopyOnWriteArrayList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -64,8 +65,8 @@ public class ZooKeeperWatcher implements Watcher, Abortable { private Abortable abortable; // listeners to be notified - private final Set listeners = - new CopyOnWriteArraySet(); + private final List listeners = + new CopyOnWriteArrayList(); // set of unassigned nodes watched private Set unassignedNodes = new HashSet(); @@ -200,6 +201,15 @@ public class ZooKeeperWatcher implements Watcher, Abortable { listeners.add(listener); } + /** + * Register the specified listener to receive ZooKeeper events and add it as + * the first in the list of current listeners. + * @param listener + */ + public void registerListenerFirst(ZooKeeperListener listener) { + listeners.add(0, listener); + } + /** * Get the connection to ZooKeeper. * @return connection reference to zookeeper