HBASE-10014 HRegion#doMiniBatchMutation rollbacks the memstore even if there is nothing to rollback.
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1544080 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
bc7c3c7daa
commit
5ab799822e
|
@ -2133,7 +2133,7 @@ public class HRegion implements HeapSize { // , Writable{
|
|||
WALEdit walEdit = new WALEdit(isInReplay);
|
||||
MultiVersionConsistencyControl.WriteEntry w = null;
|
||||
long txid = 0;
|
||||
boolean walSyncSuccessful = false;
|
||||
boolean doRollBackMemstore = false;
|
||||
boolean locked = false;
|
||||
|
||||
/** Keep track of the locks we hold so we can release them in finally clause */
|
||||
|
@ -2294,6 +2294,7 @@ public class HRegion implements HeapSize { // , Writable{
|
|||
!= OperationStatusCode.NOT_RUN) {
|
||||
continue;
|
||||
}
|
||||
doRollBackMemstore = true; // If we have a failure, we need to clean what we wrote
|
||||
addedSize += applyFamilyMapToMemstore(familyMaps[i], w);
|
||||
}
|
||||
|
||||
|
@ -2372,7 +2373,7 @@ public class HRegion implements HeapSize { // , Writable{
|
|||
if (hasWalAppends) {
|
||||
syncOrDefer(txid, durability);
|
||||
}
|
||||
walSyncSuccessful = true;
|
||||
doRollBackMemstore = false;
|
||||
// calling the post CP hook for batch mutation
|
||||
if (!isInReplay && coprocessorHost != null) {
|
||||
MiniBatchOperationInProgress<Mutation> miniBatchOp =
|
||||
|
@ -2414,7 +2415,7 @@ public class HRegion implements HeapSize { // , Writable{
|
|||
} finally {
|
||||
|
||||
// if the wal sync was unsuccessful, remove keys from memstore
|
||||
if (!walSyncSuccessful) {
|
||||
if (doRollBackMemstore) {
|
||||
rollbackMemstore(batchOp, familyMaps, firstIndex, lastIndexExclusive);
|
||||
}
|
||||
if (w != null) mvcc.completeMemstoreInsert(w);
|
||||
|
|
Loading…
Reference in New Issue