From f66afa5227ad92cb812fa1947c9dc4fa0d33dbfc Mon Sep 17 00:00:00 2001 From: tedyu Date: Wed, 1 Nov 2017 09:26:26 -0700 Subject: [PATCH] HBASE-19065 HRegion#bulkLoadHFiles() should wait for concurrent Region#flush() to finish --- .../java/org/apache/hadoop/hbase/regionserver/HRegion.java | 4 ++++ 1 file changed, 4 insertions(+) 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 b7e21e42166..5cd27b86e97 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 @@ -5736,6 +5736,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi seqId = ((FlushResultImpl)fs).flushSequenceId; } else if (fs.getResult() == FlushResult.Result.CANNOT_FLUSH_MEMSTORE_EMPTY) { seqId = ((FlushResultImpl)fs).flushSequenceId; + } else if (fs.getResult() == FlushResult.Result.CANNOT_FLUSH) { + // CANNOT_FLUSH may mean that a flush is already on-going + // we need to wait for that flush to complete + waitForFlushes(); } else { throw new IOException("Could not bulk load with an assigned sequential ID because the "+ "flush didn't run. Reason for not flushing: " + ((FlushResultImpl)fs).failureReason);