Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io 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 97E9C160C3D for ; Wed, 3 Jan 2018 16:19:48 +0100 (CET) Received: (qmail 12861 invoked by uid 500); 3 Jan 2018 15:19:41 -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 12022 invoked by uid 99); 3 Jan 2018 15:19:41 -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, 03 Jan 2018 15:19:41 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id F1191DFF13; Wed, 3 Jan 2018 15:19:35 +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: Wed, 03 Jan 2018 15:19:54 -0000 Message-Id: In-Reply-To: <66b1c7ea9f8241f4bd3ff562d3abadd8@git.apache.org> References: <66b1c7ea9f8241f4bd3ff562d3abadd8@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [21/51] [partial] hbase-site git commit: Published site at . archived-at: Wed, 03 Jan 2018 15:19:51 -0000 http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bb398572/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html index 5b3b750..a1f3f7e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.NamespaceProcedureBiConsumer.html @@ -97,3307 +97,3304 @@ 089import org.apache.hbase.thirdparty.io.netty.util.HashedWheelTimer; 090import org.apache.hbase.thirdparty.io.netty.util.Timeout; 091import org.apache.hbase.thirdparty.io.netty.util.TimerTask; -092import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; -093import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter; -094import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService; -095import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest; -096import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse; -097import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest; -098import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse; -099import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionRequest; -100import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionResponse; -101import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionRequest; -102import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionResponse; -103import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoRequest; -104import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse; -105import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadRequest; -106import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadResponse; -107import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterRequest; -108import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterResponse; -109import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerRequest; -110import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerResponse; -111import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationRequest; -112import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationResponse; -113import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ProcedureDescription; -114import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType; -115import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.TableSchema; -116import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureRequest; -117import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureResponse; -118import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnRequest; -119import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnResponse; -120import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionRequest; -121import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionResponse; -122import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BalanceRequest; -123import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BalanceResponse; -124import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ClearDeadServersRequest; -125import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ClearDeadServersResponse; -126import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceRequest; -127import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceResponse; -128import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableRequest; -129import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableResponse; -130import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DecommissionRegionServersRequest; -131import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DecommissionRegionServersResponse; -132import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnRequest; -133import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnResponse; -134import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceRequest; -135import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceResponse; -136import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotRequest; -137import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotResponse; -138import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableRequest; -139import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableResponse; -140import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableRequest; -141import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableResponse; -142import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorRequest; -143import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorResponse; -144import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableRequest; -145import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableResponse; -146import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureRequest; -147import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureResponse; -148import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusRequest; -149import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusResponse; -150import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsRequest; -151import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsResponse; -152import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetLocksRequest; -153import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetLocksResponse; -154import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorRequest; -155import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorResponse; -156import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultRequest; -157import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultResponse; -158import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProceduresRequest; -159import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProceduresResponse; -160import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsRequest; -161import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsResponse; -162import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesRequest; -163import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesResponse; -164import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledRequest; -165import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledResponse; -166import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledRequest; -167import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledResponse; -168import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledRequest; -169import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledResponse; -170import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeRequest; -171import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeResponse; -172import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledRequest; -173import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledResponse; -174import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneRequest; -175import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneResponse; -176import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneRequest; -177import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneResponse; -178import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledRequest; -179import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledResponse; -180import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDecommissionedRegionServersRequest; -181import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDecommissionedRegionServersResponse; -182import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsRequest; -183import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsResponse; -184import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceRequest; -185import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceResponse; -186import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByNamespaceRequest; -187import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByNamespaceResponse; -188import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampForRegionRequest; -189import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampRequest; -190import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampResponse; -191import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService; -192import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsRequest; -193import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsResponse; -194import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnRequest; -195import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnResponse; -196import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceRequest; -197import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceResponse; -198import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableRequest; -199import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableResponse; -200import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionRequest; -201import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionResponse; -202import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeRequest; -203import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeResponse; -204import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionRequest; -205import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionResponse; -206import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RecommissionRegionServerRequest; -207import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RecommissionRegionServerResponse; -208import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotRequest; -209import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotResponse; -210import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanRequest; -211import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanResponse; -212import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreRequest; -213import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreResponse; -214import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesRequest; -215import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesResponse; -216import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningRequest; -217import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningResponse; -218import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningRequest; -219import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningResponse; -220import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningRequest; -221import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningResponse; -222import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaRequest; -223import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaResponse; -224import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledRequest; -225import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledResponse; -226import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownRequest; -227import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownResponse; -228import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotRequest; -229import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotResponse; -230import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionRequest; -231import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionResponse; -232import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterRequest; -233import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterResponse; -234import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableRequest; -235import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableResponse; -236import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionRequest; -237import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionResponse; -238import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerRequest; -239import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerResponse; -240import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerRequest; -241import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerResponse; -242import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerRequest; -243import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerResponse; -244import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigRequest; -245import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigResponse; -246import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersRequest; -247import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersResponse; -248import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerRequest; -249import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerResponse; -250import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigRequest; -251import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigResponse; -252import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos; -253 -254/** -255 * The implementation of AsyncAdmin. -256 * <p> -257 * The word 'Raw' means that this is a low level class. The returned {@link CompletableFuture} will -258 * be finished inside the rpc framework thread, which means that the callbacks registered to the -259 * {@link CompletableFuture} will also be executed inside the rpc framework thread. So users who use -260 * this class should not try to do time consuming tasks in the callbacks. -261 * @since 2.0.0 -262 * @see AsyncHBaseAdmin -263 * @see AsyncConnection#getAdmin() -264 * @see AsyncConnection#getAdminBuilder() -265 */ -266@InterfaceAudience.Private -267class RawAsyncHBaseAdmin implements AsyncAdmin { -268 public static final String FLUSH_TABLE_PROCEDURE_SIGNATURE = "flush-table-proc"; -269 -270 private static final Logger LOG = LoggerFactory.getLogger(AsyncHBaseAdmin.class); -271 -272 private final AsyncConnectionImpl connection; -273 -274 private final HashedWheelTimer retryTimer; -275 -276 private final AsyncTable<AdvancedScanResultConsumer> metaTable; -277 -278 private final long rpcTimeoutNs; -279 -280 private final long operationTimeoutNs; -281 -282 private final long pauseNs; -283 -284 private final int maxAttempts; -285 -286 private final int startLogErrorsCnt; -287 -288 private final NonceGenerator ng; -289 -290 RawAsyncHBaseAdmin(AsyncConnectionImpl connection, HashedWheelTimer retryTimer, -291 AsyncAdminBuilderBase builder) { -292 this.connection = connection; -293 this.retryTimer = retryTimer; -294 this.metaTable = connection.getTable(META_TABLE_NAME); -295 this.rpcTimeoutNs = builder.rpcTimeoutNs; -296 this.operationTimeoutNs = builder.operationTimeoutNs; -297 this.pauseNs = builder.pauseNs; -298 this.maxAttempts = builder.maxAttempts; -299 this.startLogErrorsCnt = builder.startLogErrorsCnt; -300 this.ng = connection.getNonceGenerator(); -301 } -302 -303 private <T> MasterRequestCallerBuilder<T> newMasterCaller() { -304 return this.connection.callerFactory.<T> masterRequest() -305 .rpcTimeout(rpcTimeoutNs, TimeUnit.NANOSECONDS) -306 .operationTimeout(operationTimeoutNs, TimeUnit.NANOSECONDS) -307 .pause(pauseNs, TimeUnit.NANOSECONDS).maxAttempts(maxAttempts) -308 .startLogErrorsCnt(startLogErrorsCnt); -309 } -310 -311 private <T> AdminRequestCallerBuilder<T> newAdminCaller() { -312 return this.connection.callerFactory.<T> adminRequest() -313 .rpcTimeout(rpcTimeoutNs, TimeUnit.NANOSECONDS) -314 .operationTimeout(operationTimeoutNs, TimeUnit.NANOSECONDS) -315 .pause(pauseNs, TimeUnit.NANOSECONDS).maxAttempts(maxAttempts) -316 .startLogErrorsCnt(startLogErrorsCnt); -317 } -318 -319 @FunctionalInterface -320 private interface MasterRpcCall<RESP, REQ> { -321 void call(MasterService.Interface stub, HBaseRpcController controller, REQ req, -322 RpcCallback<RESP> done); -323 } -324 -325 @FunctionalInterface -326 private interface AdminRpcCall<RESP, REQ> { -327 void call(AdminService.Interface stub, HBaseRpcController controller, REQ req, -328 RpcCallback<RESP> done); -329 } -330 -331 @FunctionalInterface -332 private interface Converter<D, S> { -333 D convert(S src) throws IOException; -334 } -335 -336 private <PREQ, PRESP, RESP> CompletableFuture<RESP> call(HBaseRpcController controller, -337 MasterService.Interface stub, PREQ preq, MasterRpcCall<PRESP, PREQ> rpcCall, -338 Converter<RESP, PRESP> respConverter) { -339 CompletableFuture<RESP> future = new CompletableFuture<>(); -340 rpcCall.call(stub, controller, preq, new RpcCallback<PRESP>() { -341 -342 @Override -343 public void run(PRESP resp) { -344 if (controller.failed()) { -345 future.completeExceptionally(controller.getFailed()); -346 } else { -347 try { -348 future.complete(respConverter.convert(resp)); -349 } catch (IOException e) { -350 future.completeExceptionally(e); -351 } -352 } -353 } -354 }); -355 return future; -356 } -357 -358 private <PREQ, PRESP, RESP> CompletableFuture<RESP> adminCall(HBaseRpcController controller, -359 AdminService.Interface stub, PREQ preq, AdminRpcCall<PRESP, PREQ> rpcCall, -360 Converter<RESP, PRESP> respConverter) { -361 -362 CompletableFuture<RESP> future = new CompletableFuture<>(); -363 rpcCall.call(stub, controller, preq, new RpcCallback<PRESP>() { -364 -365 @Override -366 public void run(PRESP resp) { -367 if (controller.failed()) { -368 future.completeExceptionally(new IOException(controller.errorText())); -369 } else { -370 try { -371 future.complete(respConverter.convert(resp)); -372 } catch (IOException e) { -373 future.completeExceptionally(e); -374 } -375 } -376 } -377 }); -378 return future; -379 } -380 -381 private <PREQ, PRESP> CompletableFuture<Void> procedureCall(PREQ preq, -382 MasterRpcCall<PRESP, PREQ> rpcCall, Converter<Long, PRESP> respConverter, -383 ProcedureBiConsumer consumer) { -384 CompletableFuture<Long> procFuture = this -385 .<Long> newMasterCaller() -386 .action( -387 (controller, stub) -> this.<PREQ, PRESP, Long> call(controller, stub, preq, rpcCall, -388 respConverter)).call(); -389 return waitProcedureResult(procFuture).whenComplete(consumer); -390 } -391 -392 @FunctionalInterface -393 private interface TableOperator { -394 CompletableFuture<Void> operate(TableName table); -395 } -396 -397 @Override -398 public CompletableFuture<Boolean> tableExists(TableName tableName) { -399 return AsyncMetaTableAccessor.tableExists(metaTable, tableName); -400 } -401 -402 @Override -403 public CompletableFuture<List<TableDescriptor>> listTableDescriptors(boolean includeSysTables) { -404 return getTableDescriptors(RequestConverter.buildGetTableDescriptorsRequest(null, -405 includeSysTables)); -406 } -407 -408 /** -409 * {@link #listTables(boolean)} -410 */ -411 @Override -412 public CompletableFuture<List<TableDescriptor>> listTableDescriptors(Pattern pattern, -413 boolean includeSysTables) { -414 Preconditions.checkNotNull(pattern, -415 "pattern is null. If you don't specify a pattern, use listTables(boolean) instead"); -416 return getTableDescriptors(RequestConverter.buildGetTableDescriptorsRequest(pattern, -417 includeSysTables)); -418 } -419 -420 private CompletableFuture<List<TableDescriptor>> -421 getTableDescriptors(GetTableDescriptorsRequest request) { -422 return this.<List<TableDescriptor>> newMasterCaller() -423 .action((controller, stub) -> this -424 .<GetTableDescriptorsRequest, GetTableDescriptorsResponse, List<TableDescriptor>> call( -425 controller, stub, request, (s, c, req, done) -> s.getTableDescriptors(c, req, done), -426 (resp) -> ProtobufUtil.toTableDescriptorList(resp))) -427 .call(); -428 } -429 -430 @Override -431 public CompletableFuture<List<TableName>> listTableNames(boolean includeSysTables) { -432 return getTableNames(RequestConverter.buildGetTableNamesRequest(null, includeSysTables)); -433 } -434 -435 @Override -436 public CompletableFuture<List<TableName>> -437 listTableNames(Pattern pattern, boolean includeSysTables) { -438 Preconditions.checkNotNull(pattern, -439 "pattern is null. If you don't specify a pattern, use listTableNames(boolean) instead"); -440 return getTableNames(RequestConverter.buildGetTableNamesRequest(pattern, includeSysTables)); -441 } -442 -443 private CompletableFuture<List<TableName>> getTableNames(GetTableNamesRequest request) { -444 return this -445 .<List<TableName>> newMasterCaller() -446 .action( -447 (controller, stub) -> this -448 .<GetTableNamesRequest, GetTableNamesResponse, List<TableName>> call(controller, -449 stub, request, (s, c, req, done) -> s.getTableNames(c, req, done), -450 (resp) -> ProtobufUtil.toTableNameList(resp.getTableNamesList()))).call(); -451 } -452 -453 @Override -454 public CompletableFuture<List<TableDescriptor>> listTableDescriptorsByNamespace(String name) { -455 return this.<List<TableDescriptor>> newMasterCaller().action((controller, stub) -> this -456 .<ListTableDescriptorsByNamespaceRequest, ListTableDescriptorsByNamespaceResponse, -457 List<TableDescriptor>> call( -458 controller, stub, -459 ListTableDescriptorsByNamespaceRequest.newBuilder().setNamespaceName(name).build(), -460 (s, c, req, done) -> s.listTableDescriptorsByNamespace(c, req, done), -461 (resp) -> ProtobufUtil.toTableDescriptorList(resp))) -462 .call(); -463 } -464 -465 @Override -466 public CompletableFuture<List<TableName>> listTableNamesByNamespace(String name) { -467 return this.<List<TableName>> newMasterCaller().action((controller, stub) -> this -468 .<ListTableNamesByNamespaceRequest, ListTableNamesByNamespaceResponse, -469 List<TableName>> call( -470 controller, stub, -471 ListTableNamesByNamespaceRequest.newBuilder().setNamespaceName(name).build(), -472 (s, c, req, done) -> s.listTableNamesByNamespace(c, req, done), -473 (resp) -> ProtobufUtil.toTableNameList(resp.getTableNameList()))) -474 .call(); -475 } -476 -477 @Override -478 public CompletableFuture<TableDescriptor> getDescriptor(TableName tableName) { -479 CompletableFuture<TableDescriptor> future = new CompletableFuture<>(); -480 this.<List<TableSchema>> newMasterCaller() -481 .action( -482 (controller, stub) -> this -483 .<GetTableDescriptorsRequest, GetTableDescriptorsResponse, List<TableSchema>> call( -484 controller, stub, RequestConverter.buildGetTableDescriptorsRequest(tableName), (s, -485 c, req, done) -> s.getTableDescriptors(c, req, done), (resp) -> resp -486 .getTableSchemaList())).call().whenComplete((tableSchemas, error) -> { -487 if (error != null) { -488 future.completeExceptionally(error); -489 return; -490 } -491 if (!tableSchemas.isEmpty()) { -492 future.complete(ProtobufUtil.toTableDescriptor(tableSchemas.get(0))); -493 } else { -494 future.completeExceptionally(new TableNotFoundException(tableName.getNameAsString())); -495 } -496 }); -497 return future; -498 } -499 -500 @Override -501 public CompletableFuture<Void> createTable(TableDescriptor desc) { -502 return createTable(desc.getTableName(), -503 RequestConverter.buildCreateTableRequest(desc, null, ng.getNonceGroup(), ng.newNonce())); -504 } -505 -506 @Override -507 public CompletableFuture<Void> createTable(TableDescriptor desc, byte[] startKey, byte[] endKey, -508 int numRegions) { -509 try { -510 return createTable(desc, getSplitKeys(startKey, endKey, numRegions)); -511 } catch (IllegalArgumentException e) { -512 return failedFuture(e); -513 } -514 } -515 -516 @Override -517 public CompletableFuture<Void> createTable(TableDescriptor desc, byte[][] splitKeys) { -518 Preconditions.checkNotNull(splitKeys, "splitKeys is null. If you don't specify splitKeys," -519 + " use createTable(TableDescriptor) instead"); -520 try { -521 verifySplitKeys(splitKeys); -522 return createTable(desc.getTableName(), RequestConverter.buildCreateTableRequest(desc, -523 splitKeys, ng.getNonceGroup(), ng.newNonce())); -524 } catch (IllegalArgumentException e) { -525 return failedFuture(e); -526 } -527 } -528 -529 private CompletableFuture<Void> createTable(TableName tableName, CreateTableRequest request) { -530 Preconditions.checkNotNull(tableName, "table name is null"); -531 return this.<CreateTableRequest, CreateTableResponse> procedureCall(request, -532 (s, c, req, done) -> s.createTable(c, req, done), (resp) -> resp.getProcId(), -533 new CreateTableProcedureBiConsumer(tableName)); -534 } -535 -536 @Override -537 public CompletableFuture<Void> modifyTable(TableDescriptor desc) { -538 return this.<ModifyTableRequest, ModifyTableResponse> procedureCall( -539 RequestConverter.buildModifyTableRequest(desc.getTableName(), desc, ng.getNonceGroup(), -540 ng.newNonce()), (s, c, req, done) -> s.modifyTable(c, req, done), -541 (resp) -> resp.getProcId(), new ModifyTableProcedureBiConsumer(this, desc.getTableName())); -542 } -543 -544 @Override -545 public CompletableFuture<Void> deleteTable(TableName tableName) { -546 return this.<DeleteTableRequest, DeleteTableResponse> procedureCall(RequestConverter -547 .buildDeleteTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()), -548 (s, c, req, done) -> s.deleteTable(c, req, done), (resp) -> resp.getProcId(), -549 new DeleteTableProcedureBiConsumer(tableName)); -550 } -551 -552 @Override -553 public CompletableFuture<Void> truncateTable(TableName tableName, boolean preserveSplits) { -554 return this.<TruncateTableRequest, TruncateTableResponse> procedureCall( -555 RequestConverter.buildTruncateTableRequest(tableName, preserveSplits, ng.getNonceGroup(), -556 ng.newNonce()), (s, c, req, done) -> s.truncateTable(c, req, done), -557 (resp) -> resp.getProcId(), new TruncateTableProcedureBiConsumer(tableName)); -558 } -559 -560 @Override -561 public CompletableFuture<Void> enableTable(TableName tableName) { -562 return this.<EnableTableRequest, EnableTableResponse> procedureCall(RequestConverter -563 .buildEnableTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()), -564 (s, c, req, done) -> s.enableTable(c, req, done), (resp) -> resp.getProcId(), -565 new EnableTableProcedureBiConsumer(tableName)); -566 } -567 -568 @Override -569 public CompletableFuture<Void> disableTable(TableName tableName) { -570 return this.<DisableTableRequest, DisableTableResponse> procedureCall(RequestConverter -571 .buildDisableTableRequest(tableName, ng.getNonceGroup(), ng.newNonce()), -572 (s, c, req, done) -> s.disableTable(c, req, done), (resp) -> resp.getProcId(), -573 new DisableTableProcedureBiConsumer(tableName)); -574 } -575 -576 @Override -577 public CompletableFuture<Boolean> isTableEnabled(TableName tableName) { -578 CompletableFuture<Boolean> future = new CompletableFuture<>(); -579 AsyncMetaTableAccessor.getTableState(metaTable, tableName).whenComplete((state, error) -> { -580 if (error != null) { -581 future.completeExceptionally(error); -582 return; -583 } -584 if (state.isPresent()) { -585 future.complete(state.get().inStates(TableState.State.ENABLED)); -586 } else { -587 future.completeExceptionally(new TableNotFoundException(tableName)); -588 } -589 }); -590 return future; -591 } -592 -593 @Override -594 public CompletableFuture<Boolean> isTableDisabled(TableName tableName) { -595 CompletableFuture<Boolean> future = new CompletableFuture<>(); -596 AsyncMetaTableAccessor.getTableState(metaTable, tableName).whenComplete((state, error) -> { -597 if (error != null) { -598 future.completeExceptionally(error); -599 return; -600 } -601 if (state.isPresent()) { -602 future.complete(state.get().inStates(TableState.State.DISABLED)); -603 } else { -604 future.completeExceptionally(new TableNotFoundException(tableName)); -605 } -606 }); -607 return future; -608 } -609 -610 @Override -611 public CompletableFuture<Boolean> isTableAvailable(TableName tableName) { -612 return isTableAvailable(tableName, Optional.empty()); -613 } -614 -615 @Override -616 public CompletableFuture<Boolean> isTableAvailable(TableName tableName, byte[][] splitKeys) { -617 Preconditions.checkNotNull(splitKeys, "splitKeys is null. If you don't specify splitKeys," -618 + " use isTableAvailable(TableName) instead"); -619 return isTableAvailable(tableName, Optional.of(splitKeys)); -620 } -621 -622 private CompletableFuture<Boolean> isTableAvailable(TableName tableName, -623 Optional<byte[][]> splitKeys) { -624 CompletableFuture<Boolean> future = new CompletableFuture<>(); -625 isTableEnabled(tableName).whenComplete( -626 (enabled, error) -> { -627 if (error != null) { -628 future.completeExceptionally(error); -629 return; -630 } -631 if (!enabled) { -632 future.complete(false); -633 } else { -634 AsyncMetaTableAccessor.getTableHRegionLocations(metaTable, Optional.of(tableName)) -635 .whenComplete( -636 (locations, error1) -> { -637 if (error1 != null) { -638 future.completeExceptionally(error1); -639 return; -640 } -641 List<HRegionLocation> notDeployedRegions = -642 locations.stream().filter(loc -> loc.getServerName() == null) -643 .collect(Collectors.toList()); -644 if (notDeployedRegions.size() > 0) { -645 if (LOG.isDebugEnabled()) { -646 LOG.debug("Table " + tableName + " has " + notDeployedRegions.size() -647 + " regions"); -648 } -649 future.complete(false); -650 return; -651 } -652 -653 Optional<Boolean> available = -654 splitKeys.map(keys -> compareRegionsWithSplitKeys(locations, keys)); -655 future.complete(available.orElse(true)); -656 }); -657 } -658 }); -659 return future; -660 } -661 -662 private boolean compareRegionsWithSplitKeys(List<HRegionLocation> locations, byte[][] splitKeys) { -663 int regionCount = 0; -664 for (HRegionLocation location : locations) { -665 RegionInfo info = location.getRegion(); -666 if (Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) { -667 regionCount++; -668 continue; -669 } -670 for (byte[] splitKey : splitKeys) { -671 // Just check if the splitkey is available -672 if (Bytes.equals(info.getStartKey(), splitKey)) { -673 regionCount++; -674 break; -675 } -676 } -677 } -678 return regionCount == splitKeys.length + 1; -679 } -680 -681 @Override -682 public CompletableFuture<Void> addColumnFamily(TableName tableName, ColumnFamilyDescriptor columnFamily) { -683 return this.<AddColumnRequest, AddColumnResponse> procedureCall( -684 RequestConverter.buildAddColumnRequest(tableName, columnFamily, ng.getNonceGroup(), -685 ng.newNonce()), (s, c, req, done) -> s.addColumn(c, req, done), (resp) -> resp.getProcId(), -686 new AddColumnFamilyProcedureBiConsumer(tableName)); -687 } -688 -689 @Override -690 public CompletableFuture<Void> deleteColumnFamily(TableName tableName, byte[] columnFamily) { -691 return this.<DeleteColumnRequest, DeleteColumnResponse> procedureCall( -692 RequestConverter.buildDeleteColumnRequest(tableName, columnFamily, ng.getNonceGroup(), -693 ng.newNonce()), (s, c, req, done) -> s.deleteColumn(c, req, done), -694 (resp) -> resp.getProcId(), new DeleteColumnFamilyProcedureBiConsumer(tableName)); -695 } -696 -697 @Override -698 public CompletableFuture<Void> modifyColumnFamily(TableName tableName, -699 ColumnFamilyDescriptor columnFamily) { -700 return this.<ModifyColumnRequest, ModifyColumnResponse> procedureCall( -701 RequestConverter.buildModifyColumnRequest(tableName, columnFamily, ng.getNonceGroup(), -702 ng.newNonce()), (s, c, req, done) -> s.modifyColumn(c, req, done), -703 (resp) -> resp.getProcId(), new ModifyColumnFamilyProcedureBiConsumer(tableName)); -704 } -705 -706 @Override -707 public CompletableFuture<Void> createNamespace(NamespaceDescriptor descriptor) { -708 return this.<CreateNamespaceRequest, CreateNamespaceResponse> procedureCall( -709 RequestConverter.buildCreateNamespaceRequest(descriptor), -710 (s, c, req, done) -> s.createNamespace(c, req, done), (resp) -> resp.getProcId(), -711 new CreateNamespaceProcedureBiConsumer(descriptor.getName())); -712 } -713 -714 @Override -715 public CompletableFuture<Void> modifyNamespace(NamespaceDescriptor descriptor) { -716 return this.<ModifyNamespaceRequest, ModifyNamespaceResponse> procedureCall( -717 RequestConverter.buildModifyNamespaceRequest(descriptor), -718 (s, c, req, done) -> s.modifyNamespace(c, req, done), (resp) -> resp.getProcId(), -719 new ModifyNamespaceProcedureBiConsumer(descriptor.getName())); -720 } -721 -722 @Override -723 public CompletableFuture<Void> deleteNamespace(String name) { -724 return this.<DeleteNamespaceRequest, DeleteNamespaceResponse> procedureCall( -725 RequestConverter.buildDeleteNamespaceRequest(name), -726 (s, c, req, done) -> s.deleteNamespace(c, req, done), (resp) -> resp.getProcId(), -727 new DeleteNamespaceProcedureBiConsumer(name)); -728 } -729 -730 @Override -731 public CompletableFuture<NamespaceDescriptor> getNamespaceDescriptor(String name) { -732 return this -733 .<NamespaceDescriptor> newMasterCaller() -734 .action( -735 (controller, stub) -> this -736 .<GetNamespaceDescriptorRequest, GetNamespaceDescriptorResponse, NamespaceDescriptor> call( -737 controller, stub, RequestConverter.buildGetNamespaceDescriptorRequest(name), (s, c, -738 req, done) -> s.getNamespaceDescriptor(c, req, done), (resp) -> ProtobufUtil -739 .toNamespaceDescriptor(resp.getNamespaceDescriptor()))).call(); -740 } -741 -742 @Override -743 public CompletableFuture<List<NamespaceDescriptor>> listNamespaceDescriptors() { -744 return this -745 .<List<NamespaceDescriptor>> newMasterCaller() -746 .action( -747 (controller, stub) -> this -748 .<ListNamespaceDescriptorsRequest, ListNamespaceDescriptorsResponse, List<NamespaceDescriptor>> call( -749 controller, stub, ListNamespaceDescriptorsRequest.newBuilder().build(), (s, c, req, -750 done) -> s.listNamespaceDescriptors(c, req, done), (resp) -> ProtobufUtil -751 .toNamespaceDescriptorList(resp))).call(); -752 } -753 -754 @Override -755 public CompletableFuture<List<RegionInfo>> getRegions(ServerName serverName) { -756 return this.<List<RegionInfo>> newAdminCaller() -757 .action((controller, stub) -> this -758 .<GetOnlineRegionRequest, GetOnlineRegionResponse, List<RegionInfo>> adminCall( -759 controller, stub, RequestConverter.buildGetOnlineRegionRequest(), -760 (s, c, req, done) -> s.getOnlineRegion(c, req, done), -761 resp -> ProtobufUtil.getRegionInfos(resp))) -762 .serverName(serverName).call(); -763 } -764 -765 @Override -766 public CompletableFuture<List<RegionInfo>> getRegions(TableName tableName) { -767 if (tableName.equals(META_TABLE_NAME)) { -768 return connection.getLocator().getRegionLocation(tableName, null, null, operationTimeoutNs) -769 .thenApply(loc -> Collections.singletonList(loc.getRegion())); -770 } else { -771 return AsyncMetaTableAccessor.getTableHRegionLocations(metaTable, Optional.of(tableName)) -772 .thenApply( -773 locs -> locs.stream().map(loc -> loc.getRegion()).collect(Collectors.toList())); -774 } -775 } -776 -777 @Override -778 public CompletableFuture<Void> flush(TableName tableName) { -779 CompletableFuture<Void> future = new CompletableFuture<>(); -780 tableExists(tableName).whenComplete((exists, err) -> { -781 if (err != null) { -782 future.completeExceptionally(err); -783 } else if (!exists) { -784 future.completeExceptionally(new TableNotFoundException(tableName)); -785 } else { -786 isTableEnabled(tableName).whenComplete((tableEnabled, err2) -> { -787 if (err2 != null) { -788 future.completeExceptionally(err2); -789 } else if (!tableEnabled) { -790 future.completeExceptionally(new TableNotEnabledException(tableName)); -791 } else { -792 execProcedure(FLUSH_TABLE_PROCEDURE_SIGNATURE, tableName.getNameAsString(), -793 new HashMap<>()).whenComplete((ret, err3) -> { -794 if (err3 != null) { -795 future.completeExceptionally(err3); -796 } else { -797 future.complete(ret); -798 } -799 }); -800 } -801 }); -802 } -803 }); -804 return future; -805 } -806 -807 @Override -808 public CompletableFuture<Void> flushRegion(byte[] regionName) { -809 CompletableFuture<Void> future = new CompletableFuture<>(); -810 getRegionLocation(regionName).whenComplete( -811 (location, err) -> { -812 if (err != null) { -813 future.completeExceptionally(err); -814 return; -815 } -816 ServerName serverName = location.getServerName(); -817 if (serverName == null) { -818 future.completeExceptionally(new NoServerForRegionException(Bytes -819 .toStringBinary(regionName))); -820 return; -821 } -822 -823 RegionInfo regionInfo = location.getRegion(); -824 this.<Void> newAdminCaller() -825 .serverName(serverName) -826 .action( -827 (controller, stub) -> this.<FlushRegionRequest, FlushRegionResponse, Void> adminCall( -828 controller, stub, RequestConverter.buildFlushRegionRequest(regionInfo -829 .getRegionName()), (s, c, req, done) -> s.flushRegion(c, req, done), -830 resp -> null)).call().whenComplete((ret, err2) -> { -831 if (err2 != null) { -832 future.completeExceptionally(err2); -833 } else { -834 future.complete(ret); -835 } -836 }); -837 }); -838 return future; -839 } -840 -841 @Override -842 public CompletableFuture<Void> compact(TableName tableName, CompactType compactType) { -843 return compact(tableName, null, false, compactType); -844 } -845 -846 @Override -847 public CompletableFuture<Void> compact(TableName tableName, byte[] columnFamily, -848 CompactType compactType) { -849 Preconditions.checkNotNull(columnFamily, "columnFamily is null. " -850 + "If you don't specify a columnFamily, use compact(TableName) instead"); -851 return compact(tableName, columnFamily, false, compactType); -852 } -853 -854 @Override -855 public CompletableFuture<Void> compactRegion(byte[] regionName) { -856 return compactRegion(regionName, null, false); -857 } -858 -859 @Override -860 public CompletableFuture<Void> compactRegion(byte[] regionName, byte[] columnFamily) { -861 Preconditions.checkNotNull(columnFamily, "columnFamily is null." -862