From f887a5a3af99c9e4c9d96eaf486d2a7828409fc1 Mon Sep 17 00:00:00 2001 From: tedyu Date: Tue, 24 Oct 2017 20:15:28 -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 e03e4dd0262..5cbf8895156 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 @@ -5729,6 +5729,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);