HBASE-10844 Coprocessor failure during batchmutation leaves the memstore datastructs in an inconsistent state

Signed-off-by: Andrew Purtell <apurtell@apache.org>
This commit is contained in:
Nick Dimiduk 2015-08-13 16:19:26 -07:00 committed by Andrew Purtell
parent 45aafb25b7
commit ecba08829d
1 changed files with 8 additions and 1 deletions

View File

@ -1444,7 +1444,14 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
// close each store in parallel // close each store in parallel
for (final Store store : stores.values()) { for (final Store store : stores.values()) {
assert abort || store.getFlushableSize() == 0 || writestate.readOnly; long flushableSize = store.getFlushableSize();
if (!(abort || flushableSize == 0 || writestate.readOnly)) {
getRegionServerServices().abort("Assertion failed while closing store "
+ getRegionInfo().getRegionNameAsString() + " " + store
+ ". flushableSize expected=0, actual= " + flushableSize
+ ". Current memstoreSize=" + getMemstoreSize() + ". Maybe a coprocessor "
+ "operation failed and left the memstore in a partially updated state.", null);
}
completionService completionService
.submit(new Callable<Pair<byte[], Collection<StoreFile>>>() { .submit(new Callable<Pair<byte[], Collection<StoreFile>>>() {
@Override @Override