[
https://issues.apache.org/jira/browse/HBASE-7671?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13722148#comment-13722148
]
Liang Xie commented on HBASE-7671:
----------------------------------
After a discuss with my colleague fenghh, we realize that there's still a data
loss issue after HBASE-7671 in. e.g. just after the flush failure happened, a
HbaseAdmin.flush do internalFlushcache, due to "this.rsServices != null &&
this.rsServices.isAborted()" is not be set immediately in current thread, so
this flush op could be succesful and cause data loss. We fixes it with setting
the *closing* flag explicitly before throw exception, and added this flag
checking in "if (!writestate.flushing && writestate.writesEnabled)" statement.
> Flushing memstore again after last failure could cause data loss
> ----------------------------------------------------------------
>
> Key: HBASE-7671
> URL: https://issues.apache.org/jira/browse/HBASE-7671
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.94.6, 0.95.0
> Reporter: chunhui shen
> Assignee: chunhui shen
> Fix For: 0.94.6, 0.95.0
>
> Attachments: 7671-94.patch, HBASE-7671.patch, HBASE-7671v2.patch,
> HBASE-7671v3.patch, HBASE-7671v4.patch, HBASE-7671v5.patch
>
>
> See the following logs first:
> {code}
> 2013-01-23 18:58:38,801 INFO org.apache.hadoop.hbase.regionserver.Store:
> Flushed , sequenceid=9746535080, memsize=101.8m, into tmp file
> hdfs://dw77.kgb.sqa.cm4:9900/hbase-test3/writetest1/8dc14e35b4d7c0e481e0bb30849cff7d/.tmp/bebeeecc56364b6c8126cf1dc6782a25
> 2013-01-23 18:58:41,982 WARN org.apache.hadoop.hbase.regionserver.MemStore:
> Snapshot called again without clearing previous. Doing nothing. Another
> ongoing flush or did we fail last attempt?
> 2013-01-23 18:58:43,274 INFO org.apache.hadoop.hbase.regionserver.Store:
> Flushed , sequenceid=9746599334, memsize=101.8m, into tmp file
> hdfs://dw77.kgb.sqa.cm4:9900/hbase-test3/writetest1/8dc14e35b4d7c0e481e0bb30849cff7d/.tmp/4eede32dc469480bb3d469aaff332313
> {code}
> The first time memstore flush is failed when commitFile()(Logged the first
> edit above), then trigger server abort, but another flush is coming
> immediately(could caused by move/split,Logged the third edit above) and
> successful.
> For the same memstore's snapshot, we get different sequenceid, it causes data
> loss when replaying log edits
> See details from the unit test case in the patch
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira