You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Andrew Purtell (JIRA)" <ji...@apache.org> on 2017/09/29 18:53:01 UTC
[jira] [Commented] (HBASE-18619) Should we add a
postOpenDeployTasks after open splited or merged region?
[ https://issues.apache.org/jira/browse/HBASE-18619?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16186237#comment-16186237 ]
Andrew Purtell commented on HBASE-18619:
----------------------------------------
Are you interested in submitting a patch [~tianjingyun]?
> 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)