You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ec...@apache.org on 2012/01/18 20:25:55 UTC

svn commit: r1233008 - in /incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server: master/ master/state/ master/tableOps/ monitor/servlets/ test/performance/thrift/

Author: ecn
Date: Wed Jan 18 19:25:55 2012
New Revision: 1233008

URL: http://svn.apache.org/viewvc?rev=1233008&view=rev
Log:
ACCUMULO-316 - found 2-3 leaks of batch scanners while trying to reproduce ACCUMULO-315 in a test

Modified:
    incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
    incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
    incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java
    incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/monitor/servlets/TablesServlet.java
    incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/test/performance/thrift/NullTserver.java

Modified: incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java?rev=1233008&r1=1233007&r2=1233008&view=diff
==============================================================================
--- incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java (original)
+++ incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java Wed Jan 18 19:25:55 2012
@@ -845,7 +845,7 @@ public class Master implements LiveTServ
       }
       for (TServerInstance instance : tserverSet.getCurrentServers()) {
         if (serverName.equals(instance.hostPort())) {
-          nextEvent.event("%s reported split %s, %s", serverName, new KeyExtent(split.newTablets.get(0)), new KeyExtent(split.newTablets.get(0)));
+          nextEvent.event("%s reported split %s, %s", serverName, new KeyExtent(split.newTablets.get(0)), new KeyExtent(split.newTablets.get(1)));
           return;
         }
       }
@@ -1654,6 +1654,7 @@ public class Master implements LiveTServ
         BatchDeleter bd = conn.createBatchDeleter(Constants.METADATA_TABLE_NAME, Constants.NO_AUTHS, 4, 100000l, 1000l, 4);
         bd.setRanges(Collections.singleton(deleteRange));
         bd.delete();
+        bd.close();
         
         if (followingTablet != null) {
           log.debug("Updating prevRow of " + followingTablet + " to " + range.getPrevEndRow());

Modified: incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java?rev=1233008&r1=1233007&r2=1233008&view=diff
==============================================================================
--- incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java (original)
+++ incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java Wed Jan 18 19:25:55 2012
@@ -80,8 +80,10 @@ public class MetaDataTableScanner implem
   }
   
   public void close() {
-    mdScanner.close();
-    iter = null;
+    if (iter != null) {
+      mdScanner.close();
+      iter = null;
+    }
   }
   
   public void finalize() {
@@ -90,15 +92,27 @@ public class MetaDataTableScanner implem
   
   @Override
   public boolean hasNext() {
+    if (iter == null)
+      return false;
     boolean result = iter.hasNext();
-    if (!result)
-      mdScanner.close();
+    if (!result) {
+      close();
+    }
     return result;
   }
   
   @Override
   public TabletLocationState next() {
-    return fetch();
+    try {
+      return fetch();
+    } catch (RuntimeException ex) {
+      try {
+        close();
+      } catch (Exception e) {
+        log.error(e, e);
+      }
+      throw ex;
+    }
   }
   
   public static TabletLocationState createTabletLocationState(SortedMap<Key,Value> decodedRow) {

Modified: incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java?rev=1233008&r1=1233007&r2=1233008&view=diff
==============================================================================
--- incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java (original)
+++ incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java Wed Jan 18 19:25:55 2012
@@ -123,16 +123,20 @@ class CleanUp extends MasterRepo {
       // look for other tables that references this tables files
       Connector conn = instance.getConnector(SecurityConstants.getSystemCredentials());
       BatchScanner bs = conn.createBatchScanner(Constants.METADATA_TABLE_NAME, Constants.NO_AUTHS, 8);
-      bs.setRanges(Collections.singleton(Constants.NON_ROOT_METADATA_KEYSPACE));
-      bs.fetchColumnFamily(Constants.METADATA_DATAFILE_COLUMN_FAMILY);
-      IteratorSetting cfg = new IteratorSetting(40, "grep", GrepIterator.class);
-      GrepIterator.setTerm(cfg, "../" + tableId + "/");
-      bs.addScanIterator(cfg);
-      
-      for (Entry<Key,Value> entry : bs) {
-        if (entry.getKey().getColumnQualifier().toString().startsWith("../" + tableId + "/")) {
-          refCount++;
+      try {
+        bs.setRanges(Collections.singleton(Constants.NON_ROOT_METADATA_KEYSPACE));
+        bs.fetchColumnFamily(Constants.METADATA_DATAFILE_COLUMN_FAMILY);
+        IteratorSetting cfg = new IteratorSetting(40, "grep", GrepIterator.class);
+        GrepIterator.setTerm(cfg, "../" + tableId + "/");
+        bs.addScanIterator(cfg);
+        
+        for (Entry<Key,Value> entry : bs) {
+          if (entry.getKey().getColumnQualifier().toString().startsWith("../" + tableId + "/")) {
+            refCount++;
+          }
         }
+      } finally {
+        bs.close();
       }
       
     } catch (Exception e) {

Modified: incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/monitor/servlets/TablesServlet.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/monitor/servlets/TablesServlet.java?rev=1233008&r1=1233007&r2=1233008&view=diff
==============================================================================
--- incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/monitor/servlets/TablesServlet.java (original)
+++ incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/monitor/servlets/TablesServlet.java Wed Jan 18 19:25:55 2012
@@ -153,6 +153,7 @@ public class TablesServlet extends Basic
         }
       }
     }
+    scanner.close();
     log.debug("Locs: " + locs);
     
     List<TabletServerStatus> tservers = new ArrayList<TabletServerStatus>();

Modified: incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/test/performance/thrift/NullTserver.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/test/performance/thrift/NullTserver.java?rev=1233008&r1=1233007&r2=1233008&view=diff
==============================================================================
--- incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/test/performance/thrift/NullTserver.java (original)
+++ incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/test/performance/thrift/NullTserver.java Wed Jan 18 19:25:55 2012
@@ -215,6 +215,7 @@ public class NullTserver {
       TabletLocationState next = s.next();
       assignments.add(new Assignment(next.extent, instance));
     }
+    s.close();
     // point them to this server
     MetaDataStateStore store = new MetaDataStateStore(null);
     store.setLocations(assignments);