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 2009/10/03 07:07:34 UTC
svn commit: r821249 - in /hadoop/hbase/branches/0.20: CHANGES.txt
src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
src/java/org/apache/hadoop/hbase/regionserver/Store.java
Author: stack
Date: Sat Oct 3 05:07:34 2009
New Revision: 821249
URL: http://svn.apache.org/viewvc?rev=821249&view=rev
Log:
HBASE-1883 HRegion passes the wrong minSequenceNumber to doReconstructionLog
Modified:
hadoop/hbase/branches/0.20/CHANGES.txt
hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java
Modified: hadoop/hbase/branches/0.20/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/CHANGES.txt?rev=821249&r1=821248&r2=821249&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/CHANGES.txt (original)
+++ hadoop/hbase/branches/0.20/CHANGES.txt Sat Oct 3 05:07:34 2009
@@ -40,6 +40,8 @@
(Lars George via Stack)
HBASE-1869 IndexedTable delete fails when used in conjunction with RowLock()
(Keith Thomas via Stack)
+ HBASE-1883 HRegion passes the wrong minSequenceNumber to doReconstructionLog
+ (Clint Morgan via Stack)
IMPROVEMENTS
HBASE-1819 Update to 0.20.1 hadoop and zk 3.2.1
Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=821249&r1=821248&r2=821249&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java Sat Oct 3 05:07:34 2009
@@ -299,7 +299,8 @@
// Load in all the HStores.
long maxSeqId = -1;
- long minSeqId = Integer.MAX_VALUE;
+ long minSeqIdToRecover = Integer.MAX_VALUE;
+
for (HColumnDescriptor c : this.regionInfo.getTableDesc().getFamilies()) {
Store store = instantiateHStore(this.basedir, c, oldLogFile, reporter);
this.stores.put(c.getName(), store);
@@ -307,13 +308,15 @@
if (storeSeqId > maxSeqId) {
maxSeqId = storeSeqId;
}
- if (storeSeqId < minSeqId) {
- minSeqId = storeSeqId;
+
+ long storeSeqIdBeforeRecovery = store.getMaxSeqIdBeforeLogRecovery();
+ if (storeSeqIdBeforeRecovery < minSeqIdToRecover) {
+ minSeqIdToRecover = storeSeqIdBeforeRecovery;
}
}
// Play log if one. Delete when done.
- doReconstructionLog(oldLogFile, minSeqId, maxSeqId, reporter);
+ doReconstructionLog(oldLogFile, minSeqIdToRecover, maxSeqId, reporter);
if (fs.exists(oldLogFile)) {
if (LOG.isDebugEnabled()) {
LOG.debug("Deleting old log file: " + oldLogFile);
Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java?rev=821249&r1=821248&r2=821249&view=diff
==============================================================================
--- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java (original)
+++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/Store.java Sat Oct 3 05:07:34 2009
@@ -129,6 +129,9 @@
// reflected in the TreeMaps).
private volatile long maxSeqId = -1;
+ // The most-recent log-seq-id before we recovered from the LOG.
+ private long maxSeqIdBeforeLogRecovery = -1;
+
private final Path regionCompactionDir;
private final Object compactLock = new Object();
private final int compactionThreshold;
@@ -216,13 +219,15 @@
// loadStoreFiles calculates this.maxSeqId. as side-effect.
this.storefiles.putAll(loadStoreFiles());
+ this.maxSeqIdBeforeLogRecovery = this.maxSeqId;
+
// Do reconstruction log.
long newId = runReconstructionLog(reconstructionLog, this.maxSeqId, reporter);
if (newId != -1) {
this.maxSeqId = newId; // start with the log id we just recovered.
}
}
-
+
HColumnDescriptor getFamily() {
return this.family;
}
@@ -230,6 +235,10 @@
long getMaxSequenceId() {
return this.maxSeqId;
}
+
+ long getMaxSeqIdBeforeLogRecovery() {
+ return maxSeqIdBeforeLogRecovery;
+ }
/**
* @param tabledir