You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2011/08/13 07:22:54 UTC

svn commit: r1157325 - in /hbase/branches/0.90: CHANGES.txt src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java

Author: stack
Date: Sat Aug 13 05:22:53 2011
New Revision: 1157325

URL: http://svn.apache.org/viewvc?rev=1157325&view=rev
Log:
HBASE-4196 TableRecordReader may skip first row of region

Modified:
    hbase/branches/0.90/CHANGES.txt
    hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java
    hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java

Modified: hbase/branches/0.90/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1157325&r1=1157324&r2=1157325&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Sat Aug 13 05:22:53 2011
@@ -6,6 +6,7 @@ Release 0.90.5 - Unreleased
    HBASE-4168  A client continues to try and connect to a powered down
                regionserver (Anirudh Todi)
    HBASE-4186  No region is added to HRegionServer.regionsInTransitionInRS
+   HBASE-4196  TableRecordReader may skip first row of region (Ming Ma)
   
 Release 0.90.4 - August 10, 2011
   BUG FIXES

Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java?rev=1157325&r1=1157324&r2=1157325&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java Sat Aug 13 05:22:53 2011
@@ -44,7 +44,7 @@ public class TableRecordReaderImpl {
 
   private byte [] startRow;
   private byte [] endRow;
-  private byte [] lastRow;
+  private byte [] lastSuccessfulRow;
   private Filter trrRowFilter;
   private ResultScanner scanner;
   private HTable htable;
@@ -175,16 +175,26 @@ public class TableRecordReaderImpl {
     Result result;
     try {
       result = this.scanner.next();
-    } catch (UnknownScannerException e) {
+    } catch (IOException e) {
       LOG.debug("recovered from " + StringUtils.stringifyException(e));
-      restart(lastRow);
-      this.scanner.next();    // skip presumed already mapped row
+      if (lastSuccessfulRow == null) {
+        LOG.warn("We are restarting the first next() invocation," +
+            " if your mapper's restarted a few other times like this" +
+            " then you should consider killing this job and investigate" +
+            " why it's taking so long.");
+      }
+      if (lastSuccessfulRow == null) {
+        restart(startRow);
+      } else {
+        restart(lastSuccessfulRow);
+        this.scanner.next();    // skip presumed already mapped row
+      }
       result = this.scanner.next();
     }
 
     if (result != null && result.size() > 0) {
       key.set(result.getRow());
-      lastRow = key.get();
+      lastSuccessfulRow = key.get();
       Writables.copyWritable(result, value);
       return true;
     }

Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java?rev=1157325&r1=1157324&r2=1157325&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java Sat Aug 13 05:22:53 2011
@@ -42,7 +42,7 @@ public class TableRecordReaderImpl {
   private ResultScanner scanner = null;
   private Scan scan = null;
   private HTable htable = null;
-  private byte[] lastRow = null;
+  private byte[] lastSuccessfulRow = null;
   private ImmutableBytesWritable key = null;
   private Result value = null;
 
@@ -132,20 +132,23 @@ public class TableRecordReaderImpl {
       value = this.scanner.next();
     } catch (IOException e) {
       LOG.debug("recovered from " + StringUtils.stringifyException(e));
-      if (lastRow == null) {
+      if (lastSuccessfulRow == null) {
         LOG.warn("We are restarting the first next() invocation," +
             " if your mapper's restarted a few other times like this" +
             " then you should consider killing this job and investigate" +
             " why it's taking so long.");
-        lastRow = scan.getStartRow();
       }
-      restart(lastRow);
-      scanner.next();    // skip presumed already mapped row
+      if (lastSuccessfulRow == null) {
+        restart(scan.getStartRow());
+      } else {
+        restart(lastSuccessfulRow);
+        scanner.next();    // skip presumed already mapped row
+      }
       value = scanner.next();
     }
     if (value != null && value.size() > 0) {
       key.set(value.getRow());
-      lastRow = key.get();
+      lastSuccessfulRow = key.get();
       return true;
     }
     return false;