HBASE-11099 Two situations where we could open a region with smaller sequence number (Stephen Jiang)
This commit is contained in:
parent
7eefd0cbed
commit
d2ff1269f9
|
@ -3521,6 +3521,13 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver { //
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (firstSeqIdInLog == -1) {
|
||||||
|
firstSeqIdInLog = key.getLogSeqNum();
|
||||||
|
}
|
||||||
|
currentEditSeqId = key.getLogSeqNum();
|
||||||
|
currentReplaySeqId = (key.getOrigLogSeqNum() > 0) ?
|
||||||
|
key.getOrigLogSeqNum() : currentEditSeqId;
|
||||||
|
|
||||||
// Start coprocessor replay here. The coprocessor is for each WALEdit
|
// Start coprocessor replay here. The coprocessor is for each WALEdit
|
||||||
// instead of a KeyValue.
|
// instead of a KeyValue.
|
||||||
if (coprocessorHost != null) {
|
if (coprocessorHost != null) {
|
||||||
|
@ -3531,12 +3538,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver { //
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (firstSeqIdInLog == -1) {
|
|
||||||
firstSeqIdInLog = key.getLogSeqNum();
|
|
||||||
}
|
|
||||||
currentEditSeqId = key.getLogSeqNum();
|
|
||||||
currentReplaySeqId = (key.getOrigLogSeqNum() > 0) ?
|
|
||||||
key.getOrigLogSeqNum() : currentEditSeqId;
|
|
||||||
boolean flush = false;
|
boolean flush = false;
|
||||||
for (Cell cell: val.getCells()) {
|
for (Cell cell: val.getCells()) {
|
||||||
// Check this edit is for me. Also, guard against writing the special
|
// Check this edit is for me. Also, guard against writing the special
|
||||||
|
@ -3572,13 +3573,19 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver { //
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
CellUtil.setSequenceId(cell, currentReplaySeqId);
|
CellUtil.setSequenceId(cell, currentReplaySeqId);
|
||||||
|
|
||||||
// Once we are over the limit, restoreEdit will keep returning true to
|
// Once we are over the limit, restoreEdit will keep returning true to
|
||||||
// flush -- but don't flush until we've played all the kvs that make up
|
// flush -- but don't flush until we've played all the kvs that make up
|
||||||
// the WALEdit.
|
// the WALEdit.
|
||||||
|
if (!flush) {
|
||||||
flush = restoreEdit(store, cell);
|
flush = restoreEdit(store, cell);
|
||||||
|
}
|
||||||
|
|
||||||
editsCount++;
|
editsCount++;
|
||||||
}
|
}
|
||||||
if (flush) internalFlushcache(null, currentEditSeqId, status);
|
if (flush) {
|
||||||
|
internalFlushcache(null, currentEditSeqId, status);
|
||||||
|
}
|
||||||
|
|
||||||
if (coprocessorHost != null) {
|
if (coprocessorHost != null) {
|
||||||
coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);
|
coprocessorHost.postWALRestore(this.getRegionInfo(), key, val);
|
||||||
|
|
Loading…
Reference in New Issue