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 F1657200C01 for ; Wed, 4 Jan 2017 08:39:06 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id F01C1160B3A; Wed, 4 Jan 2017 07:39:06 +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 257A4160B39 for ; Wed, 4 Jan 2017 08:39:05 +0100 (CET) Received: (qmail 88386 invoked by uid 500); 4 Jan 2017 07:39:04 -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 86718 invoked by uid 99); 4 Jan 2017 07:39:03 -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; Wed, 04 Jan 2017 07:39:03 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 8C46BDFB3D; Wed, 4 Jan 2017 07:39:03 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: syuanjiang@apache.org To: commits@hbase.apache.org Date: Wed, 04 Jan 2017 07:39:23 -0000 Message-Id: <1a22458472684a4d802b48b723585a7a@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [21/50] [abbrv] hbase git commit: HBASE-16010 Put draining function through Admin API (Matt Warhaftig) archived-at: Wed, 04 Jan 2017 07:39:07 -0000 HBASE-16010 Put draining function through Admin API (Matt Warhaftig) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/992e5717 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/992e5717 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/992e5717 Branch: refs/heads/hbase-12439 Commit: 992e5717d4e4deeef46836acea323a312b1e0851 Parents: 8fb9a91 Author: Jerry He Authored: Fri Dec 23 13:41:36 2016 -0800 Committer: Jerry He Committed: Fri Dec 23 13:41:36 2016 -0800 ---------------------------------------------------------------------- .../org/apache/hadoop/hbase/client/Admin.java | 19 + .../hbase/client/ConnectionImplementation.java | 25 + .../apache/hadoop/hbase/client/HBaseAdmin.java | 58 + .../shaded/protobuf/generated/MasterProtos.java | 3995 +++++++++++++++++- .../src/main/protobuf/Master.proto | 33 + .../org/apache/hadoop/hbase/master/HMaster.java | 50 + .../hadoop/hbase/master/MasterRpcServices.java | 51 + .../hadoop/hbase/master/MasterServices.java | 20 + .../apache/hadoop/hbase/client/TestAdmin2.java | 77 + .../hbase/master/MockNoopMasterServices.java | 15 + .../hbase/zookeeper/TestZooKeeperACL.java | 21 + 11 files changed, 4217 insertions(+), 147 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/992e5717/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java index e7ea4d9..fe3960f 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java @@ -1858,4 +1858,23 @@ public interface Admin extends Abortable, Closeable { */ default void disableReplicationPeer(final String peerId) throws IOException { } + + /** + * Mark a region server as draining to prevent additional regions from getting assigned to it. + * @param servers List of region servers to drain. + */ + void drainRegionServers(List servers) throws IOException; + + /** + * List region servers marked as draining to not get additional regions assigned to them. + * @return List of draining region servers. + */ + List listDrainingRegionServers() throws IOException; + + /** + * Remove drain from a region server to allow additional regions assignments. + * @param servers List of region servers to remove drain from. + */ + void removeDrainFromRegionServers(List servers) throws IOException; + } http://git-wip-us.apache.org/repos/asf/hbase/blob/992e5717/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java index ff939aa..a597be3 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java @@ -78,12 +78,18 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos; import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos; import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ClientService.BlockingInterface; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DrainRegionServersRequest; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DrainRegionServersResponse; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDrainingRegionServersRequest; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDrainingRegionServersResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeResponse; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RemoveDrainFromRegionServersRequest; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RemoveDrainFromRegionServersResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningRequest; @@ -1669,6 +1675,25 @@ class ConnectionImplementation implements ClusterConnection, Closeable { DisableReplicationPeerRequest request) throws ServiceException { return stub.disableReplicationPeer(controller, request); } + + @Override + public ListDrainingRegionServersResponse listDrainingRegionServers(RpcController controller, + ListDrainingRegionServersRequest request) throws ServiceException { + return stub.listDrainingRegionServers(controller, request); + } + + @Override + public DrainRegionServersResponse drainRegionServers(RpcController controller, + DrainRegionServersRequest request) throws ServiceException { + return stub.drainRegionServers(controller, request); + } + + @Override + public RemoveDrainFromRegionServersResponse removeDrainFromRegionServers( + RpcController controller, RemoveDrainFromRegionServersRequest request) + throws ServiceException { + return stub.removeDrainFromRegionServers(controller, request); + } }; } http://git-wip-us.apache.org/repos/asf/hbase/blob/992e5717/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java index 61f7435..ec4a5c1 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java @@ -120,6 +120,7 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTabl import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableResponse; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DrainRegionServersRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureRequest; @@ -140,6 +141,7 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedur import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneResponse; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDrainingRegionServersRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListProceduresRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceRequest; @@ -155,6 +157,7 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyName import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionRequest; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RemoveDrainFromRegionServersRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotRequest; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotResponse; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesRequest; @@ -3794,4 +3797,59 @@ public class HBaseAdmin implements Admin { } }); } + + @Override + public void drainRegionServers(List servers) throws IOException { + final List pbServers = new ArrayList(); + for (ServerName server : servers) { + // Parse to ServerName to do simple validation. + ServerName.parseServerName(server.toString()); + pbServers.add(ProtobufUtil.toServerName(server)); + } + + executeCallable(new MasterCallable(getConnection(), getRpcControllerFactory()) { + @Override + public Void rpcCall() throws ServiceException { + DrainRegionServersRequest req = + DrainRegionServersRequest.newBuilder().addAllServerName(pbServers).build(); + master.drainRegionServers(getRpcController(), req); + return null; + } + }); + } + + @Override + public List listDrainingRegionServers() throws IOException { + return executeCallable(new MasterCallable>(getConnection(), + getRpcControllerFactory()) { + @Override + public List rpcCall() throws ServiceException { + ListDrainingRegionServersRequest req = ListDrainingRegionServersRequest.newBuilder().build(); + List servers = new ArrayList(); + for (HBaseProtos.ServerName server : master.listDrainingRegionServers(null, req) + .getServerNameList()) { + servers.add(ProtobufUtil.toServerName(server)); + } + return servers; + } + }); + } + + @Override + public void removeDrainFromRegionServers(List servers) throws IOException { + final List pbServers = new ArrayList(); + for (ServerName server : servers) { + pbServers.add(ProtobufUtil.toServerName(server)); + } + + executeCallable(new MasterCallable(getConnection(), getRpcControllerFactory()) { + @Override + public Void rpcCall() throws ServiceException { + RemoveDrainFromRegionServersRequest req = RemoveDrainFromRegionServersRequest.newBuilder() + .addAllServerName(pbServers).build(); + master.removeDrainFromRegionServers(getRpcController(), req); + return null; + } + }); + } }