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 55045200BEA for ; Mon, 21 Nov 2016 10:01:18 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 546B9160B19; Mon, 21 Nov 2016 09:01:18 +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 A6737160AF9 for ; Mon, 21 Nov 2016 10:01:17 +0100 (CET) Received: (qmail 63623 invoked by uid 500); 21 Nov 2016 09:01:16 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 63582 invoked by uid 99); 21 Nov 2016 09:01:16 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 21 Nov 2016 09:01:16 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 1ED6B2C1F55 for ; Mon, 21 Nov 2016 09:01:16 +0000 (UTC) Date: Mon, 21 Nov 2016 09:01:16 +0000 (UTC) From: "Guanghao Zhang (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Created] (HBASE-17140) Throw RegionOfflineException directly when request for a disabled table MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Mon, 21 Nov 2016 09:01:18 -0000 Guanghao Zhang created HBASE-17140: -------------------------------------- Summary: Throw RegionOfflineException directly when request for a disabled table Key: HBASE-17140 URL: https://issues.apache.org/jira/browse/HBASE-17140 Project: HBase Issue Type: Improvement Components: Client Reporter: Guanghao Zhang Now when request for a disabled table, it need 3 rpc call before fail. 1. get region location 2. send call to rs and get NotServeRegionException 3. retry and check the table state, then throw TableNotEnabledException The table state check is added for disabled table. But now the prepare method in RegionServerCallable shows that all retry request will get table state first. {code} public void prepare(final boolean reload) throws IOException { // check table state if this is a retry if (reload && !tableName.equals(TableName.META_TABLE_NAME) && getConnection().isTableDisabled(tableName)) { throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled."); } try (RegionLocator regionLocator = connection.getRegionLocator(tableName)) { this.location = regionLocator.getRegionLocation(row); } if (this.location == null) { throw new IOException("Failed to find location, tableName=" + tableName + ", row=" + Bytes.toString(row) + ", reload=" + reload); } setStubByServiceName(this.location.getServerName()); } {code} An improvement is set the region offline in HRegionInfo. Then throw the RegionOfflineException when get region location. -- This message was sent by Atlassian JIRA (v6.3.4#6332)