hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jingyun Tian (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-18619) Should we add a postOpenDeployTasks after open splited or merged region?
Date Thu, 17 Aug 2017 10:29:02 GMT

     [ https://issues.apache.org/jira/browse/HBASE-18619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jingyun Tian updated HBASE-18619:
---------------------------------
    Description: 
I have a question that why we skip postOpenDeployTasks() when we not using zk for assignment?
{code:java}
      if (services != null) {
        try {
          if (useZKForAssignment) {
            // add 2nd daughter first (see HBASE-4335)
            services.postOpenDeployTasks(b);
          } else if (!services.reportRegionStateTransition(TransitionCode.SPLIT,
              parent.getRegionInfo(), hri_a, hri_b)) {
            throw new IOException("Failed to report split region to master: "
              + parent.getRegionInfo().getShortNameToLog());
          }
          // Should add it to OnlineRegions
          services.addToOnlineRegions(b);
          if (useZKForAssignment) {
            services.postOpenDeployTasks(a);
          }
          services.addToOnlineRegions(a);
        } catch (KeeperException ke) {
          throw new IOException(ke);
        }
      }
{code}
It causes a new splitted region or new merged region will not compact their reference files.
Then if the normalizer thread want to split this region, it will get stuck. 

{code:java}
public boolean canSplit() {
    this.lock.readLock().lock();
    try {
      // Not split-able if we find a reference store file present in the store.
      boolean result = !hasReferences();
      if (!result && LOG.isDebugEnabled()) {
        LOG.debug("Cannot split region due to reference files being there");
      }
      return result;
    } finally {
      this.lock.readLock().unlock();
    }
  }
{code}

According to the code, should we add a  services.postOpenDeployTasks after successfully _*reportRegionStateTransition(TransitionCode.SPLIT,
parent.getRegionInfo(), hri_a, hri_b)*_ ?






  was:
I have a question that why we skip postOpenDeployTasks() when we not using zk for assignment?
{code:java}
      if (services != null) {
        try {
          if (useZKForAssignment) {
            // add 2nd daughter first (see HBASE-4335)
            services.postOpenDeployTasks(b);
          } else if (!services.reportRegionStateTransition(TransitionCode.SPLIT,
              parent.getRegionInfo(), hri_a, hri_b)) {
            throw new IOException("Failed to report split region to master: "
              + parent.getRegionInfo().getShortNameToLog());
          }
          // Should add it to OnlineRegions
          services.addToOnlineRegions(b);
          if (useZKForAssignment) {
            services.postOpenDeployTasks(a);
          }
          services.addToOnlineRegions(a);
        } catch (KeeperException ke) {
          throw new IOException(ke);
        }
      }
{code}
It causes a new splitted region or new merged region will not compact their reference files.
Then if the normalizer thread want to split this region, it will get stuck. 

{code:java}
public boolean canSplit() {
    this.lock.readLock().lock();
    try {
      // Not split-able if we find a reference store file present in the store.
      boolean result = !hasReferences();
      if (!result && LOG.isDebugEnabled()) {
        LOG.debug("Cannot split region due to reference files being there");
      }
      return result;
    } finally {
      this.lock.readLock().unlock();
    }
  }
{code}

According to the code, should we add a  services.postOpenDeployTasks after successfully _*reportRegionStateTransition(TransitionCode.SPLIT,
parent.getRegionInfo(), hri_a, hri_b)*_







> Should we add a postOpenDeployTasks after open splited or merged region?
> ------------------------------------------------------------------------
>
>                 Key: HBASE-18619
>                 URL: https://issues.apache.org/jira/browse/HBASE-18619
>             Project: HBase
>          Issue Type: Bug
>          Components: Region Assignment
>    Affects Versions: 0.98.6, 1.4.0, 1.2.6, 1.1.11
>            Reporter: Jingyun Tian
>            Assignee: Jingyun Tian
>
> I have a question that why we skip postOpenDeployTasks() when we not using zk for assignment?
> {code:java}
>       if (services != null) {
>         try {
>           if (useZKForAssignment) {
>             // add 2nd daughter first (see HBASE-4335)
>             services.postOpenDeployTasks(b);
>           } else if (!services.reportRegionStateTransition(TransitionCode.SPLIT,
>               parent.getRegionInfo(), hri_a, hri_b)) {
>             throw new IOException("Failed to report split region to master: "
>               + parent.getRegionInfo().getShortNameToLog());
>           }
>           // Should add it to OnlineRegions
>           services.addToOnlineRegions(b);
>           if (useZKForAssignment) {
>             services.postOpenDeployTasks(a);
>           }
>           services.addToOnlineRegions(a);
>         } catch (KeeperException ke) {
>           throw new IOException(ke);
>         }
>       }
> {code}
> It causes a new splitted region or new merged region will not compact their reference
files. Then if the normalizer thread want to split this region, it will get stuck. 
> {code:java}
> public boolean canSplit() {
>     this.lock.readLock().lock();
>     try {
>       // Not split-able if we find a reference store file present in the store.
>       boolean result = !hasReferences();
>       if (!result && LOG.isDebugEnabled()) {
>         LOG.debug("Cannot split region due to reference files being there");
>       }
>       return result;
>     } finally {
>       this.lock.readLock().unlock();
>     }
>   }
> {code}
> According to the code, should we add a  services.postOpenDeployTasks after successfully
_*reportRegionStateTransition(TransitionCode.SPLIT, parent.getRegionInfo(), hri_a, hri_b)*_
?



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message