Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id B91B0200C14 for ; Tue, 7 Feb 2017 21:58:47 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id B7D3D160B68; Tue, 7 Feb 2017 20:58:47 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 0A52B160B32 for ; Tue, 7 Feb 2017 21:58:46 +0100 (CET) Received: (qmail 35877 invoked by uid 500); 7 Feb 2017 20:58:46 -0000 Mailing-List: contact commits-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list commits@hbase.apache.org Received: (qmail 35868 invoked by uid 99); 7 Feb 2017 20:58:46 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Feb 2017 20:58:46 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 1CEF5DFB0E; Tue, 7 Feb 2017 20:58:46 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: tedyu@apache.org To: commits@hbase.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: hbase git commit: HBASE-17275 Assign timeout may cause region to be unassigned forever (Allan yang) Date: Tue, 7 Feb 2017 20:58:46 +0000 (UTC) archived-at: Tue, 07 Feb 2017 20:58:47 -0000 Repository: hbase Updated Branches: refs/heads/branch-1.3 daa4940ef -> 6391c53e9 HBASE-17275 Assign timeout may cause region to be unassigned forever (Allan yang) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6391c53e Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6391c53e Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6391c53e Branch: refs/heads/branch-1.3 Commit: 6391c53e9f47355ced07758ff08879cdcbf49d15 Parents: daa4940 Author: tedyu Authored: Tue Feb 7 12:58:39 2017 -0800 Committer: tedyu Committed: Tue Feb 7 12:58:39 2017 -0800 ---------------------------------------------------------------------- .../hadoop/hbase/master/AssignmentManager.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/6391c53e/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java index 5c040dd..59e938d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java @@ -1102,10 +1102,19 @@ public class AssignmentManager extends ZooKeeperListener { + regionStates.getRegionState(encodedName)); if (regionState != null) { - // Close it without updating the internal region states, - // so as not to create double assignments in unlucky scenarios - // mentioned in OpenRegionHandler#process - unassign(regionState.getRegion(), null, -1, null, false, sn); + if(regionState.isOpened() && regionState.getServerName().equals(sn)) { + //if this region was opened before on this rs, we don't have to unassign it. It won't cause + //double assign. One possible scenario of what happened is HBASE-17275 + failedOpenTracker.remove(encodedName); // reset the count, if any + new OpenedRegionHandler( + server, this, regionState.getRegion(), coordination, ord).process(); + updateOpenedRegionHandlerTracker(regionState.getRegion()); + } else { + // Close it without updating the internal region states, + // so as not to create double assignments in unlucky scenarios + // mentioned in OpenRegionHandler#process + unassign(regionState.getRegion(), null, -1, null, false, sn); + } } return; }