You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "rajeshbabu (JIRA)" <ji...@apache.org> on 2013/04/16 18:23:16 UTC

[jira] [Created] (HBASE-8353) ROOT/META regions are hanging if master restarted while CLOSING

rajeshbabu created HBASE-8353:
---------------------------------

             Summary: ROOT/META regions are hanging if master restarted while CLOSING
                 Key: HBASE-8353
                 URL: https://issues.apache.org/jira/browse/HBASE-8353
             Project: HBase
          Issue Type: Bug
          Components: Region Assignment
    Affects Versions: 0.94.6
            Reporter: rajeshbabu
            Assignee: rajeshbabu
            Priority: Critical
             Fix For: 0.94.7


ROOT/META are not getting assigned if master restarted while closing ROOT/META.
Lets suppose catalog table regions in M_ZK_REGION_CLOSING state during master initialization and then just we are adding the them to RIT and waiting for TM. {code}
        if (isOnDeadServer(regionInfo, deadServers) &&
            (data.getOrigin() == null || !serverManager.isServerOnline(data.getOrigin()))) {
          // If was on dead server, its closed now. Force to OFFLINE and this
          // will get it reassigned if appropriate
          forceOffline(regionInfo, data);
        } else {
          // Just insert region into RIT.
          // If this never updates the timeout will trigger new assignment
          regionsInTransition.put(encodedRegionName, new RegionState(
            regionInfo, RegionState.State.CLOSING,
            data.getStamp(), data.getOrigin()));
        }
{code}
isOnDeadServer always return false to ROOT/META because deadServers is null.

Even TM cannot close them properly because its not available in online regions since its not yet assigned.
{code}
    synchronized (this.regions) {
      // Check if this region is currently assigned
      if (!regions.containsKey(region)) {
        LOG.debug("Attempted to unassign region " +
          region.getRegionNameAsString() + " but it is not " +
          "currently assigned anywhere");
        return;
      }
    }
{code}

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