accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bil...@apache.org
Subject svn commit: r1340090 - /accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReader.java
Date Fri, 18 May 2012 13:32:00 GMT
Author: billie
Date: Fri May 18 13:31:59 2012
New Revision: 1340090

URL: http://svn.apache.org/viewvc?rev=1340090&view=rev
Log:
ACCUMULO-587 added finalize for batch reader

Modified:
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReader.java

Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReader.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReader.java?rev=1340090&r1=1340089&r2=1340090&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReader.java
(original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReader.java
Fri May 18 13:31:59 2012
@@ -36,8 +36,10 @@ import org.apache.accumulo.core.data.Val
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.thrift.AuthInfo;
 import org.apache.accumulo.core.util.ArgumentChecker;
+import org.apache.log4j.Logger;
 
 public class TabletServerBatchReader extends ScannerOptions implements BatchScanner {
+  public static final Logger log = Logger.getLogger(TabletServerBatchReader.class);
   
   private String table;
   private int numThreads;
@@ -55,12 +57,17 @@ public class TabletServerBatchReader ext
     return nextBatchReaderInstance++;
   }
   
-  private int batchReaderInstance = getNextBatchReaderInstance();
+  private final int batchReaderInstance = getNextBatchReaderInstance();
   
-  private class BatchReaderThreadFactory implements ThreadFactory {
+  private static class BatchReaderThreadFactory implements ThreadFactory {
     
     private ThreadFactory dtf = Executors.defaultThreadFactory();
     private int threadNum = 1;
+    private final int batchReaderInstance;
+    
+    BatchReaderThreadFactory(int batchReaderInstance) {
+      this.batchReaderInstance = batchReaderInstance;
+    }
     
     public Thread newThread(Runnable r) {
       Thread thread = dtf.newThread(r);
@@ -80,7 +87,7 @@ public class TabletServerBatchReader ext
     this.numThreads = numQueryThreads;
     
     queryThreadPool = new ThreadPoolExecutor(numQueryThreads, numQueryThreads, 60, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>(),
-        new BatchReaderThreadFactory());
+        new BatchReaderThreadFactory(batchReaderInstance));
     
     ranges = null;
   }
@@ -89,6 +96,17 @@ public class TabletServerBatchReader ext
     queryThreadPool.shutdownNow();
   }
   
+  /**
+   * Warning: do not rely upon finalize to close this class. Finalize is not guaranteed to
be called.
+   */
+  @Override
+  protected void finalize() {
+    if (!queryThreadPool.isShutdown()) {
+      log.warn(TabletServerBatchReader.class.getSimpleName() + " not shutdown; did you forget
to call close()?");
+      close();
+    }
+  }
+  
   @Override
   public void setRanges(Collection<Range> ranges) {
     if (ranges == null || ranges.size() == 0) {



Mime
View raw message