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 5E53F20049E for ; Thu, 10 Aug 2017 17:06:17 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 5CF9716B807; Thu, 10 Aug 2017 15:06:17 +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 E284116B7E9 for ; Thu, 10 Aug 2017 17:06:14 +0200 (CEST) Received: (qmail 25537 invoked by uid 500); 10 Aug 2017 15:06:11 -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 24543 invoked by uid 99); 10 Aug 2017 15:06:10 -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; Thu, 10 Aug 2017 15:06:10 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 64767F555F; Thu, 10 Aug 2017 15:06:09 +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: Thu, 10 Aug 2017 15:06:27 -0000 Message-Id: <705ee6dbd8e24dc3bd6979bde1c3999b@git.apache.org> In-Reply-To: <141f6329ee7b433498ab01f957b7a456@git.apache.org> References: <141f6329ee7b433498ab01f957b7a456@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [20/46] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd. archived-at: Thu, 10 Aug 2017 15:06:17 -0000 http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html index 9a8f45d..665ad9f 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html @@ -26,3462 +26,3459 @@ 018 */ 019package org.apache.hadoop.hbase.regionserver; 020 -021import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting; -022import org.apache.hadoop.hbase.shaded.com.google.common.cache.Cache; -023import org.apache.hadoop.hbase.shaded.com.google.common.cache.CacheBuilder; -024 -025import java.io.FileNotFoundException; -026import java.io.IOException; -027import java.io.InterruptedIOException; -028import java.net.BindException; -029import java.net.InetSocketAddress; -030import java.net.UnknownHostException; -031import java.nio.ByteBuffer; -032import java.util.ArrayList; -033import java.util.Arrays; -034import java.util.Collections; -035import java.util.HashMap; -036import java.util.Iterator; -037import java.util.List; -038import java.util.Map; -039import java.util.Map.Entry; -040import java.util.NavigableMap; -041import java.util.Set; -042import java.util.TreeSet; -043import java.util.concurrent.ConcurrentHashMap; -044import java.util.concurrent.ConcurrentMap; -045import java.util.concurrent.TimeUnit; -046import java.util.concurrent.atomic.AtomicBoolean; -047import java.util.concurrent.atomic.AtomicLong; -048import java.util.concurrent.atomic.LongAdder; -049 -050import org.apache.commons.lang.mutable.MutableObject; -051import org.apache.commons.logging.Log; -052import org.apache.commons.logging.LogFactory; -053import org.apache.hadoop.conf.Configuration; -054import org.apache.hadoop.fs.Path; -055import org.apache.hadoop.hbase.ByteBufferCell; -056import org.apache.hadoop.hbase.Cell; -057import org.apache.hadoop.hbase.CellScannable; -058import org.apache.hadoop.hbase.CellScanner; -059import org.apache.hadoop.hbase.CellUtil; -060import org.apache.hadoop.hbase.DoNotRetryIOException; -061import org.apache.hadoop.hbase.DroppedSnapshotException; -062import org.apache.hadoop.hbase.HBaseIOException; -063import org.apache.hadoop.hbase.HConstants; -064import org.apache.hadoop.hbase.HRegionInfo; -065import org.apache.hadoop.hbase.HTableDescriptor; -066import org.apache.hadoop.hbase.MultiActionResultTooLarge; -067import org.apache.hadoop.hbase.NotServingRegionException; -068import org.apache.hadoop.hbase.ServerName; -069import org.apache.hadoop.hbase.TableName; -070import org.apache.hadoop.hbase.UnknownScannerException; -071import org.apache.hadoop.hbase.classification.InterfaceAudience; -072import org.apache.hadoop.hbase.client.Append; -073import org.apache.hadoop.hbase.client.ConnectionUtils; -074import org.apache.hadoop.hbase.client.Delete; -075import org.apache.hadoop.hbase.client.Durability; -076import org.apache.hadoop.hbase.client.Get; -077import org.apache.hadoop.hbase.client.Increment; -078import org.apache.hadoop.hbase.client.Mutation; -079import org.apache.hadoop.hbase.client.Put; -080import org.apache.hadoop.hbase.client.RegionReplicaUtil; -081import org.apache.hadoop.hbase.client.Result; -082import org.apache.hadoop.hbase.client.RowMutations; -083import org.apache.hadoop.hbase.client.Scan; -084import org.apache.hadoop.hbase.client.VersionInfoUtil; -085import org.apache.hadoop.hbase.conf.ConfigurationObserver; -086import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException; -087import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException; -088import org.apache.hadoop.hbase.exceptions.ScannerResetException; -089import org.apache.hadoop.hbase.filter.ByteArrayComparable; -090import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; -091import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler; -092import org.apache.hadoop.hbase.ipc.HBaseRpcController; -093import org.apache.hadoop.hbase.ipc.PriorityFunction; -094import org.apache.hadoop.hbase.ipc.QosPriority; -095import org.apache.hadoop.hbase.ipc.RpcCallContext; -096import org.apache.hadoop.hbase.ipc.RpcCallback; -097import org.apache.hadoop.hbase.ipc.RpcServer; -098import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface; -099import org.apache.hadoop.hbase.ipc.RpcServerFactory; -100import org.apache.hadoop.hbase.ipc.RpcServerInterface; -101import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException; -102import org.apache.hadoop.hbase.ipc.ServerRpcController; -103import org.apache.hadoop.hbase.master.MasterRpcServices; -104import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement; -105import org.apache.hadoop.hbase.quotas.OperationQuota; -106import org.apache.hadoop.hbase.quotas.QuotaUtil; -107import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager; -108import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager; -109import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot; -110import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement; -111import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl; -112import org.apache.hadoop.hbase.regionserver.Leases.Lease; -113import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException; -114import org.apache.hadoop.hbase.regionserver.Region.Operation; -115import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope; -116import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler; -117import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler; -118import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler; -119import org.apache.hadoop.hbase.regionserver.wal.WALEdit; -120import org.apache.hadoop.hbase.security.Superusers; -121import org.apache.hadoop.hbase.security.User; -122import org.apache.hadoop.hbase.shaded.com.google.protobuf.ByteString; -123import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message; -124import org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcController; -125import org.apache.hadoop.hbase.shaded.com.google.protobuf.ServiceException; -126import org.apache.hadoop.hbase.shaded.com.google.protobuf.TextFormat; -127import org.apache.hadoop.hbase.shaded.com.google.protobuf.UnsafeByteOperations; -128import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; -129import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter; -130import org.apache.hadoop.hbase.shaded.protobuf.ResponseConverter; -131import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService; -132import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest; -133import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse; -134import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionRequest; -135import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionResponse; -136import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest; -137import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse; -138import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresRequest; -139import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresResponse; -140import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionRequest; -141import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionResponse; -142import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionRequest; -143import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionResponse; -144import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoRequest; -145import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse; -146import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadRequest; -147import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadResponse; -148import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoRequest; -149import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoResponse; -150import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileRequest; -151import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileResponse; -152import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest; -153import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest.RegionOpenInfo; -154import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionResponse; -155import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionResponse.RegionOpeningState; -156import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryRequest; -157import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryResponse; -158import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterRequest; -159import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterResponse; -160import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerRequest; -161import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerResponse; -162import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationRequest; -163import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationResponse; -164import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest; -165import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesResponse; -166import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry; -167import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionRequest; -168import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionResponse; -169import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos; -170import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.Action; -171import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.BulkLoadHFileRequest; -172import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.BulkLoadHFileRequest.FamilyPath; -173import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.BulkLoadHFileResponse; -174import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest; -175import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadResponse; -176import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ClientService; -177import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.Condition; -178import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest; -179import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceResponse; -180import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetRequest; -181import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetResponse; -182import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRegionLoadStats; -183import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest; -184import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiResponse; -185import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateRequest; -186import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateResponse; -187import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutationProto; -188import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutationProto.MutationType; -189import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest; -190import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadResponse; -191import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionAction; -192import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionActionResult; -193import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ResultOrException; -194import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanRequest; -195import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanResponse; -196import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos; -197import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad; -198import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.NameBytesPair; -199import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.NameInt64Pair; -200import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionInfo; -201import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier; -202import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType; -203import org.apache.hadoop.hbase.shaded.protobuf.generated.MapReduceProtos.ScanMetrics; -204import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsRequest; -205import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsResponse; -206import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsResponse.TableQuotaSnapshot; -207import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader; -208import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.BulkLoadDescriptor; -209import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor; -210import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor; -211import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.RegionEventDescriptor; -212import org.apache.hadoop.hbase.util.Bytes; -213import org.apache.hadoop.hbase.util.DNS; -214import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; -215import org.apache.hadoop.hbase.util.Pair; -216import org.apache.hadoop.hbase.util.ServerRegionReplicaUtil; -217import org.apache.hadoop.hbase.util.Strings; -218import org.apache.hadoop.hbase.wal.WAL; -219import org.apache.hadoop.hbase.wal.WALKey; -220import org.apache.hadoop.hbase.wal.WALSplitter; -221import org.apache.hadoop.hbase.zookeeper.ZKSplitLog; -222import org.apache.zookeeper.KeeperException; -223 -224import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting; -225 -226/** -227 * Implements the regionserver RPC services. -228 */ -229@InterfaceAudience.Private -230@SuppressWarnings("deprecation") -231public class RSRpcServices implements HBaseRPCErrorHandler, -232 AdminService.BlockingInterface, ClientService.BlockingInterface, PriorityFunction, -233 ConfigurationObserver { -234 protected static final Log LOG = LogFactory.getLog(RSRpcServices.class); -235 -236 /** RPC scheduler to use for the region server. */ -237 public static final String REGION_SERVER_RPC_SCHEDULER_FACTORY_CLASS = -238 "hbase.region.server.rpc.scheduler.factory.class"; -239 -240 /** -241 * Minimum allowable time limit delta (in milliseconds) that can be enforced during scans. This -242 * configuration exists to prevent the scenario where a time limit is specified to be so -243 * restrictive that the time limit is reached immediately (before any cells are scanned). -244 */ -245 private static final String REGION_SERVER_RPC_MINIMUM_SCAN_TIME_LIMIT_DELTA = -246 "hbase.region.server.rpc.minimum.scan.time.limit.delta"; -247 /** -248 * Default value of {@link RSRpcServices#REGION_SERVER_RPC_MINIMUM_SCAN_TIME_LIMIT_DELTA} -249 */ -250 private static final long DEFAULT_REGION_SERVER_RPC_MINIMUM_SCAN_TIME_LIMIT_DELTA = 10; -251 -252 /** -253 * Number of rows in a batch operation above which a warning will be logged. -254 */ -255 static final String BATCH_ROWS_THRESHOLD_NAME = "hbase.rpc.rows.warning.threshold"; -256 /** -257 * Default value of {@link RSRpcServices#BATCH_ROWS_THRESHOLD_NAME} -258 */ -259 static final int BATCH_ROWS_THRESHOLD_DEFAULT = 5000; +021import java.io.FileNotFoundException; +022import java.io.IOException; +023import java.io.InterruptedIOException; +024import java.net.BindException; +025import java.net.InetSocketAddress; +026import java.net.UnknownHostException; +027import java.nio.ByteBuffer; +028import java.util.ArrayList; +029import java.util.Arrays; +030import java.util.Collections; +031import java.util.HashMap; +032import java.util.Iterator; +033import java.util.List; +034import java.util.Map; +035import java.util.Map.Entry; +036import java.util.NavigableMap; +037import java.util.Set; +038import java.util.TreeSet; +039import java.util.concurrent.ConcurrentHashMap; +040import java.util.concurrent.ConcurrentMap; +041import java.util.concurrent.TimeUnit; +042import java.util.concurrent.atomic.AtomicBoolean; +043import java.util.concurrent.atomic.AtomicLong; +044import java.util.concurrent.atomic.LongAdder; +045 +046import org.apache.commons.lang.mutable.MutableObject; +047import org.apache.commons.logging.Log; +048import org.apache.commons.logging.LogFactory; +049import org.apache.hadoop.conf.Configuration; +050import org.apache.hadoop.fs.Path; +051import org.apache.hadoop.hbase.ByteBufferCell; +052import org.apache.hadoop.hbase.Cell; +053import org.apache.hadoop.hbase.CellScannable; +054import org.apache.hadoop.hbase.CellScanner; +055import org.apache.hadoop.hbase.CellUtil; +056import org.apache.hadoop.hbase.DoNotRetryIOException; +057import org.apache.hadoop.hbase.DroppedSnapshotException; +058import org.apache.hadoop.hbase.HBaseIOException; +059import org.apache.hadoop.hbase.HConstants; +060import org.apache.hadoop.hbase.HRegionInfo; +061import org.apache.hadoop.hbase.HTableDescriptor; +062import org.apache.hadoop.hbase.MultiActionResultTooLarge; +063import org.apache.hadoop.hbase.NotServingRegionException; +064import org.apache.hadoop.hbase.ServerName; +065import org.apache.hadoop.hbase.TableName; +066import org.apache.hadoop.hbase.UnknownScannerException; +067import org.apache.hadoop.hbase.classification.InterfaceAudience; +068import org.apache.hadoop.hbase.client.Append; +069import org.apache.hadoop.hbase.client.ConnectionUtils; +070import org.apache.hadoop.hbase.client.Delete; +071import org.apache.hadoop.hbase.client.Durability; +072import org.apache.hadoop.hbase.client.Get; +073import org.apache.hadoop.hbase.client.Increment; +074import org.apache.hadoop.hbase.client.Mutation; +075import org.apache.hadoop.hbase.client.Put; +076import org.apache.hadoop.hbase.client.RegionReplicaUtil; +077import org.apache.hadoop.hbase.client.Result; +078import org.apache.hadoop.hbase.client.RowMutations; +079import org.apache.hadoop.hbase.client.Scan; +080import org.apache.hadoop.hbase.client.VersionInfoUtil; +081import org.apache.hadoop.hbase.conf.ConfigurationObserver; +082import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException; +083import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException; +084import org.apache.hadoop.hbase.exceptions.ScannerResetException; +085import org.apache.hadoop.hbase.filter.ByteArrayComparable; +086import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; +087import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler; +088import org.apache.hadoop.hbase.ipc.HBaseRpcController; +089import org.apache.hadoop.hbase.ipc.PriorityFunction; +090import org.apache.hadoop.hbase.ipc.QosPriority; +091import org.apache.hadoop.hbase.ipc.RpcCallContext; +092import org.apache.hadoop.hbase.ipc.RpcCallback; +093import org.apache.hadoop.hbase.ipc.RpcServer; +094import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface; +095import org.apache.hadoop.hbase.ipc.RpcServerFactory; +096import org.apache.hadoop.hbase.ipc.RpcServerInterface; +097import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException; +098import org.apache.hadoop.hbase.ipc.ServerRpcController; +099import org.apache.hadoop.hbase.master.MasterRpcServices; +100import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement; +101import org.apache.hadoop.hbase.quotas.OperationQuota; +102import org.apache.hadoop.hbase.quotas.QuotaUtil; +103import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager; +104import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager; +105import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot; +106import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement; +107import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl; +108import org.apache.hadoop.hbase.regionserver.Leases.Lease; +109import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException; +110import org.apache.hadoop.hbase.regionserver.Region.Operation; +111import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope; +112import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler; +113import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler; +114import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler; +115import org.apache.hadoop.hbase.regionserver.wal.WALEdit; +116import org.apache.hadoop.hbase.security.Superusers; +117import org.apache.hadoop.hbase.security.User; +118import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting; +119import org.apache.hadoop.hbase.shaded.com.google.common.cache.Cache; +120import org.apache.hadoop.hbase.shaded.com.google.common.cache.CacheBuilder; +121import org.apache.hadoop.hbase.shaded.com.google.protobuf.ByteString; +122import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message; +123import org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcController; +124import org.apache.hadoop.hbase.shaded.com.google.protobuf.ServiceException; +125import org.apache.hadoop.hbase.shaded.com.google.protobuf.TextFormat; +126import org.apache.hadoop.hbase.shaded.com.google.protobuf.UnsafeByteOperations; +127import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; +128import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter; +129import org.apache.hadoop.hbase.shaded.protobuf.ResponseConverter; +130import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService; +131import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest; +132import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse; +133import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionRequest; +134import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionResponse; +135import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest; +136import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse; +137import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresRequest; +138import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresResponse; +139import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionRequest; +140import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionResponse; +141import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionRequest; +142import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionResponse; +143import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoRequest; +144import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse; +145import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadRequest; +146import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadResponse; +147import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoRequest; +148import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoResponse; +149import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileRequest; +150import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileResponse; +151import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest; +152import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest.RegionOpenInfo; +153import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionResponse; +154import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionResponse.RegionOpeningState; +155import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryRequest; +156import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryResponse; +157import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterRequest; +158import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterResponse; +159import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerRequest; +160import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerResponse; +161import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationRequest; +162import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationResponse; +163import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest; +164import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesResponse; +165import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry; +166import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionRequest; +167import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionResponse; +168import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos; +169import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.Action; +170import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.BulkLoadHFileRequest; +171import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.BulkLoadHFileRequest.FamilyPath; +172import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.BulkLoadHFileResponse; +173import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest; +174import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadResponse; +175import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ClientService; +176import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.Condition; +177import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest; +178import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceResponse; +179import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetRequest; +180import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetResponse; +181import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRegionLoadStats; +182import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest; +183import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiResponse; +184import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateRequest; +185import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateResponse; +186import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutationProto; +187import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutationProto.MutationType; +188import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest; +189import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadResponse; +190import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionAction; +191import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.RegionActionResult; +192import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ResultOrException; +193import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanRequest; +194import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanResponse; +195import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos; +196import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad; +197import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.NameBytesPair; +198import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.NameInt64Pair; +199import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionInfo; +200import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier; +201import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType; +202import org.apache.hadoop.hbase.shaded.protobuf.generated.MapReduceProtos.ScanMetrics; +203import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsRequest; +204import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsResponse; +205import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsResponse.TableQuotaSnapshot; +206import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader; +207import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.BulkLoadDescriptor; +208import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor; +209import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor; +210import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.RegionEventDescriptor; +211import org.apache.hadoop.hbase.util.Bytes; +212import org.apache.hadoop.hbase.util.DNS; +213import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; +214import org.apache.hadoop.hbase.util.Pair; +215import org.apache.hadoop.hbase.util.ServerRegionReplicaUtil; +216import org.apache.hadoop.hbase.util.Strings; +217import org.apache.hadoop.hbase.wal.WAL; +218import org.apache.hadoop.hbase.wal.WALKey; +219import org.apache.hadoop.hbase.wal.WALSplitter; +220import org.apache.hadoop.hbase.zookeeper.ZKSplitLog; +221import org.apache.zookeeper.KeeperException; +222 +223/** +224 * Implements the regionserver RPC services. +225 */ +226@InterfaceAudience.Private +227@SuppressWarnings("deprecation") +228public class RSRpcServices implements HBaseRPCErrorHandler, +229 AdminService.BlockingInterface, ClientService.BlockingInterface, PriorityFunction, +230 ConfigurationObserver { +231 protected static final Log LOG = LogFactory.getLog(RSRpcServices.class); +232 +233 /** RPC scheduler to use for the region server. */ +234 public static final String REGION_SERVER_RPC_SCHEDULER_FACTORY_CLASS = +235 "hbase.region.server.rpc.scheduler.factory.class"; +236 +237 /** +238 * Minimum allowable time limit delta (in milliseconds) that can be enforced during scans. This +239 * configuration exists to prevent the scenario where a time limit is specified to be so +240 * restrictive that the time limit is reached immediately (before any cells are scanned). +241 */ +242 private static final String REGION_SERVER_RPC_MINIMUM_SCAN_TIME_LIMIT_DELTA = +243 "hbase.region.server.rpc.minimum.scan.time.limit.delta"; +244 /** +245 * Default value of {@link RSRpcServices#REGION_SERVER_RPC_MINIMUM_SCAN_TIME_LIMIT_DELTA} +246 */ +247 private static final long DEFAULT_REGION_SERVER_RPC_MINIMUM_SCAN_TIME_LIMIT_DELTA = 10; +248 +249 /** +250 * Number of rows in a batch operation above which a warning will be logged. +251 */ +252 static final String BATCH_ROWS_THRESHOLD_NAME = "hbase.rpc.rows.warning.threshold"; +253 /** +254 * Default value of {@link RSRpcServices#BATCH_ROWS_THRESHOLD_NAME} +255 */ +256 static final int BATCH_ROWS_THRESHOLD_DEFAULT = 5000; +257 +258 // Request counter. (Includes requests that are not serviced by regions.) +259 final LongAdder requestCount = new LongAdder(); 260 -261 // Request counter. (Includes requests that are not serviced by regions.) -262 final LongAdder requestCount = new LongAdder(); +261 // Request counter for rpc get +262 final LongAdder rpcGetRequestCount = new LongAdder(); 263 -264 // Request counter for rpc get -265 final LongAdder rpcGetRequestCount = new LongAdder(); +264 // Request counter for rpc scan +265 final LongAdder rpcScanRequestCount = new LongAdder(); 266 -267 // Request counter for rpc scan -268 final LongAdder rpcScanRequestCount = new LongAdder(); +267 // Request counter for rpc multi +268 final LongAdder rpcMultiRequestCount = new LongAdder(); 269 -270 // Request counter for rpc multi -271 final LongAdder rpcMultiRequestCount = new LongAdder(); +270 // Request counter for rpc mutate +271 final LongAdder rpcMutateRequestCount = new LongAdder(); 272 -273 // Request counter for rpc mutate -274 final LongAdder rpcMutateRequestCount = new LongAdder(); -275 -276 // Server to handle client requests. -277 final RpcServerInterface rpcServer; -278 final InetSocketAddress isa; +273 // Server to handle client requests. +274 final RpcServerInterface rpcServer; +275 final InetSocketAddress isa; +276 +277 private final HRegionServer regionServer; +278 private final long maxScannerResultSize; 279 -280 private final HRegionServer regionServer; -281 private final long maxScannerResultSize; +280 // The reference to the priority extraction function +281 private final PriorityFunction priority; 282 -283 // The reference to the priority extraction function -284 private final PriorityFunction priority; -285 -286 private ScannerIdGenerator scannerIdGenerator; -287 private final ConcurrentMap<String, RegionScannerHolder> scanners = new ConcurrentHashMap<>(); -288 // Hold the name of a closed scanner for a while. This is used to keep compatible for old clients -289 // which may send next or close request to a region scanner which has already been exhausted. The -290 // entries will be removed automatically after scannerLeaseTimeoutPeriod. -291 private final Cache<String, String> closedScanners; -292 /** -293 * The lease timeout period for client scanners (milliseconds). -294 */ -295 private final int scannerLeaseTimeoutPeriod; -296 -297 /** -298 * The RPC timeout period (milliseconds) -299 */ -300 private final int rpcTimeout; -301 -302 /** -303 * The minimum allowable delta to use for the scan limit -304 */ -305 private final long minimumScanTimeLimitDelta; -306 -307 /** -308 * Row size threshold for multi requests above which a warning is logged -309 */ -310 private final int rowSizeWarnThreshold; -311 -312 final AtomicBoolean clearCompactionQueues = new AtomicBoolean(false); -313 -314 /** -315 * An Rpc callback for closing a RegionScanner. -316 */ -317 private static final class RegionScannerCloseCallBack implements RpcCallback { -318 -319 private final RegionScanner scanner; -320 -321 public RegionScannerCloseCallBack(RegionScanner scanner) { -322 this.scanner = scanner; -323 } -324 -325 @Override -326 public void run() throws IOException { -327 this.scanner.close(); -328 } -329 } -330 -331 /** -332 * An Rpc callback for doing shipped() call on a RegionScanner. -333 */ -334 private class RegionScannerShippedCallBack implements RpcCallback { -335 -336 private final String scannerName; -337 private final RegionScanner scanner; -338 private final Lease lease; -339 -340 public RegionScannerShippedCallBack(String scannerName, RegionScanner scanner, Lease lease) { -341 this.scannerName = scannerName; -342 this.scanner = scanner; -343 this.lease = lease; -344 } -345 -346 @Override -347 public void run() throws IOException { -348 this.scanner.shipped(); -349 // We're done. On way out re-add the above removed lease. The lease was temp removed for this -350 // Rpc call and we are at end of the call now. Time to add it back. -351 if (scanners.containsKey(scannerName)) { -352 if (lease != null) regionServer.leases.addLease(lease); -353 } -354 } -355 } -356 -357 /** -358 * An RpcCallBack that creates a list of scanners that needs to perform callBack operation on -359 * completion of multiGets. -360 */ -361 static class RegionScannersCloseCallBack implements RpcCallback { -362 private final List<RegionScanner> scanners = new ArrayList<>(); -363 -364 public void addScanner(RegionScanner scanner) { -365 this.scanners.add(scanner); -366 } -367 -368 @Override -369 public void run() { -370 for (RegionScanner scanner : scanners) { -371 try { -372 scanner.close(); -373 } catch (IOException e) { -374 LOG.error("Exception while closing the scanner " + scanner, e); -375 } -376 } -377 } -378 } -379 -380 /** -381 * Holder class which holds the RegionScanner, nextCallSeq and RpcCallbacks together. -382 */ -383 private static final class RegionScannerHolder { -384 -385 private final AtomicLong nextCallSeq = new AtomicLong(0); -386 private final String scannerName; -387 private final RegionScanner s; -388 private final Region r; -389 private final RpcCallback closeCallBack; -390 private final RpcCallback shippedCallback; -391 private byte[] rowOfLastPartialResult; -392 private boolean needCursor; -393 -394 public RegionScannerHolder(String scannerName, RegionScanner s, Region r, -395 RpcCallback closeCallBack, RpcCallback shippedCallback, boolean needCursor) { -396 this.scannerName = scannerName; -397 this.s = s; -398 this.r = r; -399 this.closeCallBack = closeCallBack; -400 this.shippedCallback = shippedCallback; -401 this.needCursor = needCursor; -402 } -403 -404 public long getNextCallSeq() { -405 return nextCallSeq.get(); -406 } -407 -408 public boolean incNextCallSeq(long currentSeq) { -409 // Use CAS to prevent multiple scan request running on the same scanner. -410 return nextCallSeq.compareAndSet(currentSeq, currentSeq + 1); -411 } -412 } -413 -414 /** -415 * Instantiated as a scanner lease. If the lease times out, the scanner is -416 * closed -417 */ -418 private class ScannerListener implements LeaseListener { -419 private final String scannerName; -420 -421 ScannerListener(final String n) { -422 this.scannerName = n; -423 } -424 -425 @Override -426 public void leaseExpired() { -427 RegionScannerHolder rsh = scanners.remove(this.scannerName); -428 if (rsh != null) { -429 RegionScanner s = rsh.s; -430 LOG.info("Scanner " + this.scannerName + " lease expired on region " -431 + s.getRegionInfo().getRegionNameAsString()); -432 Region region = null; -433 try { -434 region = regionServer.getRegion(s.getRegionInfo().getRegionName()); -435 if (region != null && region.getCoprocessorHost() != null) { -436 region.getCoprocessorHost().preScannerClose(s); -437 } -438 } catch (IOException e) { -439 LOG.error("Closing scanner for " + s.getRegionInfo().getRegionNameAsString(), e); -440 } finally { -441 try { -442 s.close(); -443 if (region != null && region.getCoprocessorHost() != null) { -444 region.getCoprocessorHost().postScannerClose(s); -445 } -446 } catch (IOException e) { -447 LOG.error("Closing scanner for " + s.getRegionInfo().getRegionNameAsString(), e); -448 } -449 } -450 } else { -451 LOG.warn("Scanner " + this.scannerName + " lease expired, but no related" + -452 " scanner found, hence no chance to close that related scanner!"); -453 } -454 } -455 } -456 -457 private static ResultOrException getResultOrException(final ClientProtos.Result r, -458 final int index){ -459 return getResultOrException(ResponseConverter.buildActionResult(r), index); -460 } -461 -462 private static ResultOrException getResultOrException(final Exception e, final int index) { -463 return getResultOrException(ResponseConverter.buildActionResult(e), index); -464 } -465 -466 private static ResultOrException getResultOrException( -467 final ResultOrException.Builder builder, final int index) { -468 return builder.setIndex(index).build(); -469 } -470 -471 /** -472 * Starts the nonce operation for a mutation, if needed. -473 * @param mutation Mutation. -474 * @param nonceGroup Nonce group from the request. -475 * @returns whether to proceed this mutation. -476 */ -477 private boolean startNonceOperation(final MutationProto mutation, long nonceGroup) -478 throws IOException { -479 if (regionServer.nonceManager == null || !mutation.hasNonce()) return true; -480 boolean canProceed = false; -481 try { -482 canProceed = regionServer.nonceManager.startOperation( -483 nonceGroup, mutation.getNonce(), regionServer); -484 } catch (InterruptedException ex) { -485 throw new InterruptedIOException("Nonce start operation interrupted"); -486 } -487 return canProceed; -488 } -489 -490 /** -491 * Ends nonce operation for a mutation, if needed. -492 * @param mutation Mutation. -493 * @param nonceGroup Nonce group from the request. Always 0 in initial implementation. -494 * @param success Whether the operation for this nonce has succeeded. -495 */ -496 private void endNonceOperation(final MutationProto mutation, -497 long nonceGroup, boolean success) { -498 if (regionServer.nonceManager != null && mutation.hasNonce()) { -499 regionServer.nonceManager.endOperation(nonceGroup, mutation.getNonce(), success); -500 } -501 } -502 -503 private boolean isClientCellBlockSupport(RpcCallContext context) { -504 return context != null && context.isClientCellBlockSupported(); -505 } -506 -507 private void addResult(final MutateResponse.Builder builder, final Result result, -508 final HBaseRpcController rpcc, boolean clientCellBlockSupported) { -509 if (result == null) return; -510 if (clientCellBlockSupported) { -511 builder.setResult(ProtobufUtil.toResultNoData(result)); -512 rpcc.setCellScanner(result.cellScanner()); -513 } else { -514 ClientProtos.Result pbr = ProtobufUtil.toResult(result); -515 builder.setResult(pbr); -516 } -517 } -518 -519 private void addResults(ScanResponse.Builder builder, List<Result> results, -520 HBaseRpcController controller, boolean isDefaultRegion, boolean clientCellBlockSupported) { -521 builder.setStale(!isDefaultRegion); -522 if (results.isEmpty()) { -523 return; -524 } -525 if (clientCellBlockSupported) { -526 for (Result res : results) { -527 builder.addCellsPerResult(res.size()); -528 builder.addPartialFlagPerResult(res.mayHaveMoreCellsInRow()); -529 } -530 controller.setCellScanner(CellUtil.createCellScanner(results)); -531 } else { -532 for (Result res : results) { -533 ClientProtos.Result pbr = ProtobufUtil.toResult(res); -534 builder.addResults(pbr); -535 } -536 } -537 } -538 -539 /** -540 * Mutate a list of rows atomically. -541 * -542 * @param region -543 * @param actions -544 * @param cellScanner if non-null, the mutation data -- the Cell content. -545 * @throws IOException -546 */ -547 private void mutateRows(final Region region, -548 final List<ClientProtos.Action> actions, -549 final CellScanner cellScanner, RegionActionResult.Builder builder) throws IOException { -550 if (!region.getRegionInfo().isMetaTable()) { -551