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 CFE8E200CEC for ; Mon, 31 Jul 2017 17:10:30 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id CE6B216560A; Mon, 31 Jul 2017 15:10:30 +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 C1BAC1655F1 for ; Mon, 31 Jul 2017 17:10:27 +0200 (CEST) Received: (qmail 14624 invoked by uid 500); 31 Jul 2017 15:10:24 -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 13985 invoked by uid 99); 31 Jul 2017 15:10:23 -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; Mon, 31 Jul 2017 15:10:23 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id EEF16F333E; Mon, 31 Jul 2017 15:10:22 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: git-site-role@apache.org To: commits@hbase.apache.org Date: Mon, 31 Jul 2017 15:10:42 -0000 Message-Id: <47f3a1c7cd52418681d1d6a6bd6402da@git.apache.org> In-Reply-To: <4b7e73b962544b8ba274a615aa246ef7@git.apache.org> References: <4b7e73b962544b8ba274a615aa246ef7@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [21/51] [partial] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd. archived-at: Mon, 31 Jul 2017 15:10:31 -0000 http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1837997e/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html index 35d5549..7f42873 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.TableProcedureBiConsumer.html @@ -115,2816 +115,2814 @@ 107import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadResponse; 108import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterRequest; 109import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterResponse; -110import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.SplitRegionRequest; -111import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.SplitRegionResponse; -112import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerRequest; -113import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerResponse; -114import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationRequest; -115import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationResponse; -116import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ProcedureDescription; -117import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.TableSchema; -118import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType; -119import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureRequest; -120import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureResponse; -121import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnRequest; -122import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnResponse; -123import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionRequest; -124import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionResponse; -125import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BalanceRequest; -126import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BalanceResponse; -127import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceRequest; -128import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceResponse; -129import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceRequest; -130import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceResponse; -131import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotRequest; -132import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotResponse; -133import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableRequest; -134import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableResponse; -135import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorRequest; -136import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorResponse; -137import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DrainRegionServersRequest; -138import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DrainRegionServersResponse; -139import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableRequest; -140import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableResponse; -141import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnRequest; -142import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnResponse; -143import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureRequest; -144import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureResponse; -145import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusRequest; -146import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusResponse; -147import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsRequest; -148import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsResponse; -149import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorRequest; -150import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorResponse; -151import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultRequest; -152import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultResponse; -153import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusRequest; -154import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusResponse; -155import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsRequest; -156import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsResponse; -157import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesRequest; -158import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesResponse; -159import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableRequest; -160import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableResponse; -161import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableRequest; -162import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableResponse; -163import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledRequest; -164import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledResponse; -165import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledRequest; -166import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledResponse; -167import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledRequest; -168import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledResponse; -169import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeRequest; -170import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeResponse; -171import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledRequest; -172import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledResponse; -173import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneRequest; -174import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneResponse; -175import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneRequest; -176import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneResponse; -177import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledRequest; -178import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledResponse; -179import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDrainingRegionServersRequest; -180import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDrainingRegionServersResponse; -181import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListLocksRequest; -182import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListLocksResponse; -183import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsRequest; -184import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsResponse; -185import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListProceduresRequest; -186import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListProceduresResponse; -187import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampForRegionRequest; -188import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampRequest; -189import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampResponse; -190import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService; -191import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsRequest; -192import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsResponse; -193import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnRequest; -194import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnResponse; -195import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceRequest; -196import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceResponse; -197import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionRequest; -198import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionResponse; -199import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeRequest; -200import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeResponse; -201import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionRequest; -202import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionResponse; -203import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RemoveDrainFromRegionServersRequest; -204import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RemoveDrainFromRegionServersResponse; -205import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotRequest; -206import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotResponse; -207import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanRequest; -208import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanResponse; -209import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreRequest; -210import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreResponse; -211import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesRequest; -212import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesResponse; -213import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningRequest; -214import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningResponse; -215import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningRequest; -216import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningResponse; -217import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningRequest; -218import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningResponse; -219import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaRequest; -220import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaResponse; -221import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledRequest; -222import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledResponse; -223import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownRequest; -224import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownResponse; -225import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotRequest; -226import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotResponse; -227import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionRequest; -228import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionResponse; -229import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterRequest; -230import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterResponse; -231import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableRequest; -232import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableResponse; -233import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionRequest; -234import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionResponse; -235import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerRequest; -236import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerResponse; -237import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerRequest; -238import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerResponse; -239import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerRequest; -240import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerResponse; -241import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigRequest; -242import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigResponse; -243import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersRequest; -244import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersResponse; -245import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerRequest; -246import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerResponse; -247import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigRequest; -248import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigResponse; -249import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos; -250import org.apache.hadoop.hbase.snapshot.ClientSnapshotDescriptionUtils; -251import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException; -252import org.apache.hadoop.hbase.snapshot.SnapshotCreationException; -253import org.apache.hadoop.hbase.util.Bytes; -254import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; -255import org.apache.hadoop.hbase.util.ForeignExceptionUtil; -256import org.apache.hadoop.hbase.util.Pair; -257 -258/** -259 * The implementation of AsyncAdmin. -260 */ -261@InterfaceAudience.Private -262public class RawAsyncHBaseAdmin implements AsyncAdmin { -263 public static final String FLUSH_TABLE_PROCEDURE_SIGNATURE = "flush-table-proc"; +110import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerRequest; +111import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerResponse; +112import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationRequest; +113import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationResponse; +114import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ProcedureDescription; +115import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.TableSchema; +116import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType; +117import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureRequest; +118import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureResponse; +119import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnRequest; +120import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnResponse; +121import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionRequest; +122import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionResponse; +123import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BalanceRequest; +124import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BalanceResponse; +125import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceRequest; +126import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceResponse; +127import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceRequest; +128import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceResponse; +129import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotRequest; +130import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotResponse; +131import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableRequest; +132import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableResponse; +133import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorRequest; +134import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorResponse; +135import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DrainRegionServersRequest; +136import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DrainRegionServersResponse; +137import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableRequest; +138import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableResponse; +139import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnRequest; +140import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnResponse; +141import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureRequest; +142import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureResponse; +143import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusRequest; +144import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusResponse; +145import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsRequest; +146import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsResponse; +147import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorRequest; +148import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorResponse; +149import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultRequest; +150import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultResponse; +151import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusRequest; +152import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusResponse; +153import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsRequest; +154import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsResponse; +155import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesRequest; +156import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesResponse; +157import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableRequest; +158import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableResponse; +159import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableRequest; +160import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableResponse; +161import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledRequest; +162import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledResponse; +163import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledRequest; +164import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledResponse; +165import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledRequest; +166import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledResponse; +167import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeRequest; +168import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeResponse; +169import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledRequest; +170import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledResponse; +171import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneRequest; +172import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneResponse; +173import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneRequest; +174import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneResponse; +175import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledRequest; +176import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledResponse; +177import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDrainingRegionServersRequest; +178import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDrainingRegionServersResponse; +179import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListLocksRequest; +180import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListLocksResponse; +181import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsRequest; +182import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsResponse; +183import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListProceduresRequest; +184import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListProceduresResponse; +185import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampForRegionRequest; +186import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampRequest; +187import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampResponse; +188import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService; +189import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsRequest; +190import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsResponse; +191import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnRequest; +192import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnResponse; +193import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceRequest; +194import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceResponse; +195import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionRequest; +196import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionResponse; +197import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeRequest; +198import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeResponse; +199import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionRequest; +200import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionResponse; +201import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RemoveDrainFromRegionServersRequest; +202import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RemoveDrainFromRegionServersResponse; +203import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotRequest; +204import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotResponse; +205import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanRequest; +206import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanResponse; +207import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreRequest; +208import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreResponse; +209import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesRequest; +210import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesResponse; +211import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningRequest; +212import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningResponse; +213import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningRequest; +214import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningResponse; +215import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningRequest; +216import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningResponse; +217import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaRequest; +218import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaResponse; +219import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledRequest; +220import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledResponse; +221import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownRequest; +222import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownResponse; +223import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotRequest; +224import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotResponse; +225import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionRequest; +226import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionResponse; +227import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterRequest; +228import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterResponse; +229import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableRequest; +230import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableResponse; +231import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionRequest; +232import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionResponse; +233import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerRequest; +234import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerResponse; +235import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerRequest; +236import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerResponse; +237import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerRequest; +238import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerResponse; +239import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigRequest; +240import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigResponse; +241import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersRequest; +242import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersResponse; +243import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerRequest; +244import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerResponse; +245import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigRequest; +246import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigResponse; +247import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos; +248import org.apache.hadoop.hbase.snapshot.ClientSnapshotDescriptionUtils; +249import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException; +250import org.apache.hadoop.hbase.snapshot.SnapshotCreationException; +251import org.apache.hadoop.hbase.util.Bytes; +252import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; +253import org.apache.hadoop.hbase.util.ForeignExceptionUtil; +254import org.apache.hadoop.hbase.util.Pair; +255 +256/** +257 * The implementation of AsyncAdmin. +258 */ +259@InterfaceAudience.Private +260public class RawAsyncHBaseAdmin implements AsyncAdmin { +261 public static final String FLUSH_TABLE_PROCEDURE_SIGNATURE = "flush-table-proc"; +262 +263 private static final Log LOG = LogFactory.getLog(AsyncHBaseAdmin.class); 264 -265 private static final Log LOG = LogFactory.getLog(AsyncHBaseAdmin.class); +265 private final AsyncConnectionImpl connection; 266 -267 private final AsyncConnectionImpl connection; +267 private final RawAsyncTable metaTable; 268 -269 private final RawAsyncTable metaTable; +269 private final long rpcTimeoutNs; 270 -271 private final long rpcTimeoutNs; +271 private final long operationTimeoutNs; 272 -273 private final long operationTimeoutNs; +273 private final long pauseNs; 274 -275 private final long pauseNs; +275 private final int maxAttempts; 276 -277 private final int maxAttempts; +277 private final int startLogErrorsCnt; 278 -279 private final int startLogErrorsCnt; +279 private final NonceGenerator ng; 280 -281 private final NonceGenerator ng; -282 -283 RawAsyncHBaseAdmin(AsyncConnectionImpl connection, AsyncAdminBuilderBase<?> builder) { -284 this.connection = connection; -285 this.metaTable = connection.getRawTable(META_TABLE_NAME); -286 this.rpcTimeoutNs = builder.rpcTimeoutNs; -287 this.operationTimeoutNs = builder.operationTimeoutNs; -288 this.pauseNs = builder.pauseNs; -289 this.maxAttempts = builder.maxAttempts; -290 this.startLogErrorsCnt = builder.startLogErrorsCnt; -291 this.ng = connection.getNonceGenerator(); -292 } -293 -294 private <T> MasterRequestCallerBuilder<T> newMasterCaller() { -295 return this.connection.callerFactory.<T> masterRequest() -296 .rpcTimeout(rpcTimeoutNs, TimeUnit.NANOSECONDS) -297 .operationTimeout(operationTimeoutNs, TimeUnit.NANOSECONDS) -298 .pause(pauseNs, TimeUnit.NANOSECONDS).maxAttempts(maxAttempts) -299 .startLogErrorsCnt(startLogErrorsCnt); -300 } -301 -302 private <T> AdminRequestCallerBuilder<T> newAdminCaller() { -303 return this.connection.callerFactory.<T> adminRequest() -304 .rpcTimeout(rpcTimeoutNs, TimeUnit.NANOSECONDS) -305 .operationTimeout(operationTimeoutNs, TimeUnit.NANOSECONDS) -306 .pause(pauseNs, TimeUnit.NANOSECONDS).maxAttempts(maxAttempts) -307 .startLogErrorsCnt(startLogErrorsCnt); -308 } -309 -310 @FunctionalInterface -311 private interface MasterRpcCall<RESP, REQ> { -312 void call(MasterService.Interface stub, HBaseRpcController controller, REQ req, -313 RpcCallback<RESP> done); -314 } -315 -316 @FunctionalInterface -317 private interface AdminRpcCall<RESP, REQ> { -318 void call(AdminService.Interface stub, HBaseRpcController controller, REQ req, -319 RpcCallback<RESP> done); -320 } -321 -322 @FunctionalInterface -323 private interface Converter<D, S> { -324 D convert(S src) throws IOException; -325 } -326 -327 private <PREQ, PRESP, RESP> CompletableFuture<RESP> call(HBaseRpcController controller, -328 MasterService.Interface stub, PREQ preq, MasterRpcCall<PRESP, PREQ> rpcCall, -329 Converter<RESP, PRESP> respConverter) { -330 CompletableFuture<RESP> future = new CompletableFuture<>(); -331 rpcCall.call(stub, controller, preq, new RpcCallback<PRESP>() { -332 -333 @Override -334 public void run(PRESP resp) { -335 if (controller.failed()) { -336 future.completeExceptionally(controller.getFailed()); -337 } else { -338 try { -339 future.complete(respConverter.convert(resp)); -340 } catch (IOException e) { -341 future.completeExceptionally(e); -342 } -343 } -344 } -345 }); -346 return future; -347 } -348 -349 private <PREQ, PRESP, RESP> CompletableFuture<RESP> adminCall(HBaseRpcController controller, -350 AdminService.Interface stub, PREQ preq, AdminRpcCall<PRESP, PREQ> rpcCall, -351 Converter<RESP, PRESP> respConverter) { -352 -353 CompletableFuture<RESP> future = new CompletableFuture<>(); -354 rpcCall.call(stub, controller, preq, new RpcCallback<PRESP>() { -355 -356 @Override -357 public void run(PRESP resp) { -358 if (controller.failed()) { -359 future.completeExceptionally(new IOException(controller.errorText())); -360 } else { -361 try { -362 future.complete(respConverter.convert(resp)); -363 } catch (IOException e) { -364 future.completeExceptionally(e); -365 } -366 } -367 } -368 }); -369 return future; -370 } -371 -372 private <PREQ, PRESP> CompletableFuture<Void> procedureCall(PREQ preq, -373 MasterRpcCall<PRESP, PREQ> rpcCall, Converter<Long, PRESP> respConverter, -374 ProcedureBiConsumer consumer) { -375 CompletableFuture<Long> procFuture = this -376 .<Long> newMasterCaller() -377 .action( -378 (controller, stub) -> this.<PREQ, PRESP, Long> call(controller, stub, preq, rpcCall, -379 respConverter)).call(); -380 return waitProcedureResult(procFuture).whenComplete(consumer); -381 } -382 -383 @FunctionalInterface -384 private interface TableOperator { -385 CompletableFuture<Void> operate(TableName table); -386 } -387 -388 private CompletableFuture<List<TableDescriptor>> batchTableOperations(Pattern pattern, -389 TableOperator operator, String operationType) { -390 CompletableFuture<List<TableDescriptor>> future = new CompletableFuture<>(); -391 List<TableDescriptor> failed = new LinkedList<>(); -392 listTables(Optional.ofNullable(pattern), false).whenComplete( -393 (tables, error) -> { -394 if (error != null) { -395 future.completeExceptionally(error); -396 return; -397 } -398 CompletableFuture[] futures = -399 tables.stream() -400 .map((table) -> operator.operate(table.getTableName()).whenComplete((v, ex) -> { -401 if (ex != null) { -402 LOG.info("Failed to " + operationType + " table " + table.getTableName(), ex); -403 failed.add(table); -404 } -405 })).<CompletableFuture> toArray(size -> new CompletableFuture[size]); -406 CompletableFuture.allOf(futures).thenAccept((v) -> { -407 future.complete(failed); -408 }); -409 }); -410 return future; -411 } -412 -413 @Override -414 public CompletableFuture<Boolean> tableExists(TableName tableName) { -415 return AsyncMetaTableAccessor.tableExists(metaTable, tableName); -416 } -417 -418 @Override -419 public CompletableFuture<List<TableDescriptor>> listTables(Optional<Pattern> pattern, -420 boolean includeSysTables) { -421 return this.<List<TableDescriptor>> newMasterCaller() -422 .action((controller, stub) -> this -423 .<GetTableDescriptorsRequest, GetTableDescriptorsResponse, List<TableDescriptor>> call( -424 controller, stub, -425 RequestConverter.buildGetTableDescriptorsRequest(pattern, includeSysTables), -426 (s, c, req, done) -> s.getTableDescriptors(c, req, done), -427 (resp) -> ProtobufUtil.toTableDescriptorList(resp))) -428 .call(); -429 } -430 -431 @Override -432 public CompletableFuture<List<TableName>> listTableNames(Optional<Pattern> pattern, -433 boolean includeSysTables) { -434 return this.<List<TableName>> newMasterCaller() -435 .action((controller, stub) -> this -436 .<GetTableNamesRequest, GetTableNamesResponse, List<TableName>> call(controller, stub, -437 RequestConverter.buildGetTableNamesRequest(pattern, includeSysTables), -438 (s, c, req, done) -> s.getTableNames(c, req, done), -439 (resp) -> ProtobufUtil.toTableNameList(resp.getTableNamesList()))) -440 .call(); -441 } -442 -443 @Override -444 public CompletableFuture<TableDescriptor> getTableDescriptor(TableName tableName) { -445 CompletableFuture<TableDescriptor> future = new CompletableFuture<>(); -446 this.<List<TableSchema>> newMasterCaller() -447 .action( -448 (controller, stub) -> this -449 .<GetTableDescriptorsRequest, GetTableDescriptorsResponse, List<TableSchema>> call( -450 controller, stub, RequestConverter.buildGetTableDescriptorsRequest(tableName), (s, -451 c, req, done) -> s.getTableDescriptors(c, req, done), (resp) -> resp -452 .getTableSchemaList())).call().whenComplete((tableSchemas, error) -> { -453 if (error != null) { -454 future.completeExceptionally(error); -455 return; -456 } -457 if (!tableSchemas.isEmpty()) { -458 future.complete(ProtobufUtil.convertToTableDesc(tableSchemas.get(0))); -459 } else { -460 future.completeExceptionally(new TableNotFoundException(tableName.getNameAsString())); -461 } -462 }); -463 return future; -464 } -465 -466 @Override -467 public CompletableFuture<Void> createTable(TableDescriptor desc, byte[] startKey, byte[] endKey, -468 int numRegions) { -469 try { -470 return createTable(desc, Optional.of(getSplitKeys(startKey, endKey, numRegions))); -471 } catch (IllegalArgumentException e) { -472 return failedFuture(e); -473 } -474 } -475 -476 @Override -477 public CompletableFuture<Void> createTable(TableDescriptor desc, Optional<byte[][]> splitKeys) { -478 if (desc.getTableName() == null) { -479 return failedFuture(new IllegalArgumentException("TableName cannot be null")); -480 } -481 try { -482 splitKeys.ifPresent(keys -> verifySplitKeys(keys)); -483 return this.<CreateTableRequest, CreateTableResponse> procedureCall(RequestConverter -484 .buildCreateTableRequest(desc, splitKeys, ng.getNonceGroup(), ng.newNonce()), (s, c, req, -485 done) -> s.createTable(c, req, done), (resp) -> resp.getProcId(), -486 new CreateTableProcedureBiConsumer(this, desc.getTableName())); -487 } catch (IllegalArgumentException e) { -488 return failedFuture(e); -489 } -490 } -491 -492 @Override -493 public CompletableFuture<Void> deleteTable(TableName tableName) { -494 return this.<DeleteTableRequest, DeleteTableResponse> procedureCall(RequestConverter -495 .buildDeleteTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()), -496 (s, c, req, done) -> s.deleteTable(c, req, done), (resp) -> resp.getProcId(), -497 new DeleteTableProcedureBiConsumer(this, tableName)); -498 } -499 -500 @Override -501 public CompletableFuture<List<TableDescriptor>> deleteTables(Pattern pattern) { -502 return batchTableOperations(pattern, (table) -> deleteTable(table), "DELETE"); -503 } -504 -505 @Override -506 public CompletableFuture<Void> truncateTable(TableName tableName, boolean preserveSplits) { -507 return this.<TruncateTableRequest, TruncateTableResponse> procedureCall( -508 RequestConverter.buildTruncateTableRequest(tableName, preserveSplits, ng.getNonceGroup(), -509 ng.newNonce()), (s, c, req, done) -> s.truncateTable(c, req, done), -510 (resp) -> resp.getProcId(), new TruncateTableProcedureBiConsumer(this, tableName)); -511 } -512 -513 @Override -514 public CompletableFuture<Void> enableTable(TableName tableName) { -515 return this.<EnableTableRequest, EnableTableResponse> procedureCall(RequestConverter -516 .buildEnableTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()), -517 (s, c, req, done) -> s.enableTable(c, req, done), (resp) -> resp.getProcId(), -518 new EnableTableProcedureBiConsumer(this, tableName)); -519 } -520 -521 @Override -522 public CompletableFuture<List<TableDescriptor>> enableTables(Pattern pattern) { -523 return batchTableOperations(pattern, (table) -> enableTable(table), "ENABLE"); -524 } -525 -526 @Override -527 public CompletableFuture<Void> disableTable(TableName tableName) { -528 return this.<DisableTableRequest, DisableTableResponse> procedureCall(RequestConverter -529 .buildDisableTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()), -530 (s, c, req, done) -> s.disableTable(c, req, done), (resp) -> resp.getProcId(), -531 new DisableTableProcedureBiConsumer(this, tableName)); -532 } -533 -534 @Override -535 public CompletableFuture<List<TableDescriptor>> disableTables(Pattern pattern) { -536 return batchTableOperations(pattern, (table) -> disableTable(table), "DISABLE"); -537 } -538 -539 @Override -540 public CompletableFuture<Boolean> isTableEnabled(TableName tableName) { -541 CompletableFuture<Boolean> future = new CompletableFuture<>(); -542 AsyncMetaTableAccessor.getTableState(metaTable, tableName).whenComplete((state, error) -> { -543 if (error != null) { -544 future.completeExceptionally(error); -545 return; -546 } -547 if (state.isPresent()) { -548 future.complete(state.get().inStates(TableState.State.ENABLED)); -549 } else { -550 future.completeExceptionally(new TableNotFoundException(tableName)); -551 } -552 }); -553 return future; -554 } -555 -556 @Override -557 public CompletableFuture<Boolean> isTableDisabled(TableName tableName) { -558 CompletableFuture<Boolean> future = new CompletableFuture<>(); -559 AsyncMetaTableAccessor.getTableState(metaTable, tableName).whenComplete((state, error) -> { -560 if (error != null) { -561 future.completeExceptionally(error); -562 return; -563 } -564 if (state.isPresent()) { -565 future.complete(state.get().inStates(TableState.State.DISABLED)); -566 } else { -567 future.completeExceptionally(new TableNotFoundException(tableName)); -568 } -569 }); -570 return future; -571 } -572 -573 @Override -574 public CompletableFuture<Boolean> isTableAvailable(TableName tableName) { -575 return isTableAvailable(tableName, null); -576 } -577 -578 @Override -579 public CompletableFuture<Boolean> isTableAvailable(TableName tableName, byte[][] splitKeys) { -580 CompletableFuture<Boolean> future = new CompletableFuture<>(); -581 isTableEnabled(tableName).whenComplete( -582 (enabled, error) -> { -583 if (error != null) { -584 future.completeExceptionally(error); -585 return; -586 } -587 if (!enabled) { -588 future.complete(false); -589 } else { -590 AsyncMetaTableAccessor.getTableHRegionLocations(metaTable, Optional.of(tableName)) -591 .whenComplete( -592 (locations, error1) -> { -593 if (error1 != null) { -594 future.completeExceptionally(error1); -595 return; -596 } -597 int notDeployed = 0; -598 int regionCount = 0; -599 for (HRegionLocation location : locations) { -600 HRegionInfo info = location.getRegionInfo(); -601 if (location.getServerName() == null) { -602 if (LOG.isDebugEnabled()) { -603 LOG.debug("Table " + tableName + " has not deployed region " -604 + info.getEncodedName()); -605 } -606 notDeployed++; -607 } else if (splitKeys != null -608 && !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) { -609 for (byte[] splitKey : splitKeys) { -610 // Just check if the splitkey is available -611 if (Bytes.equals(info.getStartKey(), splitKey)) { -612 regionCount++; -613 break; -614 } -615 } -616 } else { -617 // Always empty start row should be counted -618 regionCount++; -619 } -620 } -621 if (notDeployed > 0) { -622 if (LOG.isDebugEnabled()) { -623 LOG.debug("Table " + tableName + " has " + notDeployed + " regions"); -624 } -625 future.complete(false); -626 } else if (splitKeys != null && regionCount != splitKeys.length + 1) { -627 if (LOG.isDebugEnabled()) { -628 LOG.debug("Table " + tableName + " expected to have " -629 + (splitKeys.length + 1) + " regions, but only " + regionCount -630 + " available"); -631 } -632 future.complete(false); -633 } else { -634 if (LOG.isDebugEnabled()) { -635 LOG.debug("Table " + tableName + " should be available"); -636 } -637 future.complete(true); -638 } -639 }); -640 } -641 }); -642 return future; -643 } -644 -645 @Override -646 public CompletableFuture<Pair<Integer, Integer>> getAlterStatus(TableName tableName) { -647 return this -648 .<Pair<Integer, Integer>>newMasterCaller() -649 .action( -650 (controller, stub) -> this -651 .<GetSchemaAlterStatusRequest, GetSchemaAlterStatusResponse, Pair<Integer, Integer>> call( -652 controller, stub, RequestConverter.buildGetSchemaAlterStatusRequest(tableName), (s, -653 c, req, done) -> s.getSchemaAlterStatus(c, req, done), (resp) -> new Pair<>( -654 resp.getYetToUpdateRegions(), resp.getTotalRegions()))).call(); -655 } -656 -657 @Override -658 public CompletableFuture<Void> addColumnFamily(TableName tableName, ColumnFamilyDescriptor columnFamily) { -659 return this.<AddColumnRequest, AddColu