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;