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

rajeshbabu commented on HBASE-6317:
-----------------------------------

bq.  ALREADY_OPENED is not handled by bulk assigned, is that true?
It has handled in trunk as part of HBASE-6012 but not in 94. We can back port 
to 94.

But this itself may not solve the problem because 
->during clean cluster start up if we set "hbase.master.startup.retainassign" 
to true we will call retainAssignment the regions may be assigned to same 
region servers before master restart other wise we will get bulk plan by round 
robin assignment and we may get different RS than RS before master restart( 
which will cause double assignment).
-> in case of failover also while recovering ENABLING tables
if "hbase.master.enabletable.roundrobin" set to true we will get different RS 
in bulk plan than RS before restart(double assignment again)
-> lets suppose some of ENABLING table regions are in transition during master 
startup they are not added to regionAssignments in regionStates then we will 
consider the regions also for assignment in EnableTableHandler which may cause 
double assignments.

{code}
    if (this.failover == false && this.enablingTables.size() > 0 && 
deadServers.isEmpty()) {
      this.failover = true;
    }
{code}
bq. Your patch may still not cover all scenarios, for example, if the 
deadServers is not empty
failover is false and deadServers not empty means its really clean cluster 
startup considering as failover will slow down master startup. If whole cluster 
is down then no need to worry about double assignments. 
If all the tables are in ENABLING state then failover is false and deadServers 
is empty then we can consider as failover and proceed startup.
                
> Master clean start up and Partially enabled tables make region assignment 
> inconsistent.
> ---------------------------------------------------------------------------------------
>
>                 Key: HBASE-6317
>                 URL: https://issues.apache.org/jira/browse/HBASE-6317
>             Project: HBase
>          Issue Type: Bug
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: rajeshbabu
>             Fix For: 0.92.2, 0.96.0, 0.94.2
>
>         Attachments: HBASE-6317_94.patch, HBASE-6317_94_3.patch
>
>
> If we have a  table in partially enabled state (ENABLING) then on HMaster 
> restart we treat it as a clean cluster start up and do a bulk assign.  
> Currently in 0.94 bulk assign will not handle ALREADY_OPENED scenarios and it 
> leads to region assignment problems.  Analysing more on this we found that we 
> have better way to handle these scenarios.
> {code}
> if (false == checkIfRegionBelongsToDisabled(regionInfo)
>             && false == checkIfRegionsBelongsToEnabling(regionInfo)) {
>           synchronized (this.regions) {
>             regions.put(regionInfo, regionLocation);
>             addToServers(regionLocation, regionInfo);
>           }
> {code}
> We dont add to regions map so that enable table handler can handle it.  But 
> as nothing is added to regions map we think it as a clean cluster start up.
> Will come up with a patch tomorrow.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to