You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Duo Zhang (JIRA)" <ji...@apache.org> on 2017/01/04 09:27:58 UTC

[jira] [Comment Edited] (HBASE-17407) Correct update of maxFlushedSeqId in HRegion

    [ https://issues.apache.org/jira/browse/HBASE-17407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15797741#comment-15797741 ] 

Duo Zhang edited comment on HBASE-17407 at 1/4/17 9:27 AM:
-----------------------------------------------------------

We are not end users, we are developers, so we can see the internal stage of a transaction. Think of a typical transaction that, transfer 1000 USD from A to B.  No doubt you will minus 1000 from A, then plus 1000 to B, right? You will not minus 10000 from A, plus 1000 to B and then plus 9000 to A right?

What I mean is that, you can have intermediate state, but this does not mean it is a good idea to have a strange intermediate state. It is easy to make developers confusing and introduce bugs in the future. The assumption of the currect flush is that we will flush all data in memstore for a store, if the assumption is gone then the flow should also be changed. Putting an obviously incorrect value in lowestUnflushedSequenceIds is not acceptable.

And what do you think of the proposal I mentioned above? I do not think it changes the way you update WAL. Buy your finalizeFlush method does change the way we update WAL as you even add a new method to WAL...

Thanks.


was (Author: apache9):
We are not end users, we are developers, so we can see the internal stage of a transaction. Think of a typical transaction that, transfer 1000 USD from A to B.  No doubt you will minus 1000 from A, then plus 1000 to B, right? You will not minus 10000 from A, plus 1000 to B and then plus 9000 to A right?

What I mean is that, you can have intermediate state, but this does not mean it is a good idea to have a strange intermediate state. The value in  It is easy to make developers confusing and introduce bugs in the future. The assumption of the currect flush is that we will flush all data in memstore for a store, if the assumption is gone then the flow should also be changed. Putting an obviously incorrect value in lowestUnflushedSequenceIds is not acceptable.

And what do you think of the proposal I mentioned above? I do not think it changes the way you update WAL. Buy your finalizeFlush method does change the way we update WAL as you even add a new method to WAL...

Thanks.

> Correct update of maxFlushedSeqId in HRegion
> --------------------------------------------
>
>                 Key: HBASE-17407
>                 URL: https://issues.apache.org/jira/browse/HBASE-17407
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Eshcar Hillel
>
> The attribute maxFlushedSeqId in HRegion is used to track the max sequence id in the store files and is reported to HMaster. When flushing only part of the memstore content this value might be incorrect and may cause data loss.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)