Return-Path: X-Original-To: apmail-hbase-commits-archive@www.apache.org Delivered-To: apmail-hbase-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 22FC97D5A for ; Mon, 19 Dec 2011 17:23:59 +0000 (UTC) Received: (qmail 70533 invoked by uid 500); 19 Dec 2011 17:23:59 -0000 Delivered-To: apmail-hbase-commits-archive@hbase.apache.org Received: (qmail 70506 invoked by uid 500); 19 Dec 2011 17:23:59 -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 70499 invoked by uid 99); 19 Dec 2011 17:23:59 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 19 Dec 2011 17:23:58 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 19 Dec 2011 17:23:56 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 9247123889DA for ; Mon, 19 Dec 2011 17:23:34 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1220860 - in /hbase/branches/0.92: CHANGES.txt src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java Date: Mon, 19 Dec 2011 17:23:34 -0000 To: commits@hbase.apache.org From: tedyu@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111219172334.9247123889DA@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: tedyu Date: Mon Dec 19 17:23:34 2011 New Revision: 1220860 URL: http://svn.apache.org/viewvc?rev=1220860&view=rev Log: HBASE-5060 HBase client is blocked forever (Jinchao) Modified: hbase/branches/0.92/CHANGES.txt hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java Modified: hbase/branches/0.92/CHANGES.txt URL: http://svn.apache.org/viewvc/hbase/branches/0.92/CHANGES.txt?rev=1220860&r1=1220859&r2=1220860&view=diff ============================================================================== --- hbase/branches/0.92/CHANGES.txt (original) +++ hbase/branches/0.92/CHANGES.txt Mon Dec 19 17:23:34 2011 @@ -890,6 +890,7 @@ Release 0.90.6 - Unreleased BUG FIXES HBASE-4970 Add a parameter so that keepAliveTime of Htable thread pool can be changed (gaojinchao) + HBASE-5060 HBase client is blocked forever (Jinchao) Release 0.90.5 - Unreleased Modified: hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java?rev=1220860&r1=1220859&r2=1220860&view=diff ============================================================================== --- hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java (original) +++ hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/catalog/CatalogTracker.java Mon Dec 19 17:23:34 2011 @@ -104,6 +104,7 @@ public class CatalogTracker { private final MetaNodeTracker metaNodeTracker; private final AtomicBoolean metaAvailable = new AtomicBoolean(false); private boolean instantiatedzkw = false; + private Abortable abortable; /* * Do not clear this address once set. Its needed when we do @@ -183,8 +184,21 @@ public class CatalogTracker { this.connection = connection; if (abortable == null) { // A connection is abortable. - abortable = this.connection; + this.abortable = this.connection; } + Abortable throwableAborter = new Abortable() { + + @Override + public void abort(String why, Throwable e) { + throw new RuntimeException(why, e); + } + + @Override + public boolean isAborted() { + return true; + } + + }; if (zk == null) { // Create our own. Set flag so we tear it down on stop. this.zookeeper = @@ -194,10 +208,10 @@ public class CatalogTracker { } else { this.zookeeper = zk; } - this.rootRegionTracker = new RootRegionTracker(zookeeper, abortable); + this.rootRegionTracker = new RootRegionTracker(zookeeper, throwableAborter); final CatalogTracker ct = this; // Override nodeDeleted so we get notified when meta node deleted - this.metaNodeTracker = new MetaNodeTracker(zookeeper, abortable) { + this.metaNodeTracker = new MetaNodeTracker(zookeeper, throwableAborter) { public void nodeDeleted(String path) { if (!path.equals(node)) return; ct.resetMetaLocation(); @@ -215,8 +229,14 @@ public class CatalogTracker { */ public void start() throws IOException, InterruptedException { LOG.debug("Starting catalog tracker " + this); - this.rootRegionTracker.start(); - this.metaNodeTracker.start(); + try { + this.rootRegionTracker.start(); + this.metaNodeTracker.start(); + } catch (RuntimeException e) { + Throwable t = e.getCause(); + this.abortable.abort(e.getMessage(), t); + throw new IOException("Attempt to start root/meta tracker failed.", t); + } } /**