You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Ted Yu (JIRA)" <ji...@apache.org> on 2017/05/24 15:38:04 UTC
[jira] [Created] (HBASE-18099) FlushSnapshotSubprocedure should
check the return value from Region#flush()
Ted Yu created HBASE-18099:
------------------------------
Summary: FlushSnapshotSubprocedure should check the return value from Region#flush()
Key: HBASE-18099
URL: https://issues.apache.org/jira/browse/HBASE-18099
Project: HBase
Issue Type: Bug
Reporter: Ted Yu
In the following thread:
http://search-hadoop.com/m/HBase/YGbbMXkeHlI9zo
Jacob described the scenario where data from certain region were missing in the snapshot.
Here was related region server log:
https://pastebin.com/1ECXjhRp
He pointed out that concurrent flush from MemStoreFlusher.1 thread was not initiated from the thread pool for snapshot.
In RegionSnapshotTask#call() method there is this:
{code}
region.flush(true);
{code}
The return value is not checked.
In HRegion#flushcache(), Result.CANNOT_FLUSH may be returned due to:
{code}
String msg = "Not flushing since "
+ (writestate.flushing ? "already flushing"
: "writes not enabled");
{code}
This implies that FlushSnapshotSubprocedure may incorrectly skip waiting for the concurrent flush to complete.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)