Updated Branches:
  refs/heads/1.6.0-SNAPSHOT fd652ca0d -> f478737a1

ACCUMULO-1920 should not close shared zookeeper session; clean up unused 
watcher list

Conflicts:
        server/src/main/java/org/apache/accumulo/server/monitor/Monitor.java


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/f896c956
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/f896c956
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/f896c956

Branch: refs/heads/1.6.0-SNAPSHOT
Commit: f896c9566c9a483bcf7d074efce16b1f1c88ed2c
Parents: c175bd3
Author: Eric Newton <eric.new...@gmail.com>
Authored: Fri Nov 22 14:50:02 2013 -0500
Committer: Josh Elser <els...@apache.org>
Committed: Mon Nov 25 16:28:38 2013 -0500

----------------------------------------------------------------------
 .../accumulo/fate/zookeeper/ZooSession.java     | 14 -----------
 .../apache/accumulo/server/monitor/Monitor.java | 25 +++++++++-----------
 2 files changed, 11 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/f896c956/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooSession.java
----------------------------------------------------------------------
diff --git 
a/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooSession.java 
b/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooSession.java
index 4854d49..7258ff0 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooSession.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooSession.java
@@ -18,10 +18,7 @@ package org.apache.accumulo.fate.zookeeper;
 
 import java.io.IOException;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
 
 import org.apache.accumulo.fate.util.UtilWaitThread;
@@ -52,17 +49,7 @@ class ZooSession {
   
   private static class ZooWatcher implements Watcher {
     
-    private HashSet<Watcher> watchers = new HashSet<Watcher>();
-    
     public void process(WatchedEvent event) {
-      // copy the watchers, in case the callback adds() more Watchers
-      // otherwise we get a ConcurrentModificationException
-      Collection<Watcher> watcherCopy = new ArrayList<Watcher>(watchers);
-      
-      for (Watcher watcher : watcherCopy) {
-        watcher.process(event);
-      }
-      
       if (event.getState() == KeeperState.Expired) {
         log.debug("Session expired, state of current session : " + 
event.getState());
       }
@@ -131,7 +118,6 @@ class ZooSession {
     
     // a read-only session can use a session with authorizations, so cache a 
copy for it w/out auths
     String readOnlySessionKey = sessionKey(zooKeepers, timeout, null, null);
-    
     ZooSessionInfo zsi = sessions.get(sessionKey);
     if (zsi != null && zsi.zooKeeper.getState() == States.CLOSED) {
       if (auth != null && sessions.get(readOnlySessionKey) == zsi)

http://git-wip-us.apache.org/repos/asf/accumulo/blob/f896c956/server/src/main/java/org/apache/accumulo/server/monitor/Monitor.java
----------------------------------------------------------------------
diff --git 
a/server/src/main/java/org/apache/accumulo/server/monitor/Monitor.java 
b/server/src/main/java/org/apache/accumulo/server/monitor/Monitor.java
index fc2f98a..3904088 100644
--- a/server/src/main/java/org/apache/accumulo/server/monitor/Monitor.java
+++ b/server/src/main/java/org/apache/accumulo/server/monitor/Monitor.java
@@ -417,21 +417,18 @@ public class Monitor {
     try {
       // Read the gc location from its lock
       ZooReaderWriter zk = ZooReaderWriter.getInstance();
-      try {
-        String path = ZooUtil.getRoot(instance) + Constants.ZGC_LOCK;
-        List<String> locks = zk.getChildren(path, null);
-        if (locks != null && locks.size() > 0) {
-          Collections.sort(locks);
-          address = new ServerServices(new String(zk.getData(path + "/" + 
locks.get(0), null))).getAddress(Service.GC_CLIENT);
-          GCMonitorService.Client client = ThriftUtil.getClient(new 
GCMonitorService.Client.Factory(), address, config.getConfiguration());
-          try {
-            result = client.getStatus(Tracer.traceInfo(), 
SecurityConstants.getSystemCredentials());
-          } finally {
-            ThriftUtil.returnClient(client);
-          }
+
+      String path = ZooUtil.getRoot(instance) + Constants.ZGC_LOCK;
+      List<String> locks = zk.getChildren(path, null);
+      if (locks != null && locks.size() > 0) {
+        Collections.sort(locks);
+        address = new ServerServices(new String(zk.getData(path + "/" + 
locks.get(0), null))).getAddress(Service.GC_CLIENT);
+        GCMonitorService.Client client = ThriftUtil.getClient(new 
GCMonitorService.Client.Factory(), address, config.getConfiguration());
+        try {
+          result = client.getStatus(Tracer.traceInfo(), 
SecurityConstants.getSystemCredentials());
+        } finally {
+          ThriftUtil.returnClient(client);
         }
-      } finally {
-        zk.close();
       }
     } catch (Exception ex) {
       log.warn("Unable to contact the garbage collector at " + address, ex);

Reply via email to