hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "rajeshbabu (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-6317) Master clean start up and Partially enabled tables make region assignment inconsistent.
Date Tue, 18 Sep 2012 02:10:07 GMT

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

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

@Jimmy,
bq.  I prefer to isolate the change in EnableTableHandler and don't touch AssignmentManager.
Ok.
One scenario need to handle in AssignmentManager,any way its done in HBASE-6381.
If all the tables are in ENABLING or ENABLING+DISABLED, we are considering it as a clean cluster
startup and assigning all ENABLING table regions again(which may cause inconsistency). This
has handled in HBASE-6381 by delegating ENABLING table regions assignment to EnableTableHanler.


bq. So we don't need to pass masterrestart around. We can update the region plan only in EnableTableHandler.
Select the regions not assigned and not in transition, we can update their plans in EnableTableHandler
only, But in BulkEnabler we dont know whether its roundroblinassignment or normal assignment.
Instead of passing masterrestart around, can we do like below in ETH to ignore roundrobinassignment?
(master restart flag is there in EnableTableHandler only)
{code}
    boolean roundRobinAssignment = false;
    if(this.masterRestart){
      roundRobinAssignment = this.server.getConfiguration().getBoolean(
          "hbase.master.enabletable.roundrobin", false);
      this.server.getConfiguration().setBoolean("hbase.master.enabletable.roundrobin", false);
    }
    BulkEnabler bd = new BulkEnabler(this.server, regions,
        countOfRegionsInTable);
    try {
      if (bd.bulkAssign()) {
        done = true;
      }
    } catch (InterruptedException e) {
      LOG.warn("Enable operation was interrupted when enabling table '"
        + this.tableNameStr + "'");
      // Preserve the interrupt.
      Thread.currentThread().interrupt();
    } finally {
      this.server.getConfiguration().setBoolean("hbase.master.enabletable.roundrobin",
          roundRobinAssignment);
    }
{code}


                
> 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.96.0, 0.92.3, 0.94.3
>
>         Attachments: HBASE-6317_94_3.patch, HBASE-6317_94.patch, HBASE-6317_trunk_2.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
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message