[ 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