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

Lars Hofhansl commented on HBASE-7103:
--------------------------------------

I have very limited knowledge in this area... From looking through the code 
briefly, if two splits happen roughly the parallel the 2nd one will fail due to 
the split node already existing (see SplitTransaction.createNodeSplitting), but 
I then it already wrote STARTED_SPLITTING to its journal. Now the transaction 
is rolled back and will cleanup the ZK state.

So I guess we can either:
# track whether the split transaction failed because of a concurrent split, in 
that case we won't clean the zk state.
# First try to create a ZK node, then write to the journal.

Both cases probably have bad side effects and races.
                
> Need to fail split if SPLIT znode is deleted even before the split is 
> completed.
> --------------------------------------------------------------------------------
>
>                 Key: HBASE-7103
>                 URL: https://issues.apache.org/jira/browse/HBASE-7103
>             Project: HBase
>          Issue Type: Bug
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: ramkrishna.s.vasudevan
>             Fix For: 0.94.3, 0.96.0
>
>
> This came up after the following mail in dev list
> 'infinite loop of RS_ZK_REGION_SPLIT on .94.2'.
> The following is the reason for the problem
> The following steps happen
> -> Initially the parent region P1 starts splitting.
> -> The split is going on normally.
> -> Another split starts at the same time for the same region P1. (Not sure 
> why this started).
> -> Rollback happens seeing an already existing node.
> -> This node gets deleted in rollback and nodeDeleted Event starts.
> -> In nodeDeleted event the RIT for the region P1 gets deleted.
> -> Because of this there is no region in RIT.
> -> Now the first split gets over.  Here the problem is we try to transit the 
> node to SPLITTING to SPLIT. But the node even does not exist.
> But we don take any action on this.  We think it is successful.
> -> Because of this SplitRegionHandler never gets invoked.

--
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

Reply via email to