[
https://issues.apache.org/jira/browse/HBASE-19065?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16215737#comment-16215737
]
Josh Elser commented on HBASE-19065:
------------------------------------
{code}
} 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);
+ // CANNOT_FLUSH may mean that a flush is already on-going
+ // we need to wait for that flush to complete
+ waitForFlushes();
{code}
While this works now, the code would break if a new value was added to the
{{FlushResult}} enum. Would be good to explicitly check the return value, IMO.
> HRegion#bulkLoadHFiles() should wait for concurrent Region#flush() to finish
> ----------------------------------------------------------------------------
>
> Key: HBASE-19065
> URL: https://issues.apache.org/jira/browse/HBASE-19065
> Project: HBase
> Issue Type: Bug
> Reporter: Ted Yu
> Assignee: Ted Yu
> Attachments: 19065.v1.txt
>
>
> When I was debugging bulk load failure, I saw the following in region server
> log:
> {code}
> 2017-10-17 23:05:28,795 DEBUG
> [B.defaultRpcServer.handler=0,queue=0,port=16020] regionserver.HRegion: NOT
> flushing memstore for region mx_,
> f449669a8b0341e4edbd2ebdacc72094f449669a8b0341e4edbd2ebdacc7209420150711,1504909319142.52d496ba39036e0c2cc9522895ad438f.,
> flushing=true, writesEnabled=true
> 2017-10-17 23:05:28,796 ERROR
> [B.defaultRpcServer.handler=0,queue=0,port=16020]
> access.SecureBulkLoadEndpoint: Failed to complete bulk load
> java.io.IOException: Could not bulk load with an assigned sequential ID
> because the flush didn't run. Reason for not flushing: Not flushing since
> already flushing
> at
> org.apache.hadoop.hbase.regionserver.HRegion.bulkLoadHFiles(HRegion.java:5282)
> at
> org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint$1.run(SecureBulkLoadEndpoint.java:292)
> at
> org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint$1.run(SecureBulkLoadEndpoint.java:275)
> {code}
> There was concurrent flush which got misinterpreted by bulkLoadHFiles().
> HRegion#bulkLoadHFiles() should wait for the concurrent flush to complete.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)