From 2d3b8444a682a0039c40230559bef8209ec63618 Mon Sep 17 00:00:00 2001 From: Nick Dimiduk Date: Thu, 13 Aug 2015 16:19:26 -0700 Subject: [PATCH] HBASE-10844 Coprocessor failure during batchmutation leaves the memstore datastructs in an inconsistent state Conflicts: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java --- .../main/java/org/apache/hadoop/hbase/regionserver/HRegion.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index c58303b..df7f977 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -1227,7 +1227,14 @@ public class HRegion implements HeapSize { // , Writable{ // close each store in parallel for (final Store store : stores.values()) { - assert abort? true: store.getFlushableSize() == 0; + long flushableSize = store.getFlushableSize(); + if (!(abort || flushableSize == 0)) { + 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 .submit(new Callable>>() { @Override -- 1.9.5 (Apple Git-50.3)