You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by se...@apache.org on 2013/07/16 01:31:11 UTC

svn commit: r1503522 - in /hbase/branches/0.94/src: main/java/org/apache/hadoop/hbase/mapreduce/ main/java/org/apache/hadoop/hbase/regionserver/ test/java/org/apache/hadoop/hbase/test/

Author: sershe
Date: Mon Jul 15 23:31:10 2013
New Revision: 1503522

URL: http://svn.apache.org/r1503522
Log:
HBASE-8935 IntegrationTestBigLinkedList fails under load on 0.94 due to some scan issues - add logging

Modified:
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java?rev=1503522&r1=1503521&r2=1503522&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java Mon Jul 15 23:31:10 2013
@@ -46,7 +46,7 @@ public class TableRecordReaderImpl {
   public static final String LOG_PER_ROW_COUNT
     = "hbase.mapreduce.log.scanner.rowcount";
 
-  static final Log LOG = LogFactory.getLog(TableRecordReader.class);
+  static final Log LOG = LogFactory.getLog(TableRecordReaderImpl.class);
 
   // HBASE_COUNTER_GROUP_NAME is the name of mapreduce counter group for HBase
   private static final String HBASE_COUNTER_GROUP_NAME =

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1503522&r1=1503521&r2=1503522&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Mon Jul 15 23:31:10 2013
@@ -2592,7 +2592,10 @@ public class HRegionServer implements HR
   public Result[] next(final long scannerId, int nbRows) throws IOException {
     String scannerName = String.valueOf(scannerId);
     RegionScanner s = this.scanners.get(scannerName);
-    if (s == null) throw new UnknownScannerException("Name: " + scannerName);
+    if (s == null) {
+      LOG.info("Client tried to access missing scanner " + scannerName);
+      throw new UnknownScannerException("Name: " + scannerName);
+    }
     try {
       checkOpen();
     } catch (IOException e) {
@@ -2610,7 +2613,13 @@ public class HRegionServer implements HR
     try {
       // Remove lease while its being processed in server; protects against case
       // where processing of request takes > lease expiration time.
-      lease = this.leases.removeLease(scannerName);
+      try {
+        lease = this.leases.removeLease(scannerName);
+      } catch (LeaseException le) {
+        // What it really means is that there's no such scanner.
+        LOG.info("Client tried to access missing scanner " + scannerName + " (no lease)");
+        throw new UnknownScannerException("No lease for " + scannerName + ": " + le.getMessage());
+      }
       List<Result> results = new ArrayList<Result>(nbRows);
       long currentScanResultSize = 0;
       List<KeyValue> values = new ArrayList<KeyValue>();

Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java?rev=1503522&r1=1503521&r2=1503522&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java Mon Jul 15 23:31:10 2013
@@ -52,9 +52,11 @@ import org.apache.hadoop.hbase.client.Pu
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.client.ResultScanner;
 import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.client.ScannerCallable;
 import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
 import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
 import org.apache.hadoop.hbase.mapreduce.TableMapper;
+import org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.NullWritable;
@@ -626,6 +628,8 @@ public class IntegrationTestBigLinkedLis
       job.setNumReduceTasks(numReducers);
       job.setJarByClass(getClass());
 
+      setJobScannerConf(job);
+
       Scan scan = new Scan();
       scan.addColumn(FAMILY_NAME, COLUMN_PREV);
       scan.setCaching(10000);
@@ -1081,4 +1085,10 @@ public class IntegrationTestBigLinkedLis
       job.getConfiguration().setInt(GENERATOR_WRAP_KEY, wrapMuplitplier.intValue());
     }
   }
+
+  private static void setJobScannerConf(Job job) {
+    // Make sure scanners log something useful to make debugging possible.
+    job.getConfiguration().setBoolean(ScannerCallable.LOG_SCANNER_ACTIVITY, true);
+    job.getConfiguration().setInt(TableRecordReaderImpl.LOG_PER_ROW_COUNT, 100000);
+  }
 }