You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2013/04/16 22:03:08 UTC

svn commit: r1468582 - /accumulo/branches/1.5/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java

Author: kturner
Date: Tue Apr 16 20:03:08 2013
New Revision: 1468582

URL: http://svn.apache.org/r1468582
Log:
ACCUMULO-1277 made master delay deleting lockless tserver nodes in zookeeper

Modified:
    accumulo/branches/1.5/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java

Modified: accumulo/branches/1.5/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java
URL: http://svn.apache.org/viewvc/accumulo/branches/1.5/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java?rev=1468582&r1=1468581&r2=1468582&view=diff
==============================================================================
--- accumulo/branches/1.5/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java (original)
+++ accumulo/branches/1.5/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java Tue Apr 16 20:03:08 2013
@@ -204,6 +204,7 @@ public class LiveTServerSet implements W
   
   // Map from tserver master service to server information
   private Map<String,TServerInfo> current = new HashMap<String,TServerInfo>();
+  private Map<String,Long> locklessServers = new HashMap<String,Long>();
 
   public LiveTServerSet(Instance instance, AccumuloConfiguration conf, Listener cback) {
     this.cback = cback;
@@ -238,6 +239,8 @@ public class LiveTServerSet implements W
       HashSet<String> all = new HashSet<String>(current.keySet());
       all.addAll(getZooCache().getChildren(path));
       
+      locklessServers.keySet().retainAll(all);
+
       for (String server : all) {
         checkServer(updates, doomed, path, server);
       }
@@ -275,8 +278,15 @@ public class LiveTServerSet implements W
         current.remove(server);
       }
       
-      deleteServerNode(path + "/" + server);
+      Long firstSeen = locklessServers.get(server);
+      if (firstSeen == null) {
+        locklessServers.put(server, System.currentTimeMillis());
+      } else if (System.currentTimeMillis() - firstSeen > 600000) {
+        deleteServerNode(path + "/" + server);
+        locklessServers.remove(server);
+      }
     } else {
+      locklessServers.remove(server);
       ServerServices services = new ServerServices(new String(lockData));
       InetSocketAddress client = services.getAddress(ServerServices.Service.TSERV_CLIENT);
       InetSocketAddress addr = AddressUtil.parseAddress(server, Property.TSERV_CLIENTPORT);