You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2025/09/22 14:51:05 UTC

(hbase-site) branch asf-site updated: Published site at b5cdaab0cbe889564c60c6aa7a607d92e20771dc.

This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 28c5a77545f Published site at b5cdaab0cbe889564c60c6aa7a607d92e20771dc.
28c5a77545f is described below

commit 28c5a77545fe53c05772fc9de1f845d9b3b87543
Author: jenkins <bu...@apache.org>
AuthorDate: Mon Sep 22 14:50:14 2025 +0000

    Published site at b5cdaab0cbe889564c60c6aa7a607d92e20771dc.
---
 acid-semantics.html                                |    2 +-
 apache_hbase_reference_guide.pdf                   | 3754 +++++-----
 apidocs/index-all.html                             |   38 +-
 apidocs/member-search-index.js                     |    2 +-
 .../org/apache/hadoop/hbase/client/Admin.html      |    5 +-
 .../org/apache/hadoop/hbase/client/AsyncAdmin.html |    5 +-
 .../hadoop/hbase/master/MasterRpcServices.html     | 7223 +++++++++----------
 .../org/apache/hadoop/hbase/util/VersionInfo.html  |  269 +-
 book.html                                          |    7 +-
 bulk-loads.html                                    |    2 +-
 checkstyle-aggregate.html                          |  452 +-
 checkstyle.rss                                     |  870 +--
 coc.html                                           |    2 +-
 dependency-convergence.html                        | 1004 +--
 dependency-info.html                               |    2 +-
 dependency-management.html                         |   32 +-
 devapidocs/allclasses-index.html                   | 1192 ++--
 devapidocs/index-all.html                          |   62 +
 devapidocs/member-search-index.js                  |    2 +-
 .../hbase/backup/impl/BackupSystemTable.html       |   62 +-
 .../hadoop/hbase/class-use/HBaseIOException.html   |   19 +-
 .../apache/hadoop/hbase/class-use/TableName.html   |   21 +-
 .../org/apache/hadoop/hbase/client/Admin.html      |  255 +-
 .../hadoop/hbase/client/AdminOverAsyncAdmin.html   |  194 +-
 .../org/apache/hadoop/hbase/client/AsyncAdmin.html |  212 +-
 .../hadoop/hbase/client/AsyncHBaseAdmin.html       |  183 +-
 ...seAdmin.AddColumnFamilyProcedureBiConsumer.html |    6 +-
 ...seAdmin.CreateNamespaceProcedureBiConsumer.html |    6 +-
 ...cHBaseAdmin.CreateTableProcedureBiConsumer.html |    6 +-
 ...dmin.DeleteColumnFamilyProcedureBiConsumer.html |    6 +-
 ...seAdmin.DeleteNamespaceProcedureBiConsumer.html |    6 +-
 ...cHBaseAdmin.DeleteTableProcedureBiConsumer.html |    8 +-
 ...HBaseAdmin.DisableTableProcedureBiConsumer.html |    6 +-
 ...cHBaseAdmin.EnableTableProcedureBiConsumer.html |    6 +-
 ...ncHBaseAdmin.FlushTableProcedureBiConsumer.html |    6 +-
 ...eAdmin.MergeTableRegionProcedureBiConsumer.html |    6 +-
 ...dmin.ModifyColumnFamilyProcedureBiConsumer.html |    6 +-
 ...nFamilyStoreFileTrackerProcedureBiConsumer.html |    6 +-
 ...seAdmin.ModifyNamespaceProcedureBiConsumer.html |    6 +-
 ...cHBaseAdmin.ModifyTableProcedureBiConsumer.html |    6 +-
 ...fyTableStoreFileTrackerProcedureBiConsumer.html |    6 +-
 .../RawAsyncHBaseAdmin.ProcedureBiConsumer.html    |    2 +-
 ...cHBaseAdmin.ReplicationProcedureBiConsumer.html |   14 +-
 ...storeBackupSystemTableProcedureBiConsumer.html} |   32 +-
 ...syncHBaseAdmin.RollAllWALWritersBiConsumer.html |    8 +-
 ...syncHBaseAdmin.SnapshotProcedureBiConsumer.html |    6 +-
 ...eAdmin.SplitTableRegionProcedureBiConsumer.html |    6 +-
 ...aseAdmin.TruncateRegionProcedureBiConsumer.html |    6 +-
 ...BaseAdmin.TruncateTableProcedureBiConsumer.html |    6 +-
 .../hadoop/hbase/client/RawAsyncHBaseAdmin.html    |  470 +-
 .../RawAsyncHBaseAdmin.ProcedureBiConsumer.html    |   19 +-
 ...estoreBackupSystemTableProcedureBiConsumer.html |   40 +-
 .../hadoop/hbase/client/package-summary.html       |  328 +-
 .../apache/hadoop/hbase/client/package-tree.html   |    1 +
 .../hbase/io/FileLink.FileLinkInputStream.html     |    2 +-
 .../MasterRpcServices.BalanceSwitchMode.html       |   12 +-
 .../hadoop/hbase/master/MasterRpcServices.html     |  626 +-
 .../AbstractStateMachineTableProcedure.html        |    2 +-
 .../RestoreBackupSystemTableProcedure.html         |  471 ++
 ...TableProcedureInterface.TableOperationType.html |   10 +-
 .../master/procedure/TableProcedureInterface.html  |    6 +-
 .../hadoop/hbase/master/procedure/TableQueue.html  |    2 +-
 .../AbstractStateMachineTableProcedure.html        |   17 +-
 .../procedure/class-use/MasterProcedureEnv.html    |  501 +-
 .../RestoreBackupSystemTableProcedure.html         |   62 +
 ...TableProcedureInterface.TableOperationType.html |   35 +-
 .../class-use/TableProcedureInterface.html         |   27 +-
 .../hbase/master/procedure/package-summary.html    |   98 +-
 .../hbase/master/procedure/package-tree.html       |    1 +
 .../hbase/procedure2/class-use/Procedure.html      |   92 +-
 .../class-use/ProcedureSuspendedException.html     |   34 +-
 .../class-use/ProcedureYieldException.html         |   20 +-
 .../class-use/StateMachineProcedure.Flow.html      |   33 +-
 .../class-use/StateMachineProcedure.html           |   31 +-
 .../hadoop/hbase/thrift2/client/ThriftAdmin.html   |  220 +-
 .../org/apache/hadoop/hbase/util/VersionInfo.html  |   41 +-
 .../apache/hadoop/hdfs/DummyDFSOutputStream.html   |    2 +-
 devapidocs/overview-tree.html                      |    2 +
 .../backup/impl/BackupSystemTable.WALItem.html     |  660 +-
 .../hbase/backup/impl/BackupSystemTable.html       |  660 +-
 .../org/apache/hadoop/hbase/client/Admin.html      |    5 +-
 ...ncAdmin.SyncCoprocessorRpcChannelOverAsync.html |    7 +-
 .../hadoop/hbase/client/AdminOverAsyncAdmin.html   |    7 +-
 .../org/apache/hadoop/hbase/client/AsyncAdmin.html |    5 +-
 .../hadoop/hbase/client/AsyncHBaseAdmin.html       |    7 +-
 ...seAdmin.AddColumnFamilyProcedureBiConsumer.html | 3637 +++++-----
 .../client/RawAsyncHBaseAdmin.AdminRpcCall.html    | 3637 +++++-----
 .../hbase/client/RawAsyncHBaseAdmin.Converter.html | 3637 +++++-----
 ...seAdmin.CreateNamespaceProcedureBiConsumer.html | 3637 +++++-----
 ...cHBaseAdmin.CreateTableProcedureBiConsumer.html | 3637 +++++-----
 ...dmin.DeleteColumnFamilyProcedureBiConsumer.html | 3637 +++++-----
 ...seAdmin.DeleteNamespaceProcedureBiConsumer.html | 3637 +++++-----
 ...cHBaseAdmin.DeleteTableProcedureBiConsumer.html | 3637 +++++-----
 ...HBaseAdmin.DisableTableProcedureBiConsumer.html | 3637 +++++-----
 ...cHBaseAdmin.EnableTableProcedureBiConsumer.html | 3637 +++++-----
 ...ncHBaseAdmin.FlushTableProcedureBiConsumer.html | 3637 +++++-----
 .../client/RawAsyncHBaseAdmin.MasterRpcCall.html   | 3637 +++++-----
 ...eAdmin.MergeTableRegionProcedureBiConsumer.html | 3637 +++++-----
 ...dmin.ModifyColumnFamilyProcedureBiConsumer.html | 3637 +++++-----
 ...nFamilyStoreFileTrackerProcedureBiConsumer.html | 3637 +++++-----
 ...seAdmin.ModifyNamespaceProcedureBiConsumer.html | 3637 +++++-----
 ...cHBaseAdmin.ModifyTableProcedureBiConsumer.html | 3637 +++++-----
 ...fyTableStoreFileTrackerProcedureBiConsumer.html | 3637 +++++-----
 ...yncHBaseAdmin.NamespaceProcedureBiConsumer.html | 3637 +++++-----
 .../RawAsyncHBaseAdmin.ProcedureBiConsumer.html    | 3637 +++++-----
 ...cHBaseAdmin.ReplicationProcedureBiConsumer.html | 3637 +++++-----
 ...storeBackupSystemTableProcedureBiConsumer.html} | 3639 +++++-----
 ...syncHBaseAdmin.RollAllWALWritersBiConsumer.html | 3637 +++++-----
 ...syncHBaseAdmin.SnapshotProcedureBiConsumer.html | 3637 +++++-----
 ...eAdmin.SplitTableRegionProcedureBiConsumer.html | 3637 +++++-----
 ...awAsyncHBaseAdmin.TableProcedureBiConsumer.html | 3637 +++++-----
 ...aseAdmin.TruncateRegionProcedureBiConsumer.html | 3637 +++++-----
 ...BaseAdmin.TruncateTableProcedureBiConsumer.html | 3637 +++++-----
 .../hadoop/hbase/client/RawAsyncHBaseAdmin.html    | 3637 +++++-----
 .../MasterRpcServices.BalanceSwitchMode.html       | 7223 +++++++++----------
 .../hadoop/hbase/master/MasterRpcServices.html     | 7223 +++++++++----------
 .../RestoreBackupSystemTableProcedure.html         |  249 +
 ...TableProcedureInterface.TableOperationType.html |   29 +-
 .../master/procedure/TableProcedureInterface.html  |   29 +-
 .../hadoop/hbase/master/procedure/TableQueue.html  |   63 +-
 .../hadoop/hbase/thrift2/client/ThriftAdmin.html   |   29 +-
 .../hbase/trace/TraceUtil.ThrowingCallable.html    |    6 +-
 .../hbase/trace/TraceUtil.ThrowingRunnable.html    |    6 +-
 .../org/apache/hadoop/hbase/trace/TraceUtil.html   |    6 +-
 .../org/apache/hadoop/hbase/util/VersionInfo.html  |  269 +-
 devapidocs/type-search-index.js                    |    2 +-
 downloads.html                                     |    2 +-
 export_control.html                                |    2 +-
 index.html                                         |    2 +-
 issue-management.html                              |    2 +-
 licenses.html                                      |    2 +-
 mailing-lists.html                                 |    2 +-
 metrics.html                                       |    2 +-
 old_news.html                                      |    2 +-
 plugin-management.html                             |    2 +-
 plugins.html                                       |    2 +-
 poweredbyhbase.html                                |    2 +-
 project-info.html                                  |    2 +-
 project-reports.html                               |    2 +-
 pseudo-distributed.html                            |    2 +-
 replication.html                                   |    2 +-
 resources.html                                     |    2 +-
 scm.html                                           |    2 +-
 sponsors.html                                      |    2 +-
 summary.html                                       |    2 +-
 supportingprojects.html                            |    2 +-
 team.html                                          |    2 +-
 testapidocs/allclasses-index.html                  | 3288 ++++-----
 testapidocs/index-all.html                         |  210 +-
 testapidocs/member-search-index.js                 |    2 +-
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |    6 -
 .../hbase/class-use/HBaseJupiterExtension.html     |   45 +-
 .../hbase/class-use/TestJUnit5TagConstants.html    |   45 +-
 .../org/apache/hadoop/hbase/package-summary.html   |  382 +-
 .../org/apache/hadoop/hbase/package-tree.html      |    2 +
 testapidocs/overview-tree.html                     |    2 +
 .../hbase/ClassTestFinder.TestClassFilter.html     |  197 +-
 .../hbase/ClassTestFinder.TestFileNameFilter.html  |  197 +-
 .../org/apache/hadoop/hbase/ClassTestFinder.html   |  197 +-
 .../apache/hadoop/hbase/HBaseJupiterExtension.html |  290 +
 .../hbase/HBaseTestingUtil.SeenRowTracker.html     | 7304 ++++++++++----------
 .../org/apache/hadoop/hbase/HBaseTestingUtil.html  | 7304 ++++++++++----------
 .../apache/hadoop/hbase/TestCheckTestClasses.html  |   20 +-
 .../hadoop/hbase/TestJUnit5TagConstants.html       |   55 +-
 .../apache/hadoop/hbase/backup/TestBackupBase.html |   30 +-
 .../hbase/backup/TestBackupHFileCleaner.html       |    4 +-
 .../hadoop/hbase/backup/TestBackupSmallTests.html  |    4 +-
 .../hadoop/hbase/http/LdapServerTestBase.html      |  235 +-
 .../apache/hadoop/hbase/http/TestLdapAdminACL.html |  188 +-
 .../hadoop/hbase/http/TestLdapHttpServer.html      |   89 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsKillRS.html   |  531 +-
 .../hbase/rsgroup/VerifyingRSGroupAdmin.html       |   23 +-
 .../hbase/testclassification/ClientTests.html      |    3 +-
 .../hbase/testclassification/CoprocessorTests.html |    3 +-
 .../hbase/testclassification/FilterTests.html      |    3 +-
 .../hbase/testclassification/FlakeyTests.html      |    3 +-
 .../hadoop/hbase/testclassification/IOTests.html   |    3 +-
 .../hbase/testclassification/IntegrationTests.html |    3 +-
 .../hbase/testclassification/LargeTests.html       |    3 +-
 .../hbase/testclassification/MapReduceTests.html   |    3 +-
 .../hbase/testclassification/MasterTests.html      |    3 +-
 .../hbase/testclassification/MediumTests.html      |    3 +-
 .../hbase/testclassification/MetricsTests.html     |    3 +-
 .../hadoop/hbase/testclassification/MiscTests.html |    3 +-
 .../hadoop/hbase/testclassification/RPCTests.html  |    3 +-
 .../hbase/testclassification/RSGroupTests.html     |    3 +-
 .../testclassification/RegionServerTests.html      |    3 +-
 .../hbase/testclassification/ReplicationTests.html |    3 +-
 .../hadoop/hbase/testclassification/RestTests.html |    3 +-
 .../hbase/testclassification/SecurityTests.html    |    3 +-
 .../hbase/testclassification/SmallTests.html       |    3 +-
 .../testclassification/VerySlowMapReduceTests.html |    4 +-
 .../VerySlowRegionServerTests.html                 |    4 +-
 .../hadoop/hbase/testclassification/ZKTests.html   |    3 +-
 testapidocs/type-search-index.js                   |    2 +-
 testdevapidocs/allclasses-index.html               | 7232 +++++++++----------
 testdevapidocs/constant-values.html                |  271 +
 testdevapidocs/index-all.html                      |  359 +-
 testdevapidocs/member-search-index.js              |    2 +-
 .../hbase/ClassTestFinder.TestClassFilter.html     |   14 +-
 .../hbase/ClassTestFinder.TestFileNameFilter.html  |   10 +-
 .../org/apache/hadoop/hbase/ClassTestFinder.html   |   17 +-
 .../apache/hadoop/hbase/HBaseJupiterExtension.html |  456 ++
 ...TestingUtil.FsDatasetAsyncDiskServiceFixer.html |   12 +-
 .../hbase/HBaseTestingUtil.SeenRowTracker.html     |   20 +-
 .../org/apache/hadoop/hbase/HBaseTestingUtil.html  | 1215 ++--
 ...NameFilter.html => TestJUnit5TagConstants.html} |   98 +-
 .../master/TestRestoreBackupSystemTable.html}      |  110 +-
 .../class-use/TestRestoreBackupSystemTable.html    |   62 +
 .../hbase/backup/master/package-summary.html       |    2 +
 .../hadoop/hbase/backup/master/package-tree.html   |    1 +
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |    6 -
 .../HBaseJupiterExtension.html}                    |   45 +-
 .../hadoop/hbase/class-use/HBaseTestingUtil.html   |  146 +-
 .../TestJUnit5TagConstants.html}                   |   45 +-
 .../hadoop/hbase/http/LdapServerTestBase.html      |  174 +-
 .../apache/hadoop/hbase/http/TestLdapAdminACL.html |   61 +-
 .../hadoop/hbase/http/TestLdapHttpServer.html      |   37 +-
 .../TestFSDataInputStreamWrapper.ParentClass.html  |    4 +-
 .../io/TestFileLink.MyDistributedFileSystem.html   |    4 +-
 .../TestBlockIOUtils.MyFSDataInputStream.html      |    4 +-
 .../org/apache/hadoop/hbase/io/package-tree.html   |    2 +-
 .../TestSnapshotProcedureEarlyExpiration.html      |   10 +-
 .../org/apache/hadoop/hbase/package-summary.html   |  534 +-
 .../org/apache/hadoop/hbase/package-tree.html      |    2 +
 .../org/apache/hadoop/hbase/package-use.html       |    4 +
 .../TestFSErrorsExposed.FaultyInputStream.html     |    4 +-
 .../TestHStore.FaultyOutputStream.html             |    2 +-
 ...geTransactionOnCluster.MyMasterRpcServices.html |    2 +-
 ...itTransactionOnCluster.MyMasterRpcServices.html |    2 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsKillRS.html   |   40 +-
 .../hbase/rsgroup/VerifyingRSGroupAdmin.html       |  146 +-
 .../hbase/testclassification/ClientTests.html      |   49 +-
 .../hbase/testclassification/CoprocessorTests.html |   49 +-
 .../hbase/testclassification/FilterTests.html      |   49 +-
 .../hbase/testclassification/FlakeyTests.html      |   49 +-
 .../hadoop/hbase/testclassification/IOTests.html   |   49 +-
 .../hbase/testclassification/IntegrationTests.html |   49 +-
 .../hbase/testclassification/LargeTests.html       |   49 +-
 .../hbase/testclassification/MapReduceTests.html   |   49 +-
 .../hbase/testclassification/MasterTests.html      |   49 +-
 .../hbase/testclassification/MediumTests.html      |   49 +-
 .../hbase/testclassification/MetricsTests.html     |   49 +-
 .../hadoop/hbase/testclassification/MiscTests.html |   49 +-
 .../hadoop/hbase/testclassification/RPCTests.html  |   49 +-
 .../hbase/testclassification/RSGroupTests.html     |   49 +-
 .../testclassification/RegionServerTests.html      |   49 +-
 .../hbase/testclassification/ReplicationTests.html |   49 +-
 .../hadoop/hbase/testclassification/RestTests.html |   49 +-
 .../hbase/testclassification/SecurityTests.html    |   49 +-
 .../hbase/testclassification/SmallTests.html       |   49 +-
 .../testclassification/VerySlowMapReduceTests.html |   49 +-
 .../VerySlowRegionServerTests.html                 |   49 +-
 .../hadoop/hbase/testclassification/ZKTests.html   |   49 +-
 ...Utils.AlwaysFailSetStoragePolicyFileSystem.html |    4 +-
 ...eFSUtils.IsFileClosedDistributedFileSystem.html |    4 +-
 .../org/apache/hadoop/hbase/util/package-tree.html |    2 +-
 .../hbase/wal/TestWALFactory.InputStreamProxy.html |    4 +-
 testdevapidocs/overview-tree.html                  |    5 +-
 .../hbase/ClassTestFinder.TestClassFilter.html     |  197 +-
 .../hbase/ClassTestFinder.TestFileNameFilter.html  |  197 +-
 .../org/apache/hadoop/hbase/ClassTestFinder.html   |  197 +-
 .../apache/hadoop/hbase/HBaseJupiterExtension.html |  290 +
 ...TestingUtil.FsDatasetAsyncDiskServiceFixer.html | 7304 ++++++++++----------
 .../hbase/HBaseTestingUtil.SeenRowTracker.html     | 7304 ++++++++++----------
 .../org/apache/hadoop/hbase/HBaseTestingUtil.html  | 7304 ++++++++++----------
 .../apache/hadoop/hbase/TestCheckTestClasses.html  |   20 +-
 ...estClasses.html => TestJUnit5TagConstants.html} |   55 +-
 ...estBackupBase.FullTableBackupClientForTest.html |   30 +-
 ...upBase.IncrementalTableBackupClientForTest.html |   30 +-
 .../apache/hadoop/hbase/backup/TestBackupBase.html |   30 +-
 .../hbase/backup/TestBackupHFileCleaner.html       |    4 +-
 .../hadoop/hbase/backup/TestBackupSmallTests.html  |    4 +-
 .../master/TestRestoreBackupSystemTable.html       |  162 +
 .../hadoop/hbase/http/LdapServerTestBase.html      |  235 +-
 .../apache/hadoop/hbase/http/TestLdapAdminACL.html |  188 +-
 .../hadoop/hbase/http/TestLdapHttpServer.html      |   89 +-
 .../TestSnapshotProcedureEarlyExpiration.html      |  136 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsKillRS.html   |  531 +-
 .../hbase/rsgroup/VerifyingRSGroupAdmin.html       |   23 +-
 .../hbase/testclassification/ClientTests.html      |    3 +-
 .../hbase/testclassification/CoprocessorTests.html |    3 +-
 .../hbase/testclassification/FilterTests.html      |    3 +-
 .../hbase/testclassification/FlakeyTests.html      |    3 +-
 .../hadoop/hbase/testclassification/IOTests.html   |    3 +-
 .../hbase/testclassification/IntegrationTests.html |    3 +-
 .../hbase/testclassification/LargeTests.html       |    3 +-
 .../hbase/testclassification/MapReduceTests.html   |    3 +-
 .../hbase/testclassification/MasterTests.html      |    3 +-
 .../hbase/testclassification/MediumTests.html      |    3 +-
 .../hbase/testclassification/MetricsTests.html     |    3 +-
 .../hadoop/hbase/testclassification/MiscTests.html |    3 +-
 .../hadoop/hbase/testclassification/RPCTests.html  |    3 +-
 .../hbase/testclassification/RSGroupTests.html     |    3 +-
 .../testclassification/RegionServerTests.html      |    3 +-
 .../hbase/testclassification/ReplicationTests.html |    3 +-
 .../hadoop/hbase/testclassification/RestTests.html |    3 +-
 .../hbase/testclassification/SecurityTests.html    |    3 +-
 .../hbase/testclassification/SmallTests.html       |    3 +-
 .../testclassification/VerySlowMapReduceTests.html |    4 +-
 .../VerySlowRegionServerTests.html                 |    4 +-
 .../hadoop/hbase/testclassification/ZKTests.html   |    3 +-
 testdevapidocs/type-search-index.js                |    2 +-
 303 files changed, 101903 insertions(+), 96719 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 5bb35b9db0e..738e6256fa2 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -469,7 +469,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-09-15
+        Last Published: 2025-09-22
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 764d03dc1b9..14fdd3a42da 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 2.0.6, based on Prawn 2.4.0)
 /Producer (Apache HBase Team)
-/ModDate (D:20250915143001+00'00')
-/CreationDate (D:20250915144538+00'00')
+/ModDate (D:20250922143127+00'00')
+/CreationDate (D:20250922144657+00'00')
 >>
 endobj
 2 0 obj
@@ -1081148,7 +1081148,7 @@ endobj
 [4202 0 R /XYZ 0 221.25 null]
 endobj
 4206 0 obj
-<< /Length 24828
+<< /Length 24664
 >>
 stream
 q
@@ -1082673,7 +1082673,7 @@ ET
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
 
-1.82032 Tw
+1.95117 Tw
 
 BT
 63.24 314.755 Td
@@ -1082684,7 +1082684,7 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-1.82032 Tw
+1.95117 Tw
 
 BT
 63.24 314.755 Td
@@ -1082699,12 +1082699,12 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-1.82032 Tw
+1.95117 Tw
 
 BT
 90.8025 314.755 Td
 /F1.0 10.5 Tf
-<20746573742063617365732061726520657865637574656420696e206120736861726564204a564d20616e64206561636820746573742073756974652f7465737420636c6173732073686f756c642072756e20696e203135> Tj
+[<20746573742063617365732061726520657865637574656420696e207365706172> 20.01953 <617465204a564d20616e64206561636820746573742073756974652f7465737420636c6173732073686f756c642072756e20696e203135>] TJ
 ET
 
 
@@ -1082824,7 +1082824,7 @@ ET
 BT
 63.24 251.635 Td
 /F1.0 10.5 Tf
-[<7465737465642e204d756c7469706c652073746172742f73746f7073206d61> 20.01953 <79206c65616b207265736f7572636573206f72206a757374206f7665727768656c6d207468652073696e676c65204a564d20636f6e746578742e>] TJ
+<7465737465642e> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1341062,1882 +1341062,1882 @@ xref
 0015421734 00000 n 
 0015421868 00000 n 
 0015421916 00000 n 
-0015446800 00000 n 
-0015447233 00000 n 
-0015447427 00000 n 
-0015447562 00000 n 
-0015447619 00000 n 
-0015447805 00000 n 
-0015447862 00000 n 
-0015448048 00000 n 
-0015448105 00000 n 
-0015461950 00000 n 
-0015462374 00000 n 
-0015462430 00000 n 
-0015462565 00000 n 
-0015462613 00000 n 
-0015463184 00000 n 
-0015463398 00000 n 
-0015463446 00000 n 
-0015463577 00000 n 
-0015463625 00000 n 
-0015463673 00000 n 
-0015483716 00000 n 
-0015484090 00000 n 
-0015484138 00000 n 
-0015484186 00000 n 
-0015500952 00000 n 
-0015501326 00000 n 
-0015501374 00000 n 
-0015501813 00000 n 
-0015502022 00000 n 
-0015502070 00000 n 
-0015502118 00000 n 
-0015524325 00000 n 
-0015524718 00000 n 
-0015524766 00000 n 
-0015524814 00000 n 
-0015524862 00000 n 
-0015524910 00000 n 
-0015525040 00000 n 
-0015525088 00000 n 
-0015551057 00000 n 
-0015551418 00000 n 
-0015551466 00000 n 
-0015551514 00000 n 
-0015567026 00000 n 
-0015567400 00000 n 
-0015567448 00000 n 
-0015585027 00000 n 
-0015585420 00000 n 
-0015585468 00000 n 
-0015585672 00000 n 
-0015585720 00000 n 
-0015609025 00000 n 
-0015609427 00000 n 
-0015609475 00000 n 
-0015609671 00000 n 
-0015609855 00000 n 
-0015627307 00000 n 
-0015627722 00000 n 
-0015627770 00000 n 
-0015627954 00000 n 
-0015628136 00000 n 
-0015640498 00000 n 
-0015640846 00000 n 
-0015654390 00000 n 
-0015654751 00000 n 
-0015654799 00000 n 
-0015666890 00000 n 
-0015667238 00000 n 
-0015682127 00000 n 
-0015682520 00000 n 
-0015682568 00000 n 
-0015682616 00000 n 
-0015682751 00000 n 
-0015682799 00000 n 
-0015704707 00000 n 
-0015705081 00000 n 
-0015705129 00000 n 
-0015712958 00000 n 
-0015713319 00000 n 
-0015722622 00000 n 
-0015723036 00000 n 
-0015723084 00000 n 
-0015723132 00000 n 
-0015723180 00000 n 
-0015723228 00000 n 
-0015723276 00000 n 
-0015740465 00000 n 
-0015740881 00000 n 
-0015740930 00000 n 
-0015741136 00000 n 
-0015741280 00000 n 
-0015741329 00000 n 
-0015771092 00000 n 
-0015771453 00000 n 
-0015771501 00000 n 
-0015771549 00000 n 
-0015771597 00000 n 
-0015771645 00000 n 
-0015771693 00000 n 
-0015785624 00000 n 
-0015786013 00000 n 
-0015786061 00000 n 
-0015786503 00000 n 
-0015786551 00000 n 
-0015786599 00000 n 
-0015786647 00000 n 
-0015786874 00000 n 
-0015787099 00000 n 
-0015797760 00000 n 
-0015798166 00000 n 
-0015798214 00000 n 
-0015798262 00000 n 
-0015798779 00000 n 
-0015798974 00000 n 
-0015799022 00000 n 
-0015811307 00000 n 
-0015811714 00000 n 
-0015811762 00000 n 
-0015811973 00000 n 
-0015812021 00000 n 
-0015812069 00000 n 
-0015812117 00000 n 
-0015812165 00000 n 
-0015824406 00000 n 
-0015824853 00000 n 
-0015824901 00000 n 
-0015825087 00000 n 
-0015825262 00000 n 
-0015825400 00000 n 
-0015825691 00000 n 
-0015825912 00000 n 
-0015825961 00000 n 
-0015826089 00000 n 
-0015826221 00000 n 
-0015826270 00000 n 
-0015844002 00000 n 
-0015844468 00000 n 
-0015844516 00000 n 
-0015844683 00000 n 
-0015844854 00000 n 
-0015845048 00000 n 
-0015845097 00000 n 
-0015845279 00000 n 
-0015845449 00000 n 
-0015845647 00000 n 
-0015845696 00000 n 
-0015845745 00000 n 
-0015845794 00000 n 
-0015845842 00000 n 
-0015860384 00000 n 
-0015860796 00000 n 
-0015860948 00000 n 
-0015861078 00000 n 
-0015861243 00000 n 
-0015861398 00000 n 
-0015861551 00000 n 
-0015861701 00000 n 
-0015875043 00000 n 
-0015875509 00000 n 
-0015875557 00000 n 
-0015875749 00000 n 
-0015875935 00000 n 
-0015875983 00000 n 
-0015876217 00000 n 
-0015876265 00000 n 
-0015876456 00000 n 
-0015876672 00000 n 
-0015876720 00000 n 
-0015876910 00000 n 
-0015899016 00000 n 
-0015899403 00000 n 
-0015941553 00000 n 
-0015941901 00000 n 
-0015960455 00000 n 
-0015960862 00000 n 
-0015960910 00000 n 
-0015960958 00000 n 
-0015961180 00000 n 
-0015961398 00000 n 
-0015961572 00000 n 
-0015961837 00000 n 
-0015973570 00000 n 
-0015973986 00000 n 
-0015974034 00000 n 
-0015974243 00000 n 
-0015974450 00000 n 
-0015974498 00000 n 
-0015974546 00000 n 
-0015974827 00000 n 
-0015975107 00000 n 
-0015975155 00000 n 
-0015975203 00000 n 
-0015975353 00000 n 
-0015975401 00000 n 
-0015991841 00000 n 
-0015992234 00000 n 
-0015992454 00000 n 
-0015992502 00000 n 
-0015992550 00000 n 
-0015992598 00000 n 
-0015996007 00000 n 
-0015996387 00000 n 
-0015996435 00000 n 
-0015997021 00000 n 
-0015997218 00000 n 
-0015999941 00000 n 
-0016000326 00000 n 
-0016000374 00000 n 
-0016000609 00000 n 
-0016000842 00000 n 
-0016000972 00000 n 
-0016044588 00000 n 
-0016044968 00000 n 
-0016045016 00000 n 
-0016045392 00000 n 
-0016045553 00000 n 
-0016054008 00000 n 
-0016054375 00000 n 
-0016054575 00000 n 
-0016087057 00000 n 
-0016087446 00000 n 
-0016087494 00000 n 
-0016087674 00000 n 
-0016087800 00000 n 
-0016108292 00000 n 
-0016108640 00000 n 
-0016151008 00000 n 
-0016151388 00000 n 
-0016151436 00000 n 
-0016151607 00000 n 
-0016187157 00000 n 
-0016187505 00000 n 
-0016227844 00000 n 
-0016228237 00000 n 
-0016228285 00000 n 
-0016228411 00000 n 
-0016280771 00000 n 
-0016281119 00000 n 
-0016303953 00000 n 
-0016304333 00000 n 
-0016304631 00000 n 
-0016305035 00000 n 
-0016305383 00000 n 
-0016305431 00000 n 
-0016321179 00000 n 
-0016321599 00000 n 
-0016321647 00000 n 
-0016321843 00000 n 
-0016321971 00000 n 
-0016322086 00000 n 
-0016322217 00000 n 
-0016322265 00000 n 
-0016346122 00000 n 
-0016346483 00000 n 
-0016346532 00000 n 
-0016365170 00000 n 
-0016365518 00000 n 
-0016370642 00000 n 
-0016370990 00000 n 
-0016376489 00000 n 
-0016376893 00000 n 
-0016376941 00000 n 
-0016377135 00000 n 
-0016377315 00000 n 
-0016377548 00000 n 
-0016394456 00000 n 
-0016394844 00000 n 
-0016394892 00000 n 
-0016406004 00000 n 
-0016406365 00000 n 
-0016406413 00000 n 
-0016406461 00000 n 
-0016406509 00000 n 
-0016406557 00000 n 
-0016413899 00000 n 
-0016414292 00000 n 
-0016414340 00000 n 
-0016414576 00000 n 
-0016417378 00000 n 
-0016417739 00000 n 
-0016417787 00000 n 
-0016422844 00000 n 
-0016423205 00000 n 
-0016423253 00000 n 
-0016424954 00000 n 
-0016425302 00000 n 
-0016425350 00000 n 
-0016425777 00000 n 
-0016428905 00000 n 
-0016429253 00000 n 
-0016429301 00000 n 
-0016436772 00000 n 
-0016437133 00000 n 
-0016437181 00000 n 
-0016445646 00000 n 
-0016446020 00000 n 
-0016446068 00000 n 
-0016446116 00000 n 
-0016446601 00000 n 
-0016446649 00000 n 
-0016448978 00000 n 
-0016449354 00000 n 
-0016449402 00000 n 
-0016449620 00000 n 
-0016449854 00000 n 
-0016452185 00000 n 
-0016452546 00000 n 
-0016452594 00000 n 
-0016463921 00000 n 
-0016464332 00000 n 
-0016464380 00000 n 
-0016464577 00000 n 
-0016464774 00000 n 
-0016464895 00000 n 
-0016471230 00000 n 
-0016471591 00000 n 
-0016471639 00000 n 
-0016521219 00000 n 
-0016521593 00000 n 
-0016521641 00000 n 
-0016521689 00000 n 
-0016564367 00000 n 
-0016564715 00000 n 
-0016566610 00000 n 
-0016566958 00000 n 
-0016567006 00000 n 
-0016568012 00000 n 
-0016568360 00000 n 
-0016568408 00000 n 
-0016574575 00000 n 
-0016574936 00000 n 
-0016574984 00000 n 
-0016575032 00000 n 
-0016575080 00000 n 
-0016577338 00000 n 
-0016577686 00000 n 
-0016577734 00000 n 
-0016577782 00000 n 
-0016577830 00000 n 
-0016577878 00000 n 
-0016577926 00000 n 
-0016601578 00000 n 
-0016601967 00000 n 
-0016602015 00000 n 
-0016602210 00000 n 
-0016602434 00000 n 
-0016602482 00000 n 
-0016621781 00000 n 
-0016622187 00000 n 
-0016622235 00000 n 
-0016622291 00000 n 
-0016622438 00000 n 
-0016641100 00000 n 
-0016641506 00000 n 
-0016641731 00000 n 
-0016655797 00000 n 
-0016656217 00000 n 
-0016656265 00000 n 
-0016656471 00000 n 
-0016656678 00000 n 
-0016656907 00000 n 
-0016657138 00000 n 
-0016677360 00000 n 
-0016677762 00000 n 
-0016677810 00000 n 
-0016678007 00000 n 
-0016678203 00000 n 
-0016678251 00000 n 
-0016701499 00000 n 
-0016701892 00000 n 
-0016701940 00000 n 
-0016702185 00000 n 
-0016733724 00000 n 
-0016734098 00000 n 
-0016734146 00000 n 
-0016753465 00000 n 
-0016753826 00000 n 
-0016815253 00000 n 
-0016815614 00000 n 
-0016815662 00000 n 
-0016815710 00000 n 
-0016870482 00000 n 
-0016870843 00000 n 
-0016870891 00000 n 
-0016871504 00000 n 
-0016871552 00000 n 
-0016871600 00000 n 
-0016873256 00000 n 
-0016873637 00000 n 
-0016873685 00000 n 
-0016873883 00000 n 
-0016873931 00000 n 
-0016886562 00000 n 
-0016886977 00000 n 
-0016887025 00000 n 
-0016887073 00000 n 
-0016887296 00000 n 
-0016887344 00000 n 
-0016887541 00000 n 
-0016892347 00000 n 
-0016892708 00000 n 
-0016893096 00000 n 
-0016893444 00000 n 
-0016893492 00000 n 
-0016903202 00000 n 
-0016903595 00000 n 
-0016903643 00000 n 
-0016903928 00000 n 
-0016903977 00000 n 
-0016904026 00000 n 
-0016904075 00000 n 
-0016944024 00000 n 
-0016944422 00000 n 
-0016944470 00000 n 
-0016944518 00000 n 
-0016944699 00000 n 
-0016944887 00000 n 
-0016945075 00000 n 
-0016948224 00000 n 
-0016948585 00000 n 
-0016948633 00000 n 
-0016949013 00000 n 
-0016949361 00000 n 
-0016949409 00000 n 
-0016951295 00000 n 
-0016951656 00000 n 
-0016951704 00000 n 
-0016972588 00000 n 
-0016972962 00000 n 
-0016973010 00000 n 
-0016973058 00000 n 
-0016973106 00000 n 
-0016973618 00000 n 
-0016999069 00000 n 
-0016999430 00000 n 
-0016999478 00000 n 
-0016999526 00000 n 
-0017040782 00000 n 
-0017041143 00000 n 
-0017041191 00000 n 
-0017078772 00000 n 
-0017079133 00000 n 
-0017079181 00000 n 
-0017079229 00000 n 
-0017107463 00000 n 
-0017107837 00000 n 
-0017107885 00000 n 
-0017107933 00000 n 
-0017107981 00000 n 
-0017120675 00000 n 
-0017121049 00000 n 
-0017121097 00000 n 
-0017121145 00000 n 
-0017121193 00000 n 
-0017121241 00000 n 
-0017121289 00000 n 
-0017129422 00000 n 
-0017129809 00000 n 
-0017132904 00000 n 
-0017133278 00000 n 
-0017133326 00000 n 
-0017133374 00000 n 
-0017134777 00000 n 
-0017135125 00000 n 
-0017135173 00000 n 
-0017135221 00000 n 
-0017135621 00000 n 
-0017135969 00000 n 
-0017136017 00000 n 
-0017140138 00000 n 
-0017140541 00000 n 
-0017140589 00000 n 
-0017140761 00000 n 
-0017140959 00000 n 
-0017141133 00000 n 
-0017141345 00000 n 
-0017141557 00000 n 
-0017149880 00000 n 
-0017150313 00000 n 
-0017150361 00000 n 
-0017150409 00000 n 
-0017150625 00000 n 
-0017150927 00000 n 
-0017150975 00000 n 
-0017151169 00000 n 
-0017151427 00000 n 
-0017151849 00000 n 
-0017152197 00000 n 
-0017152245 00000 n 
-0017159661 00000 n 
-0017160022 00000 n 
-0017160070 00000 n 
-0017166147 00000 n 
-0017166508 00000 n 
-0017166556 00000 n 
-0017166604 00000 n 
-0017166652 00000 n 
-0017166700 00000 n 
-0017192610 00000 n 
-0017192997 00000 n 
-0017193045 00000 n 
-0017193093 00000 n 
-0017193141 00000 n 
-0017213786 00000 n 
-0017214173 00000 n 
-0017214221 00000 n 
-0017215584 00000 n 
-0017215932 00000 n 
-0017215980 00000 n 
-0017239514 00000 n 
-0017239875 00000 n 
-0017239923 00000 n 
-0017261931 00000 n 
-0017262292 00000 n 
-0017262340 00000 n 
-0017262748 00000 n 
-0017262796 00000 n 
-0017262844 00000 n 
-0017262892 00000 n 
-0017279629 00000 n 
-0017279990 00000 n 
-0017280038 00000 n 
-0017280426 00000 n 
-0017280774 00000 n 
-0017280822 00000 n 
-0017293384 00000 n 
-0017293795 00000 n 
-0017293843 00000 n 
-0017294832 00000 n 
-0017295009 00000 n 
-0017295176 00000 n 
-0017295299 00000 n 
-0017295347 00000 n 
-0017295395 00000 n 
-0017315208 00000 n 
-0017315616 00000 n 
-0017315664 00000 n 
-0017315887 00000 n 
-0017338029 00000 n 
-0017338440 00000 n 
-0017338582 00000 n 
-0017338630 00000 n 
-0017338678 00000 n 
-0017338726 00000 n 
-0017338894 00000 n 
-0017339079 00000 n 
-0017368703 00000 n 
-0017369101 00000 n 
-0017369304 00000 n 
-0017369507 00000 n 
-0017369709 00000 n 
-0017396107 00000 n 
-0017396496 00000 n 
-0017396696 00000 n 
-0017396896 00000 n 
-0017423032 00000 n 
-0017423421 00000 n 
-0017423620 00000 n 
-0017423820 00000 n 
-0017432247 00000 n 
-0017432645 00000 n 
-0017432853 00000 n 
-0017433063 00000 n 
-0017433272 00000 n 
-0017456906 00000 n 
-0017457308 00000 n 
-0017457500 00000 n 
-0017457692 00000 n 
-0017476299 00000 n 
-0017476692 00000 n 
-0017476740 00000 n 
-0017476871 00000 n 
-0017476919 00000 n 
-0017487350 00000 n 
-0017487724 00000 n 
-0017487772 00000 n 
-0017487820 00000 n 
-0017501788 00000 n 
-0017502217 00000 n 
-0017502265 00000 n 
-0017502313 00000 n 
-0017502888 00000 n 
-0017503016 00000 n 
-0017503186 00000 n 
-0017503314 00000 n 
-0017503442 00000 n 
-0017503570 00000 n 
-0017503618 00000 n 
-0017515061 00000 n 
-0017515553 00000 n 
-0017515602 00000 n 
-0017515730 00000 n 
-0017515779 00000 n 
-0017515905 00000 n 
-0017516036 00000 n 
-0017516085 00000 n 
-0017516210 00000 n 
-0017516334 00000 n 
-0017516468 00000 n 
-0017516602 00000 n 
-0017516739 00000 n 
-0017516864 00000 n 
-0017517002 00000 n 
-0017517134 00000 n 
-0017517183 00000 n 
-0017517307 00000 n 
-0017522501 00000 n 
-0017522922 00000 n 
-0017522970 00000 n 
-0017523095 00000 n 
-0017523216 00000 n 
-0017523264 00000 n 
-0017523389 00000 n 
-0017523510 00000 n 
-0017523558 00000 n 
-0017523681 00000 n 
-0017523804 00000 n 
-0017523852 00000 n 
-0017523977 00000 n 
-0017532364 00000 n 
-0017532725 00000 n 
-0017532773 00000 n 
-0017532822 00000 n 
-0017532871 00000 n 
-0017553412 00000 n 
-0017553787 00000 n 
-0017588774 00000 n 
-0017589122 00000 n 
-0017627032 00000 n 
-0017627380 00000 n 
-0017653253 00000 n 
-0017653601 00000 n 
-0017695394 00000 n 
-0017695742 00000 n 
-0017698938 00000 n 
-0017699286 00000 n 
-0017711296 00000 n 
-0017711743 00000 n 
-0017711791 00000 n 
-0017711845 00000 n 
-0017711994 00000 n 
-0017712128 00000 n 
-0017712265 00000 n 
-0017712404 00000 n 
-0017712545 00000 n 
-0017712687 00000 n 
-0017712867 00000 n 
-0017725339 00000 n 
-0017725747 00000 n 
-0017725925 00000 n 
-0017726111 00000 n 
-0017726313 00000 n 
-0017726534 00000 n 
-0017726741 00000 n 
-0017726938 00000 n 
-0017727114 00000 n 
-0017732920 00000 n 
-0017733322 00000 n 
-0017773979 00000 n 
-0017801742 00000 n 
-0017809828 00000 n 
-0017810203 00000 n 
-0017856244 00000 n 
-0017875144 00000 n 
-0017875550 00000 n 
-0017875598 00000 n 
-0017875877 00000 n 
-0017875925 00000 n 
-0017915696 00000 n 
-0017916070 00000 n 
-0017960575 00000 n 
-0017960973 00000 n 
-0017961166 00000 n 
-0017961359 00000 n 
-0017961570 00000 n 
-0017987476 00000 n 
-0017987856 00000 n 
-0017987904 00000 n 
-0017987952 00000 n 
-0017988135 00000 n 
-0018017829 00000 n 
-0018018236 00000 n 
-0018018414 00000 n 
-0018018594 00000 n 
-0018018777 00000 n 
-0018018957 00000 n 
-0018063001 00000 n 
-0018063394 00000 n 
-0018063590 00000 n 
-0018095453 00000 n 
-0018095882 00000 n 
-0018096079 00000 n 
-0018096216 00000 n 
-0018096265 00000 n 
-0018096470 00000 n 
-0018096674 00000 n 
-0018096818 00000 n 
-0018096867 00000 n 
-0018116391 00000 n 
-0018116802 00000 n 
-0018116937 00000 n 
-0018116985 00000 n 
-0018117119 00000 n 
-0018117263 00000 n 
-0018117312 00000 n 
-0018117360 00000 n 
-0018163034 00000 n 
-0018163408 00000 n 
-0018163457 00000 n 
-0018163506 00000 n 
-0018208396 00000 n 
-0018208757 00000 n 
-0018238351 00000 n 
-0018238725 00000 n 
-0018238773 00000 n 
-0018239132 00000 n 
-0018240472 00000 n 
-0018240848 00000 n 
-0018240896 00000 n 
-0018240944 00000 n 
-0018241113 00000 n 
-0018241161 00000 n 
-0018241344 00000 n 
-0018243548 00000 n 
-0018243924 00000 n 
-0018243972 00000 n 
-0018244433 00000 n 
-0018244619 00000 n 
-0018244814 00000 n 
-0018252283 00000 n 
-0018252658 00000 n 
-0018252706 00000 n 
-0018252754 00000 n 
-0018252802 00000 n 
-0018253676 00000 n 
-0018279563 00000 n 
-0018284126 00000 n 
-0018284175 00000 n 
-0018284224 00000 n 
-0018284273 00000 n 
-0018284629 00000 n 
-0018292378 00000 n 
-0018292726 00000 n 
-0018292774 00000 n 
-0018339542 00000 n 
-0018346859 00000 n 
-0018347234 00000 n 
-0018347283 00000 n 
-0018357973 00000 n 
-0018358334 00000 n 
-0018358382 00000 n 
-0018358430 00000 n 
-0018371774 00000 n 
-0018372135 00000 n 
-0018372183 00000 n 
-0018386607 00000 n 
-0018386968 00000 n 
-0018387016 00000 n 
-0018387064 00000 n 
-0018387753 00000 n 
-0018387801 00000 n 
-0018405819 00000 n 
-0018406167 00000 n 
-0018406215 00000 n 
-0018418926 00000 n 
-0018419369 00000 n 
-0018419417 00000 n 
-0018419465 00000 n 
-0018419606 00000 n 
-0018419734 00000 n 
-0018419885 00000 n 
-0018420023 00000 n 
-0018420071 00000 n 
-0018420200 00000 n 
-0018420248 00000 n 
-0018420373 00000 n 
-0018420421 00000 n 
-0018420548 00000 n 
-0018420763 00000 n 
-0018431178 00000 n 
-0018431558 00000 n 
-0018431606 00000 n 
-0018431742 00000 n 
-0018438820 00000 n 
-0018439308 00000 n 
-0018439356 00000 n 
-0018439404 00000 n 
-0018439575 00000 n 
-0018439765 00000 n 
-0018439814 00000 n 
-0018440064 00000 n 
-0018440292 00000 n 
-0018440537 00000 n 
-0018440586 00000 n 
-0018440780 00000 n 
-0018440990 00000 n 
-0018441203 00000 n 
-0018441252 00000 n 
-0018441445 00000 n 
-0018441678 00000 n 
-0018441863 00000 n 
-0018441912 00000 n 
-0018442105 00000 n 
-0018442154 00000 n 
-0018442548 00000 n 
-0018442742 00000 n 
-0018444903 00000 n 
-0018445270 00000 n 
-0018445318 00000 n 
-0018445513 00000 n 
-0018448907 00000 n 
-0018449283 00000 n 
-0018449331 00000 n 
-0018449379 00000 n 
-0018449565 00000 n 
-0018449613 00000 n 
-0018449807 00000 n 
-0018453496 00000 n 
-0018453935 00000 n 
-0018453983 00000 n 
-0018458243 00000 n 
-0018458773 00000 n 
-0018458968 00000 n 
-0018459153 00000 n 
-0018459347 00000 n 
-0018459545 00000 n 
-0018459740 00000 n 
-0018459926 00000 n 
-0018470539 00000 n 
-0018470960 00000 n 
-0018471008 00000 n 
-0018471573 00000 n 
-0018471769 00000 n 
-0018471991 00000 n 
-0018472208 00000 n 
-0018472424 00000 n 
-0018472657 00000 n 
-0018472705 00000 n 
-0018472753 00000 n 
-0018472801 00000 n 
-0018473033 00000 n 
-0018473279 00000 n 
-0018473327 00000 n 
-0018473375 00000 n 
-0018487498 00000 n 
-0018487885 00000 n 
-0018487934 00000 n 
-0018487983 00000 n 
-0018488032 00000 n 
-0018496186 00000 n 
-0018496547 00000 n 
-0018496596 00000 n 
-0018496645 00000 n 
-0018496694 00000 n 
-0018496743 00000 n 
-0018496792 00000 n 
-0018509014 00000 n 
-0018509401 00000 n 
-0018509450 00000 n 
-0018510051 00000 n 
-0018510399 00000 n 
-0018510447 00000 n 
-0018522899 00000 n 
-0018523262 00000 n 
-0018523310 00000 n 
-0018523358 00000 n 
-0018523406 00000 n 
-0018523454 00000 n 
-0018523501 00000 n 
-0018538558 00000 n 
-0018538921 00000 n 
-0018538969 00000 n 
-0018539017 00000 n 
-0018539065 00000 n 
-0018539724 00000 n 
-0018554849 00000 n 
-0018555184 00000 n 
-0018570289 00000 n 
-0018570652 00000 n 
-0018570700 00000 n 
-0018570748 00000 n 
-0018584726 00000 n 
-0018585089 00000 n 
-0018585137 00000 n 
-0018585185 00000 n 
-0018585233 00000 n 
-0018598534 00000 n 
-0018598897 00000 n 
-0018598945 00000 n 
-0018598993 00000 n 
-0018599041 00000 n 
-0018599089 00000 n 
-0018612993 00000 n 
-0018613356 00000 n 
-0018613404 00000 n 
-0018613452 00000 n 
-0018613500 00000 n 
-0018614209 00000 n 
-0018614257 00000 n 
-0018614305 00000 n 
-0018634777 00000 n 
-0018635140 00000 n 
-0018635188 00000 n 
-0018635236 00000 n 
-0018653693 00000 n 
-0018654056 00000 n 
-0018654104 00000 n 
-0018654152 00000 n 
-0018654200 00000 n 
-0018667917 00000 n 
-0018668265 00000 n 
-0018668313 00000 n 
-0018668361 00000 n 
-0018668409 00000 n 
-0018668457 00000 n 
-0018668505 00000 n 
-0018687114 00000 n 
-0018687477 00000 n 
-0018687525 00000 n 
-0018701097 00000 n 
-0018701460 00000 n 
-0018701508 00000 n 
-0018701556 00000 n 
-0018701604 00000 n 
-0018701652 00000 n 
-0018716673 00000 n 
-0018717036 00000 n 
-0018717084 00000 n 
-0018717132 00000 n 
-0018717180 00000 n 
-0018717228 00000 n 
-0018731162 00000 n 
-0018731525 00000 n 
-0018731573 00000 n 
-0018731621 00000 n 
-0018731669 00000 n 
-0018731717 00000 n 
-0018731765 00000 n 
-0018747947 00000 n 
-0018748310 00000 n 
-0018748358 00000 n 
-0018748406 00000 n 
-0018748454 00000 n 
-0018748502 00000 n 
-0018748550 00000 n 
-0018748598 00000 n 
-0018763983 00000 n 
-0018764346 00000 n 
-0018764394 00000 n 
-0018764442 00000 n 
-0018764490 00000 n 
-0018764538 00000 n 
-0018778779 00000 n 
-0018779142 00000 n 
-0018779190 00000 n 
-0018779238 00000 n 
-0018779286 00000 n 
-0018779334 00000 n 
-0018798328 00000 n 
-0018798691 00000 n 
-0018798739 00000 n 
-0018798787 00000 n 
-0018798835 00000 n 
-0018808948 00000 n 
-0018809311 00000 n 
-0018809359 00000 n 
-0018809407 00000 n 
-0018809815 00000 n 
-0018809863 00000 n 
-0018809911 00000 n 
-0018809959 00000 n 
-0018810007 00000 n 
-0018810055 00000 n 
-0018822309 00000 n 
-0018822672 00000 n 
-0018822720 00000 n 
-0018822768 00000 n 
-0018823241 00000 n 
-0018823289 00000 n 
-0018823337 00000 n 
-0018838336 00000 n 
-0018838699 00000 n 
-0018838747 00000 n 
-0018838795 00000 n 
-0018838843 00000 n 
-0018846292 00000 n 
-0018846640 00000 n 
-0018846759 00000 n 
-0018846881 00000 n 
-0018847010 00000 n 
-0018847140 00000 n 
-0018847265 00000 n 
-0018847392 00000 n 
-0018847515 00000 n 
-0018847640 00000 n 
-0018847768 00000 n 
-0018847895 00000 n 
-0018848029 00000 n 
-0018848162 00000 n 
-0018848294 00000 n 
-0018848427 00000 n 
-0018848555 00000 n 
-0018848684 00000 n 
-0018848806 00000 n 
-0018848927 00000 n 
-0018849054 00000 n 
-0018849180 00000 n 
-0018849309 00000 n 
-0018849437 00000 n 
-0018849576 00000 n 
-0018849714 00000 n 
-0018849839 00000 n 
-0018849963 00000 n 
-0018850087 00000 n 
-0018850210 00000 n 
-0018850340 00000 n 
-0018850470 00000 n 
-0018850591 00000 n 
-0018850714 00000 n 
-0018850842 00000 n 
-0018850970 00000 n 
-0018851088 00000 n 
-0018851208 00000 n 
-0018851332 00000 n 
-0018851456 00000 n 
-0018851612 00000 n 
-0018851768 00000 n 
-0018851907 00000 n 
-0018852048 00000 n 
-0018852207 00000 n 
-0018852367 00000 n 
-0018852511 00000 n 
+0015446636 00000 n 
+0015447069 00000 n 
+0015447263 00000 n 
+0015447398 00000 n 
+0015447455 00000 n 
+0015447641 00000 n 
+0015447698 00000 n 
+0015447884 00000 n 
+0015447941 00000 n 
+0015461786 00000 n 
+0015462210 00000 n 
+0015462266 00000 n 
+0015462401 00000 n 
+0015462449 00000 n 
+0015463020 00000 n 
+0015463234 00000 n 
+0015463282 00000 n 
+0015463413 00000 n 
+0015463461 00000 n 
+0015463509 00000 n 
+0015483552 00000 n 
+0015483926 00000 n 
+0015483974 00000 n 
+0015484022 00000 n 
+0015500788 00000 n 
+0015501162 00000 n 
+0015501210 00000 n 
+0015501649 00000 n 
+0015501858 00000 n 
+0015501906 00000 n 
+0015501954 00000 n 
+0015524161 00000 n 
+0015524554 00000 n 
+0015524602 00000 n 
+0015524650 00000 n 
+0015524698 00000 n 
+0015524746 00000 n 
+0015524876 00000 n 
+0015524924 00000 n 
+0015550893 00000 n 
+0015551254 00000 n 
+0015551302 00000 n 
+0015551350 00000 n 
+0015566862 00000 n 
+0015567236 00000 n 
+0015567284 00000 n 
+0015584863 00000 n 
+0015585256 00000 n 
+0015585304 00000 n 
+0015585508 00000 n 
+0015585556 00000 n 
+0015608861 00000 n 
+0015609263 00000 n 
+0015609311 00000 n 
+0015609507 00000 n 
+0015609691 00000 n 
+0015627143 00000 n 
+0015627558 00000 n 
+0015627606 00000 n 
+0015627790 00000 n 
+0015627972 00000 n 
+0015640334 00000 n 
+0015640682 00000 n 
+0015654226 00000 n 
+0015654587 00000 n 
+0015654635 00000 n 
+0015666726 00000 n 
+0015667074 00000 n 
+0015681963 00000 n 
+0015682356 00000 n 
+0015682404 00000 n 
+0015682452 00000 n 
+0015682587 00000 n 
+0015682635 00000 n 
+0015704543 00000 n 
+0015704917 00000 n 
+0015704965 00000 n 
+0015712794 00000 n 
+0015713155 00000 n 
+0015722458 00000 n 
+0015722872 00000 n 
+0015722920 00000 n 
+0015722968 00000 n 
+0015723016 00000 n 
+0015723064 00000 n 
+0015723112 00000 n 
+0015740301 00000 n 
+0015740717 00000 n 
+0015740766 00000 n 
+0015740972 00000 n 
+0015741116 00000 n 
+0015741165 00000 n 
+0015770928 00000 n 
+0015771289 00000 n 
+0015771337 00000 n 
+0015771385 00000 n 
+0015771433 00000 n 
+0015771481 00000 n 
+0015771529 00000 n 
+0015785460 00000 n 
+0015785849 00000 n 
+0015785897 00000 n 
+0015786339 00000 n 
+0015786387 00000 n 
+0015786435 00000 n 
+0015786483 00000 n 
+0015786710 00000 n 
+0015786935 00000 n 
+0015797596 00000 n 
+0015798002 00000 n 
+0015798050 00000 n 
+0015798098 00000 n 
+0015798615 00000 n 
+0015798810 00000 n 
+0015798858 00000 n 
+0015811143 00000 n 
+0015811550 00000 n 
+0015811598 00000 n 
+0015811809 00000 n 
+0015811857 00000 n 
+0015811905 00000 n 
+0015811953 00000 n 
+0015812001 00000 n 
+0015824242 00000 n 
+0015824689 00000 n 
+0015824737 00000 n 
+0015824923 00000 n 
+0015825098 00000 n 
+0015825236 00000 n 
+0015825527 00000 n 
+0015825748 00000 n 
+0015825797 00000 n 
+0015825925 00000 n 
+0015826057 00000 n 
+0015826106 00000 n 
+0015843838 00000 n 
+0015844304 00000 n 
+0015844352 00000 n 
+0015844519 00000 n 
+0015844690 00000 n 
+0015844884 00000 n 
+0015844933 00000 n 
+0015845115 00000 n 
+0015845285 00000 n 
+0015845483 00000 n 
+0015845532 00000 n 
+0015845581 00000 n 
+0015845630 00000 n 
+0015845678 00000 n 
+0015860220 00000 n 
+0015860632 00000 n 
+0015860784 00000 n 
+0015860914 00000 n 
+0015861079 00000 n 
+0015861234 00000 n 
+0015861387 00000 n 
+0015861537 00000 n 
+0015874879 00000 n 
+0015875345 00000 n 
+0015875393 00000 n 
+0015875585 00000 n 
+0015875771 00000 n 
+0015875819 00000 n 
+0015876053 00000 n 
+0015876101 00000 n 
+0015876292 00000 n 
+0015876508 00000 n 
+0015876556 00000 n 
+0015876746 00000 n 
+0015898852 00000 n 
+0015899239 00000 n 
+0015941389 00000 n 
+0015941737 00000 n 
+0015960291 00000 n 
+0015960698 00000 n 
+0015960746 00000 n 
+0015960794 00000 n 
+0015961016 00000 n 
+0015961234 00000 n 
+0015961408 00000 n 
+0015961673 00000 n 
+0015973406 00000 n 
+0015973822 00000 n 
+0015973870 00000 n 
+0015974079 00000 n 
+0015974286 00000 n 
+0015974334 00000 n 
+0015974382 00000 n 
+0015974663 00000 n 
+0015974943 00000 n 
+0015974991 00000 n 
+0015975039 00000 n 
+0015975189 00000 n 
+0015975237 00000 n 
+0015991677 00000 n 
+0015992070 00000 n 
+0015992290 00000 n 
+0015992338 00000 n 
+0015992386 00000 n 
+0015992434 00000 n 
+0015995843 00000 n 
+0015996223 00000 n 
+0015996271 00000 n 
+0015996857 00000 n 
+0015997054 00000 n 
+0015999777 00000 n 
+0016000162 00000 n 
+0016000210 00000 n 
+0016000445 00000 n 
+0016000678 00000 n 
+0016000808 00000 n 
+0016044424 00000 n 
+0016044804 00000 n 
+0016044852 00000 n 
+0016045228 00000 n 
+0016045389 00000 n 
+0016053844 00000 n 
+0016054211 00000 n 
+0016054411 00000 n 
+0016086893 00000 n 
+0016087282 00000 n 
+0016087330 00000 n 
+0016087510 00000 n 
+0016087636 00000 n 
+0016108128 00000 n 
+0016108476 00000 n 
+0016150844 00000 n 
+0016151224 00000 n 
+0016151272 00000 n 
+0016151443 00000 n 
+0016186993 00000 n 
+0016187341 00000 n 
+0016227680 00000 n 
+0016228073 00000 n 
+0016228121 00000 n 
+0016228247 00000 n 
+0016280607 00000 n 
+0016280955 00000 n 
+0016303789 00000 n 
+0016304169 00000 n 
+0016304467 00000 n 
+0016304871 00000 n 
+0016305219 00000 n 
+0016305267 00000 n 
+0016321015 00000 n 
+0016321435 00000 n 
+0016321483 00000 n 
+0016321679 00000 n 
+0016321807 00000 n 
+0016321922 00000 n 
+0016322053 00000 n 
+0016322101 00000 n 
+0016345958 00000 n 
+0016346319 00000 n 
+0016346368 00000 n 
+0016365006 00000 n 
+0016365354 00000 n 
+0016370478 00000 n 
+0016370826 00000 n 
+0016376325 00000 n 
+0016376729 00000 n 
+0016376777 00000 n 
+0016376971 00000 n 
+0016377151 00000 n 
+0016377384 00000 n 
+0016394292 00000 n 
+0016394680 00000 n 
+0016394728 00000 n 
+0016405840 00000 n 
+0016406201 00000 n 
+0016406249 00000 n 
+0016406297 00000 n 
+0016406345 00000 n 
+0016406393 00000 n 
+0016413735 00000 n 
+0016414128 00000 n 
+0016414176 00000 n 
+0016414412 00000 n 
+0016417214 00000 n 
+0016417575 00000 n 
+0016417623 00000 n 
+0016422680 00000 n 
+0016423041 00000 n 
+0016423089 00000 n 
+0016424790 00000 n 
+0016425138 00000 n 
+0016425186 00000 n 
+0016425613 00000 n 
+0016428741 00000 n 
+0016429089 00000 n 
+0016429137 00000 n 
+0016436608 00000 n 
+0016436969 00000 n 
+0016437017 00000 n 
+0016445482 00000 n 
+0016445856 00000 n 
+0016445904 00000 n 
+0016445952 00000 n 
+0016446437 00000 n 
+0016446485 00000 n 
+0016448814 00000 n 
+0016449190 00000 n 
+0016449238 00000 n 
+0016449456 00000 n 
+0016449690 00000 n 
+0016452021 00000 n 
+0016452382 00000 n 
+0016452430 00000 n 
+0016463757 00000 n 
+0016464168 00000 n 
+0016464216 00000 n 
+0016464413 00000 n 
+0016464610 00000 n 
+0016464731 00000 n 
+0016471066 00000 n 
+0016471427 00000 n 
+0016471475 00000 n 
+0016521055 00000 n 
+0016521429 00000 n 
+0016521477 00000 n 
+0016521525 00000 n 
+0016564203 00000 n 
+0016564551 00000 n 
+0016566446 00000 n 
+0016566794 00000 n 
+0016566842 00000 n 
+0016567848 00000 n 
+0016568196 00000 n 
+0016568244 00000 n 
+0016574411 00000 n 
+0016574772 00000 n 
+0016574820 00000 n 
+0016574868 00000 n 
+0016574916 00000 n 
+0016577174 00000 n 
+0016577522 00000 n 
+0016577570 00000 n 
+0016577618 00000 n 
+0016577666 00000 n 
+0016577714 00000 n 
+0016577762 00000 n 
+0016601414 00000 n 
+0016601803 00000 n 
+0016601851 00000 n 
+0016602046 00000 n 
+0016602270 00000 n 
+0016602318 00000 n 
+0016621617 00000 n 
+0016622023 00000 n 
+0016622071 00000 n 
+0016622127 00000 n 
+0016622274 00000 n 
+0016640936 00000 n 
+0016641342 00000 n 
+0016641567 00000 n 
+0016655633 00000 n 
+0016656053 00000 n 
+0016656101 00000 n 
+0016656307 00000 n 
+0016656514 00000 n 
+0016656743 00000 n 
+0016656974 00000 n 
+0016677196 00000 n 
+0016677598 00000 n 
+0016677646 00000 n 
+0016677843 00000 n 
+0016678039 00000 n 
+0016678087 00000 n 
+0016701335 00000 n 
+0016701728 00000 n 
+0016701776 00000 n 
+0016702021 00000 n 
+0016733560 00000 n 
+0016733934 00000 n 
+0016733982 00000 n 
+0016753301 00000 n 
+0016753662 00000 n 
+0016815089 00000 n 
+0016815450 00000 n 
+0016815498 00000 n 
+0016815546 00000 n 
+0016870318 00000 n 
+0016870679 00000 n 
+0016870727 00000 n 
+0016871340 00000 n 
+0016871388 00000 n 
+0016871436 00000 n 
+0016873092 00000 n 
+0016873473 00000 n 
+0016873521 00000 n 
+0016873719 00000 n 
+0016873767 00000 n 
+0016886398 00000 n 
+0016886813 00000 n 
+0016886861 00000 n 
+0016886909 00000 n 
+0016887132 00000 n 
+0016887180 00000 n 
+0016887377 00000 n 
+0016892183 00000 n 
+0016892544 00000 n 
+0016892932 00000 n 
+0016893280 00000 n 
+0016893328 00000 n 
+0016903038 00000 n 
+0016903431 00000 n 
+0016903479 00000 n 
+0016903764 00000 n 
+0016903813 00000 n 
+0016903862 00000 n 
+0016903911 00000 n 
+0016943860 00000 n 
+0016944258 00000 n 
+0016944306 00000 n 
+0016944354 00000 n 
+0016944535 00000 n 
+0016944723 00000 n 
+0016944911 00000 n 
+0016948060 00000 n 
+0016948421 00000 n 
+0016948469 00000 n 
+0016948849 00000 n 
+0016949197 00000 n 
+0016949245 00000 n 
+0016951131 00000 n 
+0016951492 00000 n 
+0016951540 00000 n 
+0016972424 00000 n 
+0016972798 00000 n 
+0016972846 00000 n 
+0016972894 00000 n 
+0016972942 00000 n 
+0016973454 00000 n 
+0016998905 00000 n 
+0016999266 00000 n 
+0016999314 00000 n 
+0016999362 00000 n 
+0017040618 00000 n 
+0017040979 00000 n 
+0017041027 00000 n 
+0017078608 00000 n 
+0017078969 00000 n 
+0017079017 00000 n 
+0017079065 00000 n 
+0017107299 00000 n 
+0017107673 00000 n 
+0017107721 00000 n 
+0017107769 00000 n 
+0017107817 00000 n 
+0017120511 00000 n 
+0017120885 00000 n 
+0017120933 00000 n 
+0017120981 00000 n 
+0017121029 00000 n 
+0017121077 00000 n 
+0017121125 00000 n 
+0017129258 00000 n 
+0017129645 00000 n 
+0017132740 00000 n 
+0017133114 00000 n 
+0017133162 00000 n 
+0017133210 00000 n 
+0017134613 00000 n 
+0017134961 00000 n 
+0017135009 00000 n 
+0017135057 00000 n 
+0017135457 00000 n 
+0017135805 00000 n 
+0017135853 00000 n 
+0017139974 00000 n 
+0017140377 00000 n 
+0017140425 00000 n 
+0017140597 00000 n 
+0017140795 00000 n 
+0017140969 00000 n 
+0017141181 00000 n 
+0017141393 00000 n 
+0017149716 00000 n 
+0017150149 00000 n 
+0017150197 00000 n 
+0017150245 00000 n 
+0017150461 00000 n 
+0017150763 00000 n 
+0017150811 00000 n 
+0017151005 00000 n 
+0017151263 00000 n 
+0017151685 00000 n 
+0017152033 00000 n 
+0017152081 00000 n 
+0017159497 00000 n 
+0017159858 00000 n 
+0017159906 00000 n 
+0017165983 00000 n 
+0017166344 00000 n 
+0017166392 00000 n 
+0017166440 00000 n 
+0017166488 00000 n 
+0017166536 00000 n 
+0017192446 00000 n 
+0017192833 00000 n 
+0017192881 00000 n 
+0017192929 00000 n 
+0017192977 00000 n 
+0017213622 00000 n 
+0017214009 00000 n 
+0017214057 00000 n 
+0017215420 00000 n 
+0017215768 00000 n 
+0017215816 00000 n 
+0017239350 00000 n 
+0017239711 00000 n 
+0017239759 00000 n 
+0017261767 00000 n 
+0017262128 00000 n 
+0017262176 00000 n 
+0017262584 00000 n 
+0017262632 00000 n 
+0017262680 00000 n 
+0017262728 00000 n 
+0017279465 00000 n 
+0017279826 00000 n 
+0017279874 00000 n 
+0017280262 00000 n 
+0017280610 00000 n 
+0017280658 00000 n 
+0017293220 00000 n 
+0017293631 00000 n 
+0017293679 00000 n 
+0017294668 00000 n 
+0017294845 00000 n 
+0017295012 00000 n 
+0017295135 00000 n 
+0017295183 00000 n 
+0017295231 00000 n 
+0017315044 00000 n 
+0017315452 00000 n 
+0017315500 00000 n 
+0017315723 00000 n 
+0017337865 00000 n 
+0017338276 00000 n 
+0017338418 00000 n 
+0017338466 00000 n 
+0017338514 00000 n 
+0017338562 00000 n 
+0017338730 00000 n 
+0017338915 00000 n 
+0017368539 00000 n 
+0017368937 00000 n 
+0017369140 00000 n 
+0017369343 00000 n 
+0017369545 00000 n 
+0017395943 00000 n 
+0017396332 00000 n 
+0017396532 00000 n 
+0017396732 00000 n 
+0017422868 00000 n 
+0017423257 00000 n 
+0017423456 00000 n 
+0017423656 00000 n 
+0017432083 00000 n 
+0017432481 00000 n 
+0017432689 00000 n 
+0017432899 00000 n 
+0017433108 00000 n 
+0017456742 00000 n 
+0017457144 00000 n 
+0017457336 00000 n 
+0017457528 00000 n 
+0017476135 00000 n 
+0017476528 00000 n 
+0017476576 00000 n 
+0017476707 00000 n 
+0017476755 00000 n 
+0017487186 00000 n 
+0017487560 00000 n 
+0017487608 00000 n 
+0017487656 00000 n 
+0017501624 00000 n 
+0017502053 00000 n 
+0017502101 00000 n 
+0017502149 00000 n 
+0017502724 00000 n 
+0017502852 00000 n 
+0017503022 00000 n 
+0017503150 00000 n 
+0017503278 00000 n 
+0017503406 00000 n 
+0017503454 00000 n 
+0017514897 00000 n 
+0017515389 00000 n 
+0017515438 00000 n 
+0017515566 00000 n 
+0017515615 00000 n 
+0017515741 00000 n 
+0017515872 00000 n 
+0017515921 00000 n 
+0017516046 00000 n 
+0017516170 00000 n 
+0017516304 00000 n 
+0017516438 00000 n 
+0017516575 00000 n 
+0017516700 00000 n 
+0017516838 00000 n 
+0017516970 00000 n 
+0017517019 00000 n 
+0017517143 00000 n 
+0017522337 00000 n 
+0017522758 00000 n 
+0017522806 00000 n 
+0017522931 00000 n 
+0017523052 00000 n 
+0017523100 00000 n 
+0017523225 00000 n 
+0017523346 00000 n 
+0017523394 00000 n 
+0017523517 00000 n 
+0017523640 00000 n 
+0017523688 00000 n 
+0017523813 00000 n 
+0017532200 00000 n 
+0017532561 00000 n 
+0017532609 00000 n 
+0017532658 00000 n 
+0017532707 00000 n 
+0017553248 00000 n 
+0017553623 00000 n 
+0017588610 00000 n 
+0017588958 00000 n 
+0017626868 00000 n 
+0017627216 00000 n 
+0017653089 00000 n 
+0017653437 00000 n 
+0017695230 00000 n 
+0017695578 00000 n 
+0017698774 00000 n 
+0017699122 00000 n 
+0017711132 00000 n 
+0017711579 00000 n 
+0017711627 00000 n 
+0017711681 00000 n 
+0017711830 00000 n 
+0017711964 00000 n 
+0017712101 00000 n 
+0017712240 00000 n 
+0017712381 00000 n 
+0017712523 00000 n 
+0017712703 00000 n 
+0017725175 00000 n 
+0017725583 00000 n 
+0017725761 00000 n 
+0017725947 00000 n 
+0017726149 00000 n 
+0017726370 00000 n 
+0017726577 00000 n 
+0017726774 00000 n 
+0017726950 00000 n 
+0017732756 00000 n 
+0017733158 00000 n 
+0017773815 00000 n 
+0017801578 00000 n 
+0017809664 00000 n 
+0017810039 00000 n 
+0017856080 00000 n 
+0017874980 00000 n 
+0017875386 00000 n 
+0017875434 00000 n 
+0017875713 00000 n 
+0017875761 00000 n 
+0017915532 00000 n 
+0017915906 00000 n 
+0017960411 00000 n 
+0017960809 00000 n 
+0017961002 00000 n 
+0017961195 00000 n 
+0017961406 00000 n 
+0017987312 00000 n 
+0017987692 00000 n 
+0017987740 00000 n 
+0017987788 00000 n 
+0017987971 00000 n 
+0018017665 00000 n 
+0018018072 00000 n 
+0018018250 00000 n 
+0018018430 00000 n 
+0018018613 00000 n 
+0018018793 00000 n 
+0018062837 00000 n 
+0018063230 00000 n 
+0018063426 00000 n 
+0018095289 00000 n 
+0018095718 00000 n 
+0018095915 00000 n 
+0018096052 00000 n 
+0018096101 00000 n 
+0018096306 00000 n 
+0018096510 00000 n 
+0018096654 00000 n 
+0018096703 00000 n 
+0018116227 00000 n 
+0018116638 00000 n 
+0018116773 00000 n 
+0018116821 00000 n 
+0018116955 00000 n 
+0018117099 00000 n 
+0018117148 00000 n 
+0018117196 00000 n 
+0018162870 00000 n 
+0018163244 00000 n 
+0018163293 00000 n 
+0018163342 00000 n 
+0018208232 00000 n 
+0018208593 00000 n 
+0018238187 00000 n 
+0018238561 00000 n 
+0018238609 00000 n 
+0018238968 00000 n 
+0018240308 00000 n 
+0018240684 00000 n 
+0018240732 00000 n 
+0018240780 00000 n 
+0018240949 00000 n 
+0018240997 00000 n 
+0018241180 00000 n 
+0018243384 00000 n 
+0018243760 00000 n 
+0018243808 00000 n 
+0018244269 00000 n 
+0018244455 00000 n 
+0018244650 00000 n 
+0018252119 00000 n 
+0018252494 00000 n 
+0018252542 00000 n 
+0018252590 00000 n 
+0018252638 00000 n 
+0018253512 00000 n 
+0018279399 00000 n 
+0018283962 00000 n 
+0018284011 00000 n 
+0018284060 00000 n 
+0018284109 00000 n 
+0018284465 00000 n 
+0018292214 00000 n 
+0018292562 00000 n 
+0018292610 00000 n 
+0018339378 00000 n 
+0018346695 00000 n 
+0018347070 00000 n 
+0018347119 00000 n 
+0018357809 00000 n 
+0018358170 00000 n 
+0018358218 00000 n 
+0018358266 00000 n 
+0018371610 00000 n 
+0018371971 00000 n 
+0018372019 00000 n 
+0018386443 00000 n 
+0018386804 00000 n 
+0018386852 00000 n 
+0018386900 00000 n 
+0018387589 00000 n 
+0018387637 00000 n 
+0018405655 00000 n 
+0018406003 00000 n 
+0018406051 00000 n 
+0018418762 00000 n 
+0018419205 00000 n 
+0018419253 00000 n 
+0018419301 00000 n 
+0018419442 00000 n 
+0018419570 00000 n 
+0018419721 00000 n 
+0018419859 00000 n 
+0018419907 00000 n 
+0018420036 00000 n 
+0018420084 00000 n 
+0018420209 00000 n 
+0018420257 00000 n 
+0018420384 00000 n 
+0018420599 00000 n 
+0018431014 00000 n 
+0018431394 00000 n 
+0018431442 00000 n 
+0018431578 00000 n 
+0018438656 00000 n 
+0018439144 00000 n 
+0018439192 00000 n 
+0018439240 00000 n 
+0018439411 00000 n 
+0018439601 00000 n 
+0018439650 00000 n 
+0018439900 00000 n 
+0018440128 00000 n 
+0018440373 00000 n 
+0018440422 00000 n 
+0018440616 00000 n 
+0018440826 00000 n 
+0018441039 00000 n 
+0018441088 00000 n 
+0018441281 00000 n 
+0018441514 00000 n 
+0018441699 00000 n 
+0018441748 00000 n 
+0018441941 00000 n 
+0018441990 00000 n 
+0018442384 00000 n 
+0018442578 00000 n 
+0018444739 00000 n 
+0018445106 00000 n 
+0018445154 00000 n 
+0018445349 00000 n 
+0018448743 00000 n 
+0018449119 00000 n 
+0018449167 00000 n 
+0018449215 00000 n 
+0018449401 00000 n 
+0018449449 00000 n 
+0018449643 00000 n 
+0018453332 00000 n 
+0018453771 00000 n 
+0018453819 00000 n 
+0018458079 00000 n 
+0018458609 00000 n 
+0018458804 00000 n 
+0018458989 00000 n 
+0018459183 00000 n 
+0018459381 00000 n 
+0018459576 00000 n 
+0018459762 00000 n 
+0018470375 00000 n 
+0018470796 00000 n 
+0018470844 00000 n 
+0018471409 00000 n 
+0018471605 00000 n 
+0018471827 00000 n 
+0018472044 00000 n 
+0018472260 00000 n 
+0018472493 00000 n 
+0018472541 00000 n 
+0018472589 00000 n 
+0018472637 00000 n 
+0018472869 00000 n 
+0018473115 00000 n 
+0018473163 00000 n 
+0018473211 00000 n 
+0018487334 00000 n 
+0018487721 00000 n 
+0018487770 00000 n 
+0018487819 00000 n 
+0018487868 00000 n 
+0018496022 00000 n 
+0018496383 00000 n 
+0018496432 00000 n 
+0018496481 00000 n 
+0018496530 00000 n 
+0018496579 00000 n 
+0018496628 00000 n 
+0018508850 00000 n 
+0018509237 00000 n 
+0018509286 00000 n 
+0018509887 00000 n 
+0018510235 00000 n 
+0018510283 00000 n 
+0018522735 00000 n 
+0018523098 00000 n 
+0018523146 00000 n 
+0018523194 00000 n 
+0018523242 00000 n 
+0018523290 00000 n 
+0018523337 00000 n 
+0018538394 00000 n 
+0018538757 00000 n 
+0018538805 00000 n 
+0018538853 00000 n 
+0018538901 00000 n 
+0018539560 00000 n 
+0018554685 00000 n 
+0018555020 00000 n 
+0018570125 00000 n 
+0018570488 00000 n 
+0018570536 00000 n 
+0018570584 00000 n 
+0018584562 00000 n 
+0018584925 00000 n 
+0018584973 00000 n 
+0018585021 00000 n 
+0018585069 00000 n 
+0018598370 00000 n 
+0018598733 00000 n 
+0018598781 00000 n 
+0018598829 00000 n 
+0018598877 00000 n 
+0018598925 00000 n 
+0018612829 00000 n 
+0018613192 00000 n 
+0018613240 00000 n 
+0018613288 00000 n 
+0018613336 00000 n 
+0018614045 00000 n 
+0018614093 00000 n 
+0018614141 00000 n 
+0018634613 00000 n 
+0018634976 00000 n 
+0018635024 00000 n 
+0018635072 00000 n 
+0018653529 00000 n 
+0018653892 00000 n 
+0018653940 00000 n 
+0018653988 00000 n 
+0018654036 00000 n 
+0018667753 00000 n 
+0018668101 00000 n 
+0018668149 00000 n 
+0018668197 00000 n 
+0018668245 00000 n 
+0018668293 00000 n 
+0018668341 00000 n 
+0018686950 00000 n 
+0018687313 00000 n 
+0018687361 00000 n 
+0018700933 00000 n 
+0018701296 00000 n 
+0018701344 00000 n 
+0018701392 00000 n 
+0018701440 00000 n 
+0018701488 00000 n 
+0018716509 00000 n 
+0018716872 00000 n 
+0018716920 00000 n 
+0018716968 00000 n 
+0018717016 00000 n 
+0018717064 00000 n 
+0018730998 00000 n 
+0018731361 00000 n 
+0018731409 00000 n 
+0018731457 00000 n 
+0018731505 00000 n 
+0018731553 00000 n 
+0018731601 00000 n 
+0018747783 00000 n 
+0018748146 00000 n 
+0018748194 00000 n 
+0018748242 00000 n 
+0018748290 00000 n 
+0018748338 00000 n 
+0018748386 00000 n 
+0018748434 00000 n 
+0018763819 00000 n 
+0018764182 00000 n 
+0018764230 00000 n 
+0018764278 00000 n 
+0018764326 00000 n 
+0018764374 00000 n 
+0018778615 00000 n 
+0018778978 00000 n 
+0018779026 00000 n 
+0018779074 00000 n 
+0018779122 00000 n 
+0018779170 00000 n 
+0018798164 00000 n 
+0018798527 00000 n 
+0018798575 00000 n 
+0018798623 00000 n 
+0018798671 00000 n 
+0018808784 00000 n 
+0018809147 00000 n 
+0018809195 00000 n 
+0018809243 00000 n 
+0018809651 00000 n 
+0018809699 00000 n 
+0018809747 00000 n 
+0018809795 00000 n 
+0018809843 00000 n 
+0018809891 00000 n 
+0018822145 00000 n 
+0018822508 00000 n 
+0018822556 00000 n 
+0018822604 00000 n 
+0018823077 00000 n 
+0018823125 00000 n 
+0018823173 00000 n 
+0018838172 00000 n 
+0018838535 00000 n 
+0018838583 00000 n 
+0018838631 00000 n 
+0018838679 00000 n 
+0018846128 00000 n 
+0018846476 00000 n 
+0018846595 00000 n 
+0018846717 00000 n 
+0018846846 00000 n 
+0018846976 00000 n 
+0018847101 00000 n 
+0018847228 00000 n 
+0018847351 00000 n 
+0018847476 00000 n 
+0018847604 00000 n 
+0018847731 00000 n 
+0018847865 00000 n 
+0018847998 00000 n 
+0018848130 00000 n 
+0018848263 00000 n 
+0018848391 00000 n 
+0018848520 00000 n 
+0018848642 00000 n 
+0018848763 00000 n 
+0018848890 00000 n 
+0018849016 00000 n 
+0018849145 00000 n 
+0018849273 00000 n 
+0018849412 00000 n 
+0018849550 00000 n 
+0018849675 00000 n 
+0018849799 00000 n 
+0018849923 00000 n 
+0018850046 00000 n 
+0018850176 00000 n 
+0018850306 00000 n 
+0018850427 00000 n 
+0018850550 00000 n 
+0018850678 00000 n 
+0018850806 00000 n 
+0018850924 00000 n 
+0018851044 00000 n 
+0018851168 00000 n 
+0018851292 00000 n 
+0018851448 00000 n 
+0018851604 00000 n 
+0018851743 00000 n 
+0018851884 00000 n 
+0018852043 00000 n 
+0018852203 00000 n 
+0018852347 00000 n 
+0018852493 00000 n 
 0018852657 00000 n 
 0018852821 00000 n 
-0018852985 00000 n 
-0018853111 00000 n 
-0018853238 00000 n 
-0018853360 00000 n 
-0018853484 00000 n 
-0018853612 00000 n 
-0018853742 00000 n 
-0018853870 00000 n 
-0018853998 00000 n 
-0018854120 00000 n 
-0018854244 00000 n 
-0018854364 00000 n 
-0018854484 00000 n 
-0018854597 00000 n 
-0018854715 00000 n 
-0018854842 00000 n 
-0018854969 00000 n 
-0018855087 00000 n 
-0018855207 00000 n 
-0018855343 00000 n 
-0018855479 00000 n 
-0018855602 00000 n 
-0018855725 00000 n 
-0018855846 00000 n 
-0018855968 00000 n 
-0018856097 00000 n 
-0018856228 00000 n 
-0018856345 00000 n 
-0018856463 00000 n 
-0018856582 00000 n 
-0018856701 00000 n 
-0018856821 00000 n 
-0018856942 00000 n 
-0018857070 00000 n 
-0018857200 00000 n 
-0018857342 00000 n 
-0018857484 00000 n 
-0018857631 00000 n 
-0018857780 00000 n 
-0018857907 00000 n 
-0018858035 00000 n 
-0018858163 00000 n 
-0018858291 00000 n 
-0018858421 00000 n 
-0018858551 00000 n 
-0018858684 00000 n 
-0018858818 00000 n 
-0018858944 00000 n 
-0018859071 00000 n 
-0018859189 00000 n 
-0018859307 00000 n 
-0018859437 00000 n 
-0018859567 00000 n 
-0018859697 00000 n 
-0018859829 00000 n 
-0018859955 00000 n 
-0018860081 00000 n 
-0018860213 00000 n 
-0018860346 00000 n 
-0018860471 00000 n 
-0018860596 00000 n 
-0018860722 00000 n 
-0018860850 00000 n 
-0018860973 00000 n 
-0018861097 00000 n 
-0018861237 00000 n 
-0018861377 00000 n 
-0018861512 00000 n 
-0018861649 00000 n 
-0018861791 00000 n 
+0018852947 00000 n 
+0018853074 00000 n 
+0018853196 00000 n 
+0018853320 00000 n 
+0018853448 00000 n 
+0018853578 00000 n 
+0018853706 00000 n 
+0018853834 00000 n 
+0018853956 00000 n 
+0018854080 00000 n 
+0018854200 00000 n 
+0018854320 00000 n 
+0018854433 00000 n 
+0018854551 00000 n 
+0018854678 00000 n 
+0018854805 00000 n 
+0018854923 00000 n 
+0018855043 00000 n 
+0018855179 00000 n 
+0018855315 00000 n 
+0018855438 00000 n 
+0018855561 00000 n 
+0018855682 00000 n 
+0018855804 00000 n 
+0018855933 00000 n 
+0018856064 00000 n 
+0018856181 00000 n 
+0018856299 00000 n 
+0018856418 00000 n 
+0018856537 00000 n 
+0018856657 00000 n 
+0018856778 00000 n 
+0018856906 00000 n 
+0018857036 00000 n 
+0018857178 00000 n 
+0018857320 00000 n 
+0018857467 00000 n 
+0018857616 00000 n 
+0018857743 00000 n 
+0018857871 00000 n 
+0018857999 00000 n 
+0018858127 00000 n 
+0018858257 00000 n 
+0018858387 00000 n 
+0018858520 00000 n 
+0018858654 00000 n 
+0018858780 00000 n 
+0018858907 00000 n 
+0018859025 00000 n 
+0018859143 00000 n 
+0018859273 00000 n 
+0018859403 00000 n 
+0018859533 00000 n 
+0018859665 00000 n 
+0018859791 00000 n 
+0018859917 00000 n 
+0018860049 00000 n 
+0018860182 00000 n 
+0018860307 00000 n 
+0018860432 00000 n 
+0018860558 00000 n 
+0018860686 00000 n 
+0018860809 00000 n 
+0018860933 00000 n 
+0018861073 00000 n 
+0018861213 00000 n 
+0018861348 00000 n 
+0018861485 00000 n 
+0018861627 00000 n 
+0018861770 00000 n 
 0018861934 00000 n 
-0018862098 00000 n 
-0018862263 00000 n 
-0018862419 00000 n 
-0018862576 00000 n 
-0018862708 00000 n 
-0018862841 00000 n 
-0018862964 00000 n 
-0018863087 00000 n 
-0018863217 00000 n 
-0018863349 00000 n 
-0018863487 00000 n 
-0018863625 00000 n 
-0018863755 00000 n 
-0018863886 00000 n 
-0018864008 00000 n 
-0018864131 00000 n 
-0018864261 00000 n 
-0018864391 00000 n 
-0018864532 00000 n 
-0018864673 00000 n 
-0018864820 00000 n 
-0018864967 00000 n 
-0018865137 00000 n 
-0018865307 00000 n 
-0018865459 00000 n 
-0018865611 00000 n 
-0018865753 00000 n 
-0018865896 00000 n 
-0018866034 00000 n 
-0018866172 00000 n 
-0018866297 00000 n 
-0018866424 00000 n 
-0018866550 00000 n 
-0018866678 00000 n 
-0018866804 00000 n 
-0018866930 00000 n 
-0018867061 00000 n 
-0018867193 00000 n 
-0018867318 00000 n 
-0018867444 00000 n 
-0018867577 00000 n 
-0018867711 00000 n 
-0018867841 00000 n 
-0018867973 00000 n 
-0018868099 00000 n 
-0018868226 00000 n 
-0018868353 00000 n 
-0018868482 00000 n 
-0018868604 00000 n 
-0018868728 00000 n 
-0018868872 00000 n 
-0018869016 00000 n 
-0018869138 00000 n 
-0018869262 00000 n 
-0018869391 00000 n 
-0018869522 00000 n 
-0018869654 00000 n 
-0018869788 00000 n 
-0018869913 00000 n 
-0018870040 00000 n 
-0018870161 00000 n 
-0018870284 00000 n 
-0018870415 00000 n 
-0018870548 00000 n 
-0018870690 00000 n 
-0018870834 00000 n 
-0018870976 00000 n 
-0018871120 00000 n 
-0018871269 00000 n 
-0018871420 00000 n 
-0018871564 00000 n 
-0018871709 00000 n 
-0018871835 00000 n 
-0018871963 00000 n 
-0018872087 00000 n 
-0018872213 00000 n 
-0018872342 00000 n 
-0018872471 00000 n 
-0018872596 00000 n 
-0018872722 00000 n 
-0018872853 00000 n 
-0018872984 00000 n 
-0018873124 00000 n 
-0018873266 00000 n 
-0018873398 00000 n 
-0018873530 00000 n 
-0018873668 00000 n 
-0018873806 00000 n 
-0018873938 00000 n 
-0018874070 00000 n 
-0018874205 00000 n 
-0018874341 00000 n 
-0018874471 00000 n 
-0018874602 00000 n 
-0018874737 00000 n 
-0018874872 00000 n 
-0018875015 00000 n 
-0018875158 00000 n 
-0018875299 00000 n 
-0018875441 00000 n 
-0018875569 00000 n 
-0018875698 00000 n 
-0018875828 00000 n 
-0018875958 00000 n 
-0018876085 00000 n 
-0018876212 00000 n 
-0018876331 00000 n 
-0018876452 00000 n 
-0018876592 00000 n 
-0018876732 00000 n 
-0018876856 00000 n 
-0018876981 00000 n 
-0018877102 00000 n 
-0018877225 00000 n 
-0018877351 00000 n 
-0018877479 00000 n 
-0018877597 00000 n 
-0018877715 00000 n 
-0018877833 00000 n 
-0018877952 00000 n 
-0018878065 00000 n 
-0018878179 00000 n 
-0018878296 00000 n 
-0018878414 00000 n 
-0018878533 00000 n 
-0018878653 00000 n 
-0018878772 00000 n 
-0018878893 00000 n 
-0018879012 00000 n 
-0018879133 00000 n 
-0018879268 00000 n 
-0018879405 00000 n 
-0018879523 00000 n 
-0018879643 00000 n 
-0018879768 00000 n 
-0018879894 00000 n 
-0018880023 00000 n 
-0018880153 00000 n 
-0018880276 00000 n 
-0018880400 00000 n 
-0018880533 00000 n 
-0018880666 00000 n 
-0018880782 00000 n 
-0018880899 00000 n 
-0018881032 00000 n 
-0018881167 00000 n 
-0018881301 00000 n 
-0018881437 00000 n 
-0018881561 00000 n 
-0018881686 00000 n 
-0018881809 00000 n 
-0018881934 00000 n 
-0018882087 00000 n 
-0018882240 00000 n 
-0018882383 00000 n 
-0018882527 00000 n 
-0018882652 00000 n 
-0018882778 00000 n 
-0018882900 00000 n 
-0018883022 00000 n 
-0018883148 00000 n 
-0018883275 00000 n 
-0018883392 00000 n 
-0018883510 00000 n 
-0018883644 00000 n 
-0018883778 00000 n 
-0018883907 00000 n 
-0018884036 00000 n 
-0018884160 00000 n 
-0018884286 00000 n 
-0018884413 00000 n 
-0018884540 00000 n 
-0018884665 00000 n 
-0018884792 00000 n 
-0018884918 00000 n 
-0018885045 00000 n 
-0018885172 00000 n 
-0018885300 00000 n 
-0018885423 00000 n 
-0018885547 00000 n 
-0018885668 00000 n 
-0018885791 00000 n 
-0018885926 00000 n 
-0018886062 00000 n 
-0018886190 00000 n 
-0018886319 00000 n 
-0018886439 00000 n 
-0018886562 00000 n 
-0018886689 00000 n 
-0018886816 00000 n 
-0018886944 00000 n 
-0018887074 00000 n 
-0018887192 00000 n 
-0018887312 00000 n 
-0018887427 00000 n 
-0018887544 00000 n 
-0018887664 00000 n 
-0018887786 00000 n 
-0018887905 00000 n 
-0018888026 00000 n 
-0018888154 00000 n 
-0018888282 00000 n 
-0018888405 00000 n 
-0018888529 00000 n 
-0018888660 00000 n 
-0018888792 00000 n 
-0018888920 00000 n 
-0018889048 00000 n 
-0018889174 00000 n 
-0018889303 00000 n 
-0018889433 00000 n 
-0018889565 00000 n 
-0018889694 00000 n 
-0018889825 00000 n 
-0018889954 00000 n 
-0018890084 00000 n 
-0018890208 00000 n 
-0018890333 00000 n 
-0018890460 00000 n 
-0018890589 00000 n 
-0018890721 00000 n 
-0018890853 00000 n 
-0018890977 00000 n 
-0018891103 00000 n 
-0018891233 00000 n 
-0018891364 00000 n 
-0018891491 00000 n 
-0018891620 00000 n 
-0018891748 00000 n 
-0018891876 00000 n 
-0018892007 00000 n 
-0018892139 00000 n 
-0018892268 00000 n 
-0018892397 00000 n 
-0018892544 00000 n 
-0018892691 00000 n 
-0018892815 00000 n 
-0018892940 00000 n 
-0018893065 00000 n 
-0018893191 00000 n 
-0018893325 00000 n 
-0018893460 00000 n 
-0018893591 00000 n 
-0018893724 00000 n 
-0018893858 00000 n 
-0018893994 00000 n 
-0018894116 00000 n 
-0018894238 00000 n 
-0018894358 00000 n 
-0018894478 00000 n 
-0018894605 00000 n 
-0018894733 00000 n 
-0018894861 00000 n 
-0018894991 00000 n 
-0018895118 00000 n 
-0018895246 00000 n 
-0018895373 00000 n 
-0018895502 00000 n 
-0018895634 00000 n 
-0018895768 00000 n 
-0018895929 00000 n 
-0018896090 00000 n 
-0018896213 00000 n 
-0018896338 00000 n 
-0018896464 00000 n 
-0018896592 00000 n 
-0018896722 00000 n 
-0018896852 00000 n 
-0018896980 00000 n 
-0018897108 00000 n 
-0018897234 00000 n 
-0018897361 00000 n 
-0018897488 00000 n 
-0018897615 00000 n 
-0018897735 00000 n 
-0018897857 00000 n 
-0018897981 00000 n 
-0018898106 00000 n 
-0018898240 00000 n 
-0018898374 00000 n 
-0018898496 00000 n 
-0018898619 00000 n 
-0018898746 00000 n 
-0018898875 00000 n 
-0018898992 00000 n 
-0018899110 00000 n 
-0018899227 00000 n 
-0018899346 00000 n 
-0018899465 00000 n 
-0018899585 00000 n 
-0018899707 00000 n 
-0018899831 00000 n 
-0018899961 00000 n 
-0018900091 00000 n 
-0018900230 00000 n 
-0018900371 00000 n 
-0018900499 00000 n 
-0018900627 00000 n 
-0018900750 00000 n 
-0018900920 00000 n 
-0018901045 00000 n 
-0018901169 00000 n 
-0018901295 00000 n 
-0018901421 00000 n 
-0018901545 00000 n 
-0018901670 00000 n 
-0018901795 00000 n 
-0018901920 00000 n 
-0018902038 00000 n 
-0018902158 00000 n 
-0018902278 00000 n 
-0018902400 00000 n 
-0018902521 00000 n 
-0018902642 00000 n 
-0018902803 00000 n 
-0018902964 00000 n 
-0018903085 00000 n 
-0018903208 00000 n 
-0018903332 00000 n 
-0018903457 00000 n 
-0018903575 00000 n 
-0018903773 00000 n 
-0018903895 00000 n 
-0018904013 00000 n 
-0018904137 00000 n 
-0018904262 00000 n 
-0018904388 00000 n 
-0018904516 00000 n 
-0018904645 00000 n 
-0018904777 00000 n 
-0018904897 00000 n 
-0018905018 00000 n 
-0018905152 00000 n 
-0018905287 00000 n 
-0018905407 00000 n 
-0018905529 00000 n 
-0018905657 00000 n 
-0018905787 00000 n 
-0018905911 00000 n 
-0018906036 00000 n 
-0018906154 00000 n 
-0018906273 00000 n 
-0018906400 00000 n 
-0018906527 00000 n 
-0018906652 00000 n 
-0018906777 00000 n 
-0018906908 00000 n 
-0018907040 00000 n 
-0018907157 00000 n 
-0018907276 00000 n 
-0018907396 00000 n 
-0018907518 00000 n 
-0018907652 00000 n 
-0018907787 00000 n 
-0018907911 00000 n 
-0018908037 00000 n 
-0018908159 00000 n 
-0018908281 00000 n 
-0018908405 00000 n 
-0018908459 00000 n 
-0018908583 00000 n 
-0018908731 00000 n 
-0018908879 00000 n 
-0018909006 00000 n 
-0018909133 00000 n 
-0018909275 00000 n 
-0018909417 00000 n 
-0018909538 00000 n 
-0018909661 00000 n 
-0018909781 00000 n 
-0018909903 00000 n 
-0018910030 00000 n 
-0018910158 00000 n 
-0018910295 00000 n 
-0018910433 00000 n 
-0018910551 00000 n 
-0018910671 00000 n 
-0018910795 00000 n 
-0018910920 00000 n 
-0018911040 00000 n 
-0018911162 00000 n 
-0018911284 00000 n 
-0018911407 00000 n 
-0018911528 00000 n 
-0018911650 00000 n 
-0018911774 00000 n 
-0018911899 00000 n 
-0018912019 00000 n 
-0018912141 00000 n 
-0018912273 00000 n 
-0018912405 00000 n 
-0018912529 00000 n 
-0018912654 00000 n 
-0018912794 00000 n 
-0018912934 00000 n 
-0018913054 00000 n 
-0018913176 00000 n 
-0018913312 00000 n 
-0018913448 00000 n 
-0018913568 00000 n 
-0018913690 00000 n 
-0018913814 00000 n 
-0018913939 00000 n 
-0018914060 00000 n 
-0018914183 00000 n 
-0018914334 00000 n 
-0018914487 00000 n 
-0018914605 00000 n 
-0018914723 00000 n 
-0018914857 00000 n 
-0018914991 00000 n 
-0018915115 00000 n 
-0018915167 00000 n 
-0018915519 00000 n 
-0018915645 00000 n 
-0018915762 00000 n 
-0018915880 00000 n 
-0018915999 00000 n 
-0018916118 00000 n 
-0018916246 00000 n 
-0018916375 00000 n 
-0018916498 00000 n 
-0018916623 00000 n 
-0018916749 00000 n 
-0018916877 00000 n 
-0018916995 00000 n 
-0018917113 00000 n 
-0018917230 00000 n 
-0018917349 00000 n 
-0018917471 00000 n 
-0018917595 00000 n 
-0018917754 00000 n 
-0018917913 00000 n 
-0018918057 00000 n 
-0018918202 00000 n 
-0018918284 00000 n 
-0018918512 00000 n 
-0018918672 00000 n 
-0018918828 00000 n 
-0018919047 00000 n 
-0018919252 00000 n 
-0018919529 00000 n 
-0018919793 00000 n 
-0018920027 00000 n 
-0018920276 00000 n 
-0018920621 00000 n 
-0018920954 00000 n 
-0018921211 00000 n 
-0018921472 00000 n 
-0018921757 00000 n 
-0018922003 00000 n 
-0018922199 00000 n 
-0018922513 00000 n 
-0018922722 00000 n 
-0018922936 00000 n 
-0018923184 00000 n 
-0018923422 00000 n 
-0018923763 00000 n 
-0018924040 00000 n 
-0018924397 00000 n 
-0018924698 00000 n 
-0018925071 00000 n 
-0018925281 00000 n 
-0018925482 00000 n 
-0018925704 00000 n 
-0018925933 00000 n 
-0018926146 00000 n 
-0018926343 00000 n 
-0018926532 00000 n 
-0018926761 00000 n 
-0018926959 00000 n 
-0018927221 00000 n 
-0018927431 00000 n 
-0018927649 00000 n 
-0018927887 00000 n 
-0018928085 00000 n 
-0018928264 00000 n 
-0018928517 00000 n 
-0018928740 00000 n 
-0018929011 00000 n 
-0018929309 00000 n 
-0018929600 00000 n 
-0018929830 00000 n 
-0018930080 00000 n 
-0018930334 00000 n 
-0018930532 00000 n 
-0018930782 00000 n 
-0018931044 00000 n 
-0018931394 00000 n 
-0018931616 00000 n 
-0018931898 00000 n 
-0018932272 00000 n 
-0018932487 00000 n 
-0018932725 00000 n 
-0018933028 00000 n 
-0018933294 00000 n 
-0018933584 00000 n 
-0018933962 00000 n 
-0018934308 00000 n 
-0018934558 00000 n 
-0018934808 00000 n 
-0018935082 00000 n 
-0018935448 00000 n 
-0018935695 00000 n 
-0018935940 00000 n 
-0018936163 00000 n 
-0018936485 00000 n 
-0018936799 00000 n 
-0018937205 00000 n 
-0018937531 00000 n 
-0018937821 00000 n 
-0018938104 00000 n 
-0018938314 00000 n 
-0018938509 00000 n 
-0018938743 00000 n 
-0018938945 00000 n 
-0018939211 00000 n 
-0018939413 00000 n 
-0018939639 00000 n 
-0018939845 00000 n 
-0018940071 00000 n 
-0018940265 00000 n 
-0018940603 00000 n 
-0018940917 00000 n 
-0018941152 00000 n 
-0018941393 00000 n 
-0018941588 00000 n 
-0018941783 00000 n 
-0018942088 00000 n 
-0018942283 00000 n 
-0018942529 00000 n 
-0018942867 00000 n 
-0018943102 00000 n 
-0018943336 00000 n 
-0018943531 00000 n 
-0018943753 00000 n 
-0018943963 00000 n 
-0018944261 00000 n 
-0018944547 00000 n 
-0018944849 00000 n 
-0018945099 00000 n 
-0018945333 00000 n 
-0018945735 00000 n 
-0018946005 00000 n 
-0018946387 00000 n 
-0018946689 00000 n 
-0018946935 00000 n 
-0018947278 00000 n 
-0018947531 00000 n 
-0018947734 00000 n 
-0018947936 00000 n 
-0018948199 00000 n 
-0018948428 00000 n 
-0018948612 00000 n 
-0018948877 00000 n 
-0018949060 00000 n 
-0018949266 00000 n 
-0018949548 00000 n 
-0018949890 00000 n 
-0018950092 00000 n 
-0018950283 00000 n 
-0018950564 00000 n 
-0018950776 00000 n 
-0018950997 00000 n 
-0018951208 00000 n 
-0018951450 00000 n 
-0018951668 00000 n 
-0018951911 00000 n 
-0018952172 00000 n 
-0018952419 00000 n 
-0018952685 00000 n 
-0018952947 00000 n 
-0018953161 00000 n 
-0018953495 00000 n 
-0018953778 00000 n 
-0018954064 00000 n 
-0018954295 00000 n 
-0018954505 00000 n 
-0018954703 00000 n 
-0018954965 00000 n 
-0018955183 00000 n 
-0018955417 00000 n 
-0018955687 00000 n 
-0018955933 00000 n 
-0018956187 00000 n 
-0018956445 00000 n 
-0018956643 00000 n 
-0018956865 00000 n 
-0018957171 00000 n 
-0018957386 00000 n 
-0018957611 00000 n 
-0018957818 00000 n 
-0018958052 00000 n 
-0018958254 00000 n 
-0018958444 00000 n 
-0018958631 00000 n 
-0018958961 00000 n 
-0018959200 00000 n 
-0018959398 00000 n 
-0018959616 00000 n 
-0018959818 00000 n 
-0018960024 00000 n 
-0018960242 00000 n 
-0018960456 00000 n 
-0018960666 00000 n 
-0018960896 00000 n 
-0018961102 00000 n 
-0018961320 00000 n 
-0018961542 00000 n 
-0018961848 00000 n 
-0018962086 00000 n 
-0018962400 00000 n 
-0018962630 00000 n 
-0018962900 00000 n 
-0018963210 00000 n 
-0018963417 00000 n 
-0018963678 00000 n 
-0018963877 00000 n 
-0018964111 00000 n 
-0018964386 00000 n 
-0018964688 00000 n 
-0018964955 00000 n 
-0018965205 00000 n 
-0018965447 00000 n 
-0018965681 00000 n 
-0018965927 00000 n 
-0018966185 00000 n 
-0018966551 00000 n 
-0018966781 00000 n 
-0018967023 00000 n 
-0018967401 00000 n 
-0018967783 00000 n 
-0018968105 00000 n 
-0018968335 00000 n 
-0018968601 00000 n 
-0018968851 00000 n 
-0018969090 00000 n 
-0018969396 00000 n 
-0018969627 00000 n 
-0018969909 00000 n 
-0018970107 00000 n 
-0018970373 00000 n 
-0018970643 00000 n 
-0018970937 00000 n 
-0018971195 00000 n 
-0018971521 00000 n 
-0018971803 00000 n 
-0018972005 00000 n 
-0018972252 00000 n 
-0018972537 00000 n 
-0018972724 00000 n 
-0018972934 00000 n 
-0018973140 00000 n 
-0018973491 00000 n 
-0018973720 00000 n 
-0018973904 00000 n 
-0018974217 00000 n 
-0018974424 00000 n 
-0018974658 00000 n 
-0018974908 00000 n 
-0018975114 00000 n 
-0018975388 00000 n 
-0018975598 00000 n 
-0018975840 00000 n 
-0018976047 00000 n 
-0018976308 00000 n 
-0018976515 00000 n 
-0018976737 00000 n 
-0018976987 00000 n 
-0018977177 00000 n 
-0018977387 00000 n 
-0018977649 00000 n 
-0018977875 00000 n 
-0018978062 00000 n 
-0018978259 00000 n 
-0018978558 00000 n 
-0018978876 00000 n 
-0018979151 00000 n 
-0018979348 00000 n 
-0018979551 00000 n 
-0018979793 00000 n 
-0018980044 00000 n 
-0018980225 00000 n 
-0018980424 00000 n 
-0018980626 00000 n 
-0018980817 00000 n 
-0018981006 00000 n 
-0018981205 00000 n 
-0018981392 00000 n 
-0018981629 00000 n 
-0018981828 00000 n 
-0018982110 00000 n 
-0018982297 00000 n 
-0018982554 00000 n 
-0018982741 00000 n 
-0018982940 00000 n 
-0018983119 00000 n 
-0018983398 00000 n 
-0018983588 00000 n 
-0018983850 00000 n 
-0018984204 00000 n 
-0018984438 00000 n 
-0018984632 00000 n 
-0018984858 00000 n 
-0018985152 00000 n 
-0018985382 00000 n 
-0018985720 00000 n 
-0018985966 00000 n 
-0018986232 00000 n 
-0018986586 00000 n 
-0018986873 00000 n 
-0019003895 00000 n 
-0019003941 00000 n 
-0019004216 00000 n 
-0019004491 00000 n 
-0019017665 00000 n 
-0019017881 00000 n 
-0019019237 00000 n 
-0019020155 00000 n 
-0019031882 00000 n 
-0019032103 00000 n 
-0019033459 00000 n 
-0019034376 00000 n 
-0019045274 00000 n 
-0019045500 00000 n 
-0019046856 00000 n 
-0019047774 00000 n 
-0019054642 00000 n 
-0019054857 00000 n 
-0019056213 00000 n 
-0019057130 00000 n 
-0019061416 00000 n 
-0019061632 00000 n 
-0019061975 00000 n 
-0019062894 00000 n 
-0019064173 00000 n 
-0019064397 00000 n 
-0019064717 00000 n 
-0019065856 00000 n 
-0019075375 00000 n 
-0019075605 00000 n 
-0019076961 00000 n 
-0019077878 00000 n 
-0019079153 00000 n 
-0019079379 00000 n 
-0019079695 00000 n 
-0019080834 00000 n 
-0019085696 00000 n 
-0019085908 00000 n 
-0019087264 00000 n 
-0019088180 00000 n 
-0019090265 00000 n 
-0019090480 00000 n 
-0019090806 00000 n 
-0019091724 00000 n 
-0019095208 00000 n 
-0019095422 00000 n 
-0019096778 00000 n 
-0019097694 00000 n 
-0019101392 00000 n 
-0019101613 00000 n 
-0019101929 00000 n 
-0019102846 00000 n 
-0019106401 00000 n 
-0019106627 00000 n 
-0019106931 00000 n 
+0018862099 00000 n 
+0018862255 00000 n 
+0018862412 00000 n 
+0018862544 00000 n 
+0018862677 00000 n 
+0018862800 00000 n 
+0018862923 00000 n 
+0018863053 00000 n 
+0018863185 00000 n 
+0018863323 00000 n 
+0018863461 00000 n 
+0018863591 00000 n 
+0018863722 00000 n 
+0018863844 00000 n 
+0018863967 00000 n 
+0018864097 00000 n 
+0018864227 00000 n 
+0018864368 00000 n 
+0018864509 00000 n 
+0018864656 00000 n 
+0018864803 00000 n 
+0018864973 00000 n 
+0018865143 00000 n 
+0018865295 00000 n 
+0018865447 00000 n 
+0018865589 00000 n 
+0018865732 00000 n 
+0018865870 00000 n 
+0018866008 00000 n 
+0018866133 00000 n 
+0018866260 00000 n 
+0018866386 00000 n 
+0018866514 00000 n 
+0018866640 00000 n 
+0018866766 00000 n 
+0018866897 00000 n 
+0018867029 00000 n 
+0018867154 00000 n 
+0018867280 00000 n 
+0018867413 00000 n 
+0018867547 00000 n 
+0018867677 00000 n 
+0018867809 00000 n 
+0018867935 00000 n 
+0018868062 00000 n 
+0018868189 00000 n 
+0018868318 00000 n 
+0018868440 00000 n 
+0018868564 00000 n 
+0018868708 00000 n 
+0018868852 00000 n 
+0018868974 00000 n 
+0018869098 00000 n 
+0018869227 00000 n 
+0018869358 00000 n 
+0018869490 00000 n 
+0018869624 00000 n 
+0018869749 00000 n 
+0018869876 00000 n 
+0018869997 00000 n 
+0018870120 00000 n 
+0018870251 00000 n 
+0018870384 00000 n 
+0018870526 00000 n 
+0018870670 00000 n 
+0018870812 00000 n 
+0018870956 00000 n 
+0018871105 00000 n 
+0018871256 00000 n 
+0018871400 00000 n 
+0018871545 00000 n 
+0018871671 00000 n 
+0018871799 00000 n 
+0018871923 00000 n 
+0018872049 00000 n 
+0018872178 00000 n 
+0018872307 00000 n 
+0018872432 00000 n 
+0018872558 00000 n 
+0018872689 00000 n 
+0018872820 00000 n 
+0018872960 00000 n 
+0018873102 00000 n 
+0018873234 00000 n 
+0018873366 00000 n 
+0018873504 00000 n 
+0018873642 00000 n 
+0018873774 00000 n 
+0018873906 00000 n 
+0018874041 00000 n 
+0018874177 00000 n 
+0018874307 00000 n 
+0018874438 00000 n 
+0018874573 00000 n 
+0018874708 00000 n 
+0018874851 00000 n 
+0018874994 00000 n 
+0018875135 00000 n 
+0018875277 00000 n 
+0018875405 00000 n 
+0018875534 00000 n 
+0018875664 00000 n 
+0018875794 00000 n 
+0018875921 00000 n 
+0018876048 00000 n 
+0018876167 00000 n 
+0018876288 00000 n 
+0018876428 00000 n 
+0018876568 00000 n 
+0018876692 00000 n 
+0018876817 00000 n 
+0018876938 00000 n 
+0018877061 00000 n 
+0018877187 00000 n 
+0018877315 00000 n 
+0018877433 00000 n 
+0018877551 00000 n 
+0018877669 00000 n 
+0018877788 00000 n 
+0018877901 00000 n 
+0018878015 00000 n 
+0018878132 00000 n 
+0018878250 00000 n 
+0018878369 00000 n 
+0018878489 00000 n 
+0018878608 00000 n 
+0018878729 00000 n 
+0018878848 00000 n 
+0018878969 00000 n 
+0018879104 00000 n 
+0018879241 00000 n 
+0018879359 00000 n 
+0018879479 00000 n 
+0018879604 00000 n 
+0018879730 00000 n 
+0018879859 00000 n 
+0018879989 00000 n 
+0018880112 00000 n 
+0018880236 00000 n 
+0018880369 00000 n 
+0018880502 00000 n 
+0018880618 00000 n 
+0018880735 00000 n 
+0018880868 00000 n 
+0018881003 00000 n 
+0018881137 00000 n 
+0018881273 00000 n 
+0018881397 00000 n 
+0018881522 00000 n 
+0018881645 00000 n 
+0018881770 00000 n 
+0018881923 00000 n 
+0018882076 00000 n 
+0018882219 00000 n 
+0018882363 00000 n 
+0018882488 00000 n 
+0018882614 00000 n 
+0018882736 00000 n 
+0018882858 00000 n 
+0018882984 00000 n 
+0018883111 00000 n 
+0018883228 00000 n 
+0018883346 00000 n 
+0018883480 00000 n 
+0018883614 00000 n 
+0018883743 00000 n 
+0018883872 00000 n 
+0018883996 00000 n 
+0018884122 00000 n 
+0018884249 00000 n 
+0018884376 00000 n 
+0018884501 00000 n 
+0018884628 00000 n 
+0018884754 00000 n 
+0018884881 00000 n 
+0018885008 00000 n 
+0018885136 00000 n 
+0018885259 00000 n 
+0018885383 00000 n 
+0018885504 00000 n 
+0018885627 00000 n 
+0018885762 00000 n 
+0018885898 00000 n 
+0018886026 00000 n 
+0018886155 00000 n 
+0018886275 00000 n 
+0018886398 00000 n 
+0018886525 00000 n 
+0018886652 00000 n 
+0018886780 00000 n 
+0018886910 00000 n 
+0018887028 00000 n 
+0018887148 00000 n 
+0018887263 00000 n 
+0018887380 00000 n 
+0018887500 00000 n 
+0018887622 00000 n 
+0018887741 00000 n 
+0018887862 00000 n 
+0018887990 00000 n 
+0018888118 00000 n 
+0018888241 00000 n 
+0018888365 00000 n 
+0018888496 00000 n 
+0018888628 00000 n 
+0018888756 00000 n 
+0018888884 00000 n 
+0018889010 00000 n 
+0018889139 00000 n 
+0018889269 00000 n 
+0018889401 00000 n 
+0018889530 00000 n 
+0018889661 00000 n 
+0018889790 00000 n 
+0018889920 00000 n 
+0018890044 00000 n 
+0018890169 00000 n 
+0018890296 00000 n 
+0018890425 00000 n 
+0018890557 00000 n 
+0018890689 00000 n 
+0018890813 00000 n 
+0018890939 00000 n 
+0018891069 00000 n 
+0018891200 00000 n 
+0018891327 00000 n 
+0018891456 00000 n 
+0018891584 00000 n 
+0018891712 00000 n 
+0018891843 00000 n 
+0018891975 00000 n 
+0018892104 00000 n 
+0018892233 00000 n 
+0018892380 00000 n 
+0018892527 00000 n 
+0018892651 00000 n 
+0018892776 00000 n 
+0018892901 00000 n 
+0018893027 00000 n 
+0018893161 00000 n 
+0018893296 00000 n 
+0018893427 00000 n 
+0018893560 00000 n 
+0018893694 00000 n 
+0018893830 00000 n 
+0018893952 00000 n 
+0018894074 00000 n 
+0018894194 00000 n 
+0018894314 00000 n 
+0018894441 00000 n 
+0018894569 00000 n 
+0018894697 00000 n 
+0018894827 00000 n 
+0018894954 00000 n 
+0018895082 00000 n 
+0018895209 00000 n 
+0018895338 00000 n 
+0018895470 00000 n 
+0018895604 00000 n 
+0018895765 00000 n 
+0018895926 00000 n 
+0018896049 00000 n 
+0018896174 00000 n 
+0018896300 00000 n 
+0018896428 00000 n 
+0018896558 00000 n 
+0018896688 00000 n 
+0018896816 00000 n 
+0018896944 00000 n 
+0018897070 00000 n 
+0018897197 00000 n 
+0018897324 00000 n 
+0018897451 00000 n 
+0018897571 00000 n 
+0018897693 00000 n 
+0018897817 00000 n 
+0018897942 00000 n 
+0018898076 00000 n 
+0018898210 00000 n 
+0018898332 00000 n 
+0018898455 00000 n 
+0018898582 00000 n 
+0018898711 00000 n 
+0018898828 00000 n 
+0018898946 00000 n 
+0018899063 00000 n 
+0018899182 00000 n 
+0018899301 00000 n 
+0018899421 00000 n 
+0018899543 00000 n 
+0018899667 00000 n 
+0018899797 00000 n 
+0018899927 00000 n 
+0018900066 00000 n 
+0018900207 00000 n 
+0018900335 00000 n 
+0018900463 00000 n 
+0018900586 00000 n 
+0018900756 00000 n 
+0018900881 00000 n 
+0018901005 00000 n 
+0018901131 00000 n 
+0018901257 00000 n 
+0018901381 00000 n 
+0018901506 00000 n 
+0018901631 00000 n 
+0018901756 00000 n 
+0018901874 00000 n 
+0018901994 00000 n 
+0018902114 00000 n 
+0018902236 00000 n 
+0018902357 00000 n 
+0018902478 00000 n 
+0018902639 00000 n 
+0018902800 00000 n 
+0018902921 00000 n 
+0018903044 00000 n 
+0018903168 00000 n 
+0018903293 00000 n 
+0018903411 00000 n 
+0018903609 00000 n 
+0018903731 00000 n 
+0018903849 00000 n 
+0018903973 00000 n 
+0018904098 00000 n 
+0018904224 00000 n 
+0018904352 00000 n 
+0018904481 00000 n 
+0018904613 00000 n 
+0018904733 00000 n 
+0018904854 00000 n 
+0018904988 00000 n 
+0018905123 00000 n 
+0018905243 00000 n 
+0018905365 00000 n 
+0018905493 00000 n 
+0018905623 00000 n 
+0018905747 00000 n 
+0018905872 00000 n 
+0018905990 00000 n 
+0018906109 00000 n 
+0018906236 00000 n 
+0018906363 00000 n 
+0018906488 00000 n 
+0018906613 00000 n 
+0018906744 00000 n 
+0018906876 00000 n 
+0018906993 00000 n 
+0018907112 00000 n 
+0018907232 00000 n 
+0018907354 00000 n 
+0018907488 00000 n 
+0018907623 00000 n 
+0018907747 00000 n 
+0018907873 00000 n 
+0018907995 00000 n 
+0018908117 00000 n 
+0018908241 00000 n 
+0018908295 00000 n 
+0018908419 00000 n 
+0018908567 00000 n 
+0018908715 00000 n 
+0018908842 00000 n 
+0018908969 00000 n 
+0018909111 00000 n 
+0018909253 00000 n 
+0018909374 00000 n 
+0018909497 00000 n 
+0018909617 00000 n 
+0018909739 00000 n 
+0018909866 00000 n 
+0018909994 00000 n 
+0018910131 00000 n 
+0018910269 00000 n 
+0018910387 00000 n 
+0018910507 00000 n 
+0018910631 00000 n 
+0018910756 00000 n 
+0018910876 00000 n 
+0018910998 00000 n 
+0018911120 00000 n 
+0018911243 00000 n 
+0018911364 00000 n 
+0018911486 00000 n 
+0018911610 00000 n 
+0018911735 00000 n 
+0018911855 00000 n 
+0018911977 00000 n 
+0018912109 00000 n 
+0018912241 00000 n 
+0018912365 00000 n 
+0018912490 00000 n 
+0018912630 00000 n 
+0018912770 00000 n 
+0018912890 00000 n 
+0018913012 00000 n 
+0018913148 00000 n 
+0018913284 00000 n 
+0018913404 00000 n 
+0018913526 00000 n 
+0018913650 00000 n 
+0018913775 00000 n 
+0018913896 00000 n 
+0018914019 00000 n 
+0018914170 00000 n 
+0018914323 00000 n 
+0018914441 00000 n 
+0018914559 00000 n 
+0018914693 00000 n 
+0018914827 00000 n 
+0018914951 00000 n 
+0018915003 00000 n 
+0018915355 00000 n 
+0018915481 00000 n 
+0018915598 00000 n 
+0018915716 00000 n 
+0018915835 00000 n 
+0018915954 00000 n 
+0018916082 00000 n 
+0018916211 00000 n 
+0018916334 00000 n 
+0018916459 00000 n 
+0018916585 00000 n 
+0018916713 00000 n 
+0018916831 00000 n 
+0018916949 00000 n 
+0018917066 00000 n 
+0018917185 00000 n 
+0018917307 00000 n 
+0018917431 00000 n 
+0018917590 00000 n 
+0018917749 00000 n 
+0018917893 00000 n 
+0018918038 00000 n 
+0018918120 00000 n 
+0018918348 00000 n 
+0018918508 00000 n 
+0018918664 00000 n 
+0018918883 00000 n 
+0018919088 00000 n 
+0018919365 00000 n 
+0018919629 00000 n 
+0018919863 00000 n 
+0018920112 00000 n 
+0018920457 00000 n 
+0018920790 00000 n 
+0018921047 00000 n 
+0018921308 00000 n 
+0018921593 00000 n 
+0018921839 00000 n 
+0018922035 00000 n 
+0018922349 00000 n 
+0018922558 00000 n 
+0018922772 00000 n 
+0018923020 00000 n 
+0018923258 00000 n 
+0018923599 00000 n 
+0018923876 00000 n 
+0018924233 00000 n 
+0018924534 00000 n 
+0018924907 00000 n 
+0018925117 00000 n 
+0018925318 00000 n 
+0018925540 00000 n 
+0018925769 00000 n 
+0018925982 00000 n 
+0018926179 00000 n 
+0018926368 00000 n 
+0018926597 00000 n 
+0018926795 00000 n 
+0018927057 00000 n 
+0018927267 00000 n 
+0018927485 00000 n 
+0018927723 00000 n 
+0018927921 00000 n 
+0018928100 00000 n 
+0018928353 00000 n 
+0018928576 00000 n 
+0018928847 00000 n 
+0018929145 00000 n 
+0018929436 00000 n 
+0018929666 00000 n 
+0018929916 00000 n 
+0018930170 00000 n 
+0018930368 00000 n 
+0018930618 00000 n 
+0018930880 00000 n 
+0018931230 00000 n 
+0018931452 00000 n 
+0018931734 00000 n 
+0018932108 00000 n 
+0018932323 00000 n 
+0018932561 00000 n 
+0018932864 00000 n 
+0018933130 00000 n 
+0018933420 00000 n 
+0018933798 00000 n 
+0018934144 00000 n 
+0018934394 00000 n 
+0018934644 00000 n 
+0018934918 00000 n 
+0018935284 00000 n 
+0018935531 00000 n 
+0018935776 00000 n 
+0018935999 00000 n 
+0018936321 00000 n 
+0018936635 00000 n 
+0018937041 00000 n 
+0018937367 00000 n 
+0018937657 00000 n 
+0018937940 00000 n 
+0018938150 00000 n 
+0018938345 00000 n 
+0018938579 00000 n 
+0018938781 00000 n 
+0018939047 00000 n 
+0018939249 00000 n 
+0018939475 00000 n 
+0018939681 00000 n 
+0018939907 00000 n 
+0018940101 00000 n 
+0018940439 00000 n 
+0018940753 00000 n 
+0018940988 00000 n 
+0018941229 00000 n 
+0018941424 00000 n 
+0018941619 00000 n 
+0018941924 00000 n 
+0018942119 00000 n 
+0018942365 00000 n 
+0018942703 00000 n 
+0018942938 00000 n 
+0018943172 00000 n 
+0018943367 00000 n 
+0018943589 00000 n 
+0018943799 00000 n 
+0018944097 00000 n 
+0018944383 00000 n 
+0018944685 00000 n 
+0018944935 00000 n 
+0018945169 00000 n 
+0018945571 00000 n 
+0018945841 00000 n 
+0018946223 00000 n 
+0018946525 00000 n 
+0018946771 00000 n 
+0018947114 00000 n 
+0018947367 00000 n 
+0018947570 00000 n 
+0018947772 00000 n 
+0018948035 00000 n 
+0018948264 00000 n 
+0018948448 00000 n 
+0018948713 00000 n 
+0018948896 00000 n 
+0018949102 00000 n 
+0018949384 00000 n 
+0018949726 00000 n 
+0018949928 00000 n 
+0018950119 00000 n 
+0018950400 00000 n 
+0018950612 00000 n 
+0018950833 00000 n 
+0018951044 00000 n 
+0018951286 00000 n 
+0018951504 00000 n 
+0018951747 00000 n 
+0018952008 00000 n 
+0018952255 00000 n 
+0018952521 00000 n 
+0018952783 00000 n 
+0018952997 00000 n 
+0018953331 00000 n 
+0018953614 00000 n 
+0018953900 00000 n 
+0018954131 00000 n 
+0018954341 00000 n 
+0018954539 00000 n 
+0018954801 00000 n 
+0018955019 00000 n 
+0018955253 00000 n 
+0018955523 00000 n 
+0018955769 00000 n 
+0018956023 00000 n 
+0018956281 00000 n 
+0018956479 00000 n 
+0018956701 00000 n 
+0018957007 00000 n 
+0018957222 00000 n 
+0018957447 00000 n 
+0018957654 00000 n 
+0018957888 00000 n 
+0018958090 00000 n 
+0018958280 00000 n 
+0018958467 00000 n 
+0018958797 00000 n 
+0018959036 00000 n 
+0018959234 00000 n 
+0018959452 00000 n 
+0018959654 00000 n 
+0018959860 00000 n 
+0018960078 00000 n 
+0018960292 00000 n 
+0018960502 00000 n 
+0018960732 00000 n 
+0018960938 00000 n 
+0018961156 00000 n 
+0018961378 00000 n 
+0018961684 00000 n 
+0018961922 00000 n 
+0018962236 00000 n 
+0018962466 00000 n 
+0018962736 00000 n 
+0018963046 00000 n 
+0018963253 00000 n 
+0018963514 00000 n 
+0018963713 00000 n 
+0018963947 00000 n 
+0018964222 00000 n 
+0018964524 00000 n 
+0018964791 00000 n 
+0018965041 00000 n 
+0018965283 00000 n 
+0018965517 00000 n 
+0018965763 00000 n 
+0018966021 00000 n 
+0018966387 00000 n 
+0018966617 00000 n 
+0018966859 00000 n 
+0018967237 00000 n 
+0018967619 00000 n 
+0018967941 00000 n 
+0018968171 00000 n 
+0018968437 00000 n 
+0018968687 00000 n 
+0018968926 00000 n 
+0018969232 00000 n 
+0018969463 00000 n 
+0018969745 00000 n 
+0018969943 00000 n 
+0018970209 00000 n 
+0018970479 00000 n 
+0018970773 00000 n 
+0018971031 00000 n 
+0018971357 00000 n 
+0018971639 00000 n 
+0018971841 00000 n 
+0018972088 00000 n 
+0018972373 00000 n 
+0018972560 00000 n 
+0018972770 00000 n 
+0018972976 00000 n 
+0018973327 00000 n 
+0018973556 00000 n 
+0018973740 00000 n 
+0018974053 00000 n 
+0018974260 00000 n 
+0018974494 00000 n 
+0018974744 00000 n 
+0018974950 00000 n 
+0018975224 00000 n 
+0018975434 00000 n 
+0018975676 00000 n 
+0018975883 00000 n 
+0018976144 00000 n 
+0018976351 00000 n 
+0018976573 00000 n 
+0018976823 00000 n 
+0018977013 00000 n 
+0018977223 00000 n 
+0018977485 00000 n 
+0018977711 00000 n 
+0018977898 00000 n 
+0018978095 00000 n 
+0018978394 00000 n 
+0018978712 00000 n 
+0018978987 00000 n 
+0018979184 00000 n 
+0018979387 00000 n 
+0018979629 00000 n 
+0018979880 00000 n 
+0018980061 00000 n 
+0018980260 00000 n 
+0018980462 00000 n 
+0018980653 00000 n 
+0018980842 00000 n 
+0018981041 00000 n 
+0018981228 00000 n 
+0018981465 00000 n 
+0018981664 00000 n 
+0018981946 00000 n 
+0018982133 00000 n 
+0018982390 00000 n 
+0018982577 00000 n 
+0018982776 00000 n 
+0018982955 00000 n 
+0018983234 00000 n 
+0018983424 00000 n 
+0018983686 00000 n 
+0018984040 00000 n 
+0018984274 00000 n 
+0018984468 00000 n 
+0018984694 00000 n 
+0018984988 00000 n 
+0018985218 00000 n 
+0018985556 00000 n 
+0018985802 00000 n 
+0018986068 00000 n 
+0018986422 00000 n 
+0018986709 00000 n 
+0019003731 00000 n 
+0019003777 00000 n 
+0019004052 00000 n 
+0019004327 00000 n 
+0019017501 00000 n 
+0019017717 00000 n 
+0019019073 00000 n 
+0019019991 00000 n 
+0019031718 00000 n 
+0019031939 00000 n 
+0019033295 00000 n 
+0019034212 00000 n 
+0019045110 00000 n 
+0019045336 00000 n 
+0019046692 00000 n 
+0019047610 00000 n 
+0019054478 00000 n 
+0019054693 00000 n 
+0019056049 00000 n 
+0019056966 00000 n 
+0019061252 00000 n 
+0019061468 00000 n 
+0019061811 00000 n 
+0019062730 00000 n 
+0019064009 00000 n 
+0019064233 00000 n 
+0019064553 00000 n 
+0019065692 00000 n 
+0019075211 00000 n 
+0019075441 00000 n 
+0019076797 00000 n 
+0019077714 00000 n 
+0019078989 00000 n 
+0019079215 00000 n 
+0019079531 00000 n 
+0019080670 00000 n 
+0019085532 00000 n 
+0019085744 00000 n 
+0019087100 00000 n 
+0019088016 00000 n 
+0019090101 00000 n 
+0019090316 00000 n 
+0019090642 00000 n 
+0019091560 00000 n 
+0019095044 00000 n 
+0019095258 00000 n 
+0019096614 00000 n 
+0019097530 00000 n 
+0019101228 00000 n 
+0019101449 00000 n 
+0019101765 00000 n 
+0019102682 00000 n 
+0019106237 00000 n 
+0019106463 00000 n 
+0019106767 00000 n 
 trailer
 << /Size 6078
 /Root 2 0 R
 /Info 1 0 R
 >>
 startxref
-19107847
+19107683
 %%EOF
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index e2fc44c80e2..b457d599017 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -1495,9 +1495,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt>affixShutdownHook(Thread, int) - Static method in class org.apache.hadoop.hbase.util.ShutdownHookManager</dt>
 <dd>&nbsp;</dd>
-<dt>afterDecodingKeyValue(DataInputStream, ByteBuffer, HFileBlockDefaultDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>afterDecodingKeyValue(DataInputStream, ByteBuffer, HFileBlockDefaultDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
-<dt>afterEncodingKeyValue(ExtendedCell, DataOutputStream, HFileBlockDefaultEncodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>afterEncodingKeyValue(ExtendedCell, DataOutputStream, HFileBlockDefaultEncodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>
 <div class="block">Returns unencoded size added</div>
 </dd>
@@ -8652,11 +8652,11 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Compares the family and qualifier part of the cell</div>
 </dd>
-<dt>compareCommonFamilyPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>compareCommonFamilyPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
-<dt>compareCommonQualifierPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>compareCommonQualifierPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
-<dt>compareCommonRowPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>compareCommonRowPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>
 <div class="block">common prefixes</div>
 </dd>
@@ -9347,7 +9347,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt>conf - Variable in class org.apache.hadoop.hbase.regionserver.StoreFileReader</dt>
 <dd>&nbsp;</dd>
-<dt>conf - Variable in class org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher</dt>
+<dt>conf - Variable in class org.apache.hadoop.hbase.regionserver.StripeStoreFlusher</dt>
 <dd>&nbsp;</dd>
 <dt>conf - Variable in class org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL</dt>
 <dd>
@@ -12023,7 +12023,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Create a new Scan with a cursor.</div>
 </dd>
-<dt>createScanner(List&lt;KeyValueScanner&gt;, FlushLifeCycleTracker) - Method in class org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher</dt>
+<dt>createScanner(List&lt;KeyValueScanner&gt;, FlushLifeCycleTracker) - Method in class org.apache.hadoop.hbase.regionserver.StripeStoreFlusher</dt>
 <dd>
 <div class="block">Creates the scanner for flushing snapshot.</div>
 </dd>
@@ -12559,7 +12559,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Create a writer for writing new store files.</div>
 </dd>
-<dt>createWriter(MemStoreSnapshot, boolean, Consumer&lt;Path&gt;) - Method in class org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher</dt>
+<dt>createWriter(MemStoreSnapshot, boolean, Consumer&lt;Path&gt;) - Method in class org.apache.hadoop.hbase.regionserver.StripeStoreFlusher</dt>
 <dd>&nbsp;</dd>
 <dt>createWriterInstance(FileSystem, Path) - Method in class org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL</dt>
 <dd>&nbsp;</dd>
@@ -13189,7 +13189,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Decode an <code>int8</code> value.</div>
 </dd>
-<dt>decodeKeyValues(DataInputStream, HFileBlockDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>decodeKeyValues(DataInputStream, HFileBlockDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
 <dt>decodeKeyValues(DataInputStream, HFileBlockDecodingContext) - Method in interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder</dt>
 <dd>
@@ -16059,7 +16059,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Separator used to demarcate the encodedName in a region name in the new format.</div>
 </dd>
-<dt>encode(ExtendedCell, HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>encode(ExtendedCell, HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
 <dt>encode(ExtendedCell, HFileBlockEncodingContext, DataOutputStream) - Method in interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder</dt>
 <dd>
@@ -16467,7 +16467,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt>END_TIME_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.WALInputFormat</dt>
 <dd>&nbsp;</dd>
-<dt>endBlockEncoding(HFileBlockEncodingContext, DataOutputStream, byte[]) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>endBlockEncoding(HFileBlockEncodingContext, DataOutputStream, byte[]) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
 <dt>endBlockEncoding(HFileBlockEncodingContext, DataOutputStream, byte[]) - Method in interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder</dt>
 <dd>
@@ -16583,7 +16583,7 @@ loadScripts(document, 'script');</script>
 <div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
 <div class="block">Make sure that at least the specified number of region servers are running</div>
 </dd>
-<dt>ensureSpace(ByteBuffer, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>ensureSpace(ByteBuffer, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>
 <div class="block">Asserts that there is at least the given amount of unfilled space remaining in the given
  buffer.</div>
@@ -18673,7 +18673,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt>finalizeWriter(StoreFileWriter, long, MonitoredTask) - Method in class org.apache.hadoop.hbase.mob.DefaultMobStoreFlusher</dt>
 <dd>&nbsp;</dd>
-<dt>finalizeWriter(StoreFileWriter, long, MonitoredTask) - Method in class org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher</dt>
+<dt>finalizeWriter(StoreFileWriter, long, MonitoredTask) - Method in class org.apache.hadoop.hbase.regionserver.StripeStoreFlusher</dt>
 <dd>&nbsp;</dd>
 <dt>findArchivedLog(Path, Configuration) - Static method in class org.apache.hadoop.hbase.wal.AbstractFSWALProvider</dt>
 <dd>
@@ -52460,7 +52460,7 @@ service.</div>
 <dd>
 <div class="block">Performs compaction on a column family with the mob flag enabled.</div>
 </dd>
-<dt>performFlush(InternalScanner, CellSink, ThroughputController) - Method in class org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher</dt>
+<dt>performFlush(InternalScanner, CellSink, ThroughputController) - Method in class org.apache.hadoop.hbase.regionserver.StripeStoreFlusher</dt>
 <dd>
 <div class="block">Performs memstore flush, writing data from scanner into sink.</div>
 </dd>
@@ -59868,6 +59868,12 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt>RESTORE_DIRS_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.MultiTableSnapshotInputFormatImpl</dt>
 <dd>&nbsp;</dd>
+<dt>restoreBackupSystemTable(String) - Method in interface org.apache.hadoop.hbase.client.Admin</dt>
+<dd>&nbsp;</dd>
+<dt>restoreBackupSystemTable(String) - Method in interface org.apache.hadoop.hbase.client.AsyncAdmin</dt>
+<dd>&nbsp;</dd>
+<dt>restoreBackupSystemTable(RpcController, MasterProtos.RestoreBackupSystemTableRequest) - Method in class org.apache.hadoop.hbase.master.MasterRpcServices</dt>
+<dd>&nbsp;</dd>
 <dt>restoreClusterMetrics(ClusterMetrics) - Method in class org.apache.hadoop.hbase.HBaseCluster</dt>
 <dd>
 <div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
@@ -68008,7 +68014,7 @@ service.</div>
 &nbsp;</dd>
 <dt>START_TIME_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.WALInputFormat</dt>
 <dd>&nbsp;</dd>
-<dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
 <dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder</dt>
 <dd>&nbsp;</dd>
@@ -68898,7 +68904,7 @@ service.</div>
 </dd>
 <dt>store - Variable in class org.apache.hadoop.hbase.io.crypto.KeyStoreKeyProvider</dt>
 <dd>&nbsp;</dd>
-<dt>store - Variable in class org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher</dt>
+<dt>store - Variable in class org.apache.hadoop.hbase.regionserver.StripeStoreFlusher</dt>
 <dd>&nbsp;</dd>
 <dt>store - Variable in class org.apache.hadoop.hbase.regionserver.StoreScanner</dt>
 <dd>&nbsp;</dd>
diff --git a/apidocs/member-search-index.js b/apidocs/member-search-index.js
index a31e0bebf07..eb0cf2be038 100644
--- a/apidocs/member-search-index.js
+++ b/apidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.filter","c":"ParseConstants","l":"A"},{"p":"org.apache.hadoop.hbase.master","c":"RegionState.State","l":"ABNORMALLY_CLOSED"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"CoprocessorHost","l":"ABORT_ON_ERROR_KEY"},{"p":"org.apache.hadoop.hdfs","c":"DummyDFSOutputStream","l":"abort()"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abort(String)","u":"abort(java.lang.String)"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abo [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.filter","c":"ParseConstants","l":"A"},{"p":"org.apache.hadoop.hbase.master","c":"RegionState.State","l":"ABNORMALLY_CLOSED"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"CoprocessorHost","l":"ABORT_ON_ERROR_KEY"},{"p":"org.apache.hadoop.hdfs","c":"DummyDFSOutputStream","l":"abort()"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abort(String)","u":"abort(java.lang.String)"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abo [...]
\ No newline at end of file
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/Admin.html b/apidocs/src-html/org/apache/hadoop/hbase/client/Admin.html
index a7df31f612a..84f44be2468 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/Admin.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/Admin.html
@@ -2674,7 +2674,10 @@
 <span class="source-line-no">2661</span><span id="line-2661">   * Get the list of cached files</span>
 <span class="source-line-no">2662</span><span id="line-2662">   */</span>
 <span class="source-line-no">2663</span><span id="line-2663">  List&lt;String&gt; getCachedFilesList(ServerName serverName) throws IOException;</span>
-<span class="source-line-no">2664</span><span id="line-2664">}</span>
+<span class="source-line-no">2664</span><span id="line-2664"></span>
+<span class="source-line-no">2665</span><span id="line-2665">  @InterfaceAudience.Private</span>
+<span class="source-line-no">2666</span><span id="line-2666">  void restoreBackupSystemTable(String snapshotName) throws IOException;</span>
+<span class="source-line-no">2667</span><span id="line-2667">}</span>
 
 
 
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html b/apidocs/src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html
index 6d942a54d1b..2daf1f5e909 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/AsyncAdmin.html
@@ -1884,7 +1884,10 @@
 <span class="source-line-no">1871</span><span id="line-1871">   * Get the list of cached files</span>
 <span class="source-line-no">1872</span><span id="line-1872">   */</span>
 <span class="source-line-no">1873</span><span id="line-1873">  CompletableFuture&lt;List&lt;String&gt;&gt; getCachedFilesList(ServerName serverName);</span>
-<span class="source-line-no">1874</span><span id="line-1874">}</span>
+<span class="source-line-no">1874</span><span id="line-1874"></span>
+<span class="source-line-no">1875</span><span id="line-1875">  @InterfaceAudience.Private</span>
+<span class="source-line-no">1876</span><span id="line-1876">  CompletableFuture&lt;Void&gt; restoreBackupSystemTable(String snapshotName);</span>
+<span class="source-line-no">1877</span><span id="line-1877">}</span>
 
 
 
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html b/apidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
index 38e3ba49ff1..e48256b4f03 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
@@ -89,3608 +89,3627 @@
 <span class="source-line-no">076</span><span id="line-76">import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;</span>
 <span class="source-line-no">077</span><span id="line-77">import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;</span>
 <span class="source-line-no">078</span><span id="line-78">import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.NonceProcedureRunnable;</span>
-<span class="source-line-no">079</span><span id="line-79">import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;</span>
-<span class="source-line-no">080</span><span id="line-80">import org.apache.hadoop.hbase.master.replication.AbstractPeerNoLockProcedure;</span>
-<span class="source-line-no">081</span><span id="line-81">import org.apache.hadoop.hbase.mob.MobUtils;</span>
-<span class="source-line-no">082</span><span id="line-82">import org.apache.hadoop.hbase.namequeues.BalancerDecisionDetails;</span>
-<span class="source-line-no">083</span><span id="line-83">import org.apache.hadoop.hbase.namequeues.BalancerRejectionDetails;</span>
-<span class="source-line-no">084</span><span id="line-84">import org.apache.hadoop.hbase.namequeues.NamedQueueRecorder;</span>
-<span class="source-line-no">085</span><span id="line-85">import org.apache.hadoop.hbase.namequeues.request.NamedQueueGetRequest;</span>
-<span class="source-line-no">086</span><span id="line-86">import org.apache.hadoop.hbase.namequeues.response.NamedQueueGetResponse;</span>
-<span class="source-line-no">087</span><span id="line-87">import org.apache.hadoop.hbase.net.Address;</span>
-<span class="source-line-no">088</span><span id="line-88">import org.apache.hadoop.hbase.procedure.MasterProcedureManager;</span>
-<span class="source-line-no">089</span><span id="line-89">import org.apache.hadoop.hbase.procedure2.LockType;</span>
-<span class="source-line-no">090</span><span id="line-90">import org.apache.hadoop.hbase.procedure2.LockedResource;</span>
-<span class="source-line-no">091</span><span id="line-91">import org.apache.hadoop.hbase.procedure2.Procedure;</span>
-<span class="source-line-no">092</span><span id="line-92">import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;</span>
-<span class="source-line-no">093</span><span id="line-93">import org.apache.hadoop.hbase.procedure2.ProcedureUtil;</span>
-<span class="source-line-no">094</span><span id="line-94">import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;</span>
-<span class="source-line-no">095</span><span id="line-95">import org.apache.hadoop.hbase.quotas.MasterQuotaManager;</span>
-<span class="source-line-no">096</span><span id="line-96">import org.apache.hadoop.hbase.quotas.QuotaObserverChore;</span>
-<span class="source-line-no">097</span><span id="line-97">import org.apache.hadoop.hbase.quotas.QuotaUtil;</span>
-<span class="source-line-no">098</span><span id="line-98">import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;</span>
-<span class="source-line-no">099</span><span id="line-99">import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;</span>
-<span class="source-line-no">100</span><span id="line-100">import org.apache.hadoop.hbase.replication.ReplicationException;</span>
-<span class="source-line-no">101</span><span id="line-101">import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;</span>
-<span class="source-line-no">102</span><span id="line-102">import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;</span>
-<span class="source-line-no">103</span><span id="line-103">import org.apache.hadoop.hbase.rsgroup.RSGroupInfo;</span>
-<span class="source-line-no">104</span><span id="line-104">import org.apache.hadoop.hbase.rsgroup.RSGroupUtil;</span>
-<span class="source-line-no">105</span><span id="line-105">import org.apache.hadoop.hbase.security.Superusers;</span>
-<span class="source-line-no">106</span><span id="line-106">import org.apache.hadoop.hbase.security.User;</span>
-<span class="source-line-no">107</span><span id="line-107">import org.apache.hadoop.hbase.security.access.AccessChecker;</span>
-<span class="source-line-no">108</span><span id="line-108">import org.apache.hadoop.hbase.security.access.AccessChecker.InputUser;</span>
-<span class="source-line-no">109</span><span id="line-109">import org.apache.hadoop.hbase.security.access.AccessController;</span>
-<span class="source-line-no">110</span><span id="line-110">import org.apache.hadoop.hbase.security.access.Permission;</span>
-<span class="source-line-no">111</span><span id="line-111">import org.apache.hadoop.hbase.security.access.Permission.Action;</span>
-<span class="source-line-no">112</span><span id="line-112">import org.apache.hadoop.hbase.security.access.PermissionStorage;</span>
-<span class="source-line-no">113</span><span id="line-113">import org.apache.hadoop.hbase.security.access.ShadedAccessControlUtil;</span>
-<span class="source-line-no">114</span><span id="line-114">import org.apache.hadoop.hbase.security.access.UserPermission;</span>
-<span class="source-line-no">115</span><span id="line-115">import org.apache.hadoop.hbase.security.visibility.VisibilityController;</span>
-<span class="source-line-no">116</span><span id="line-116">import org.apache.hadoop.hbase.snapshot.ClientSnapshotDescriptionUtils;</span>
-<span class="source-line-no">117</span><span id="line-117">import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;</span>
-<span class="source-line-no">118</span><span id="line-118">import org.apache.hadoop.hbase.util.Bytes;</span>
-<span class="source-line-no">119</span><span id="line-119">import org.apache.hadoop.hbase.util.DNS;</span>
-<span class="source-line-no">120</span><span id="line-120">import org.apache.hadoop.hbase.util.DNS.ServerType;</span>
-<span class="source-line-no">121</span><span id="line-121">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
-<span class="source-line-no">122</span><span id="line-122">import org.apache.hadoop.hbase.util.ForeignExceptionUtil;</span>
-<span class="source-line-no">123</span><span id="line-123">import org.apache.hadoop.hbase.util.Pair;</span>
-<span class="source-line-no">124</span><span id="line-124">import org.apache.hadoop.hbase.zookeeper.ZKWatcher;</span>
-<span class="source-line-no">125</span><span id="line-125">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">126</span><span id="line-126">import org.slf4j.Logger;</span>
-<span class="source-line-no">127</span><span id="line-127">import org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">128</span><span id="line-128"></span>
-<span class="source-line-no">129</span><span id="line-129">import org.apache.hbase.thirdparty.com.google.common.collect.Sets;</span>
-<span class="source-line-no">130</span><span id="line-130">import org.apache.hbase.thirdparty.com.google.protobuf.ByteString;</span>
-<span class="source-line-no">131</span><span id="line-131">import org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor;</span>
-<span class="source-line-no">132</span><span id="line-132">import org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.ServiceDescriptor;</span>
-<span class="source-line-no">133</span><span id="line-133">import org.apache.hbase.thirdparty.com.google.protobuf.Message;</span>
-<span class="source-line-no">134</span><span id="line-134">import org.apache.hbase.thirdparty.com.google.protobuf.RpcController;</span>
-<span class="source-line-no">135</span><span id="line-135">import org.apache.hbase.thirdparty.com.google.protobuf.Service;</span>
-<span class="source-line-no">136</span><span id="line-136">import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException;</span>
-<span class="source-line-no">137</span><span id="line-137">import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;</span>
-<span class="source-line-no">138</span><span id="line-138"></span>
-<span class="source-line-no">139</span><span id="line-139">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
-<span class="source-line-no">140</span><span id="line-140">import org.apache.hadoop.hbase.shaded.protobuf.ResponseConverter;</span>
-<span class="source-line-no">141</span><span id="line-141">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos;</span>
-<span class="source-line-no">142</span><span id="line-142">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.AccessControlService;</span>
-<span class="source-line-no">143</span><span id="line-143">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.GetUserPermissionsRequest;</span>
-<span class="source-line-no">144</span><span id="line-144">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.GetUserPermissionsResponse;</span>
-<span class="source-line-no">145</span><span id="line-145">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.GrantRequest;</span>
-<span class="source-line-no">146</span><span id="line-146">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.GrantResponse;</span>
-<span class="source-line-no">147</span><span id="line-147">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.HasUserPermissionsRequest;</span>
-<span class="source-line-no">148</span><span id="line-148">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.HasUserPermissionsResponse;</span>
-<span class="source-line-no">149</span><span id="line-149">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.Permission.Type;</span>
-<span class="source-line-no">150</span><span id="line-150">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.RevokeRequest;</span>
-<span class="source-line-no">151</span><span id="line-151">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.RevokeResponse;</span>
-<span class="source-line-no">152</span><span id="line-152">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService;</span>
-<span class="source-line-no">153</span><span id="line-153">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest;</span>
-<span class="source-line-no">154</span><span id="line-154">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse;</span>
-<span class="source-line-no">155</span><span id="line-155">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearRegionBlockCacheRequest;</span>
-<span class="source-line-no">156</span><span id="line-156">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearRegionBlockCacheResponse;</span>
-<span class="source-line-no">157</span><span id="line-157">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionRequest;</span>
-<span class="source-line-no">158</span><span id="line-158">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionResponse;</span>
-<span class="source-line-no">159</span><span id="line-159">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest;</span>
-<span class="source-line-no">160</span><span id="line-160">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse;</span>
-<span class="source-line-no">161</span><span id="line-161">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactionSwitchRequest;</span>
-<span class="source-line-no">162</span><span id="line-162">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactionSwitchResponse;</span>
-<span class="source-line-no">163</span><span id="line-163">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresRequest;</span>
-<span class="source-line-no">164</span><span id="line-164">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresResponse;</span>
-<span class="source-line-no">165</span><span id="line-165">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionRequest;</span>
-<span class="source-line-no">166</span><span id="line-166">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionResponse;</span>
-<span class="source-line-no">167</span><span id="line-167">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetCachedFilesListRequest;</span>
-<span class="source-line-no">168</span><span id="line-168">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetCachedFilesListResponse;</span>
-<span class="source-line-no">169</span><span id="line-169">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionRequest;</span>
-<span class="source-line-no">170</span><span id="line-170">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionResponse;</span>
-<span class="source-line-no">171</span><span id="line-171">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoRequest;</span>
-<span class="source-line-no">172</span><span id="line-172">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse;</span>
-<span class="source-line-no">173</span><span id="line-173">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadRequest;</span>
-<span class="source-line-no">174</span><span id="line-174">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadResponse;</span>
-<span class="source-line-no">175</span><span id="line-175">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoRequest;</span>
-<span class="source-line-no">176</span><span id="line-176">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoResponse;</span>
-<span class="source-line-no">177</span><span id="line-177">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileRequest;</span>
-<span class="source-line-no">178</span><span id="line-178">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileResponse;</span>
-<span class="source-line-no">179</span><span id="line-179">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest;</span>
-<span class="source-line-no">180</span><span id="line-180">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionResponse;</span>
-<span class="source-line-no">181</span><span id="line-181">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryRequest;</span>
-<span class="source-line-no">182</span><span id="line-182">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryResponse;</span>
-<span class="source-line-no">183</span><span id="line-183">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterRequest;</span>
-<span class="source-line-no">184</span><span id="line-184">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterResponse;</span>
-<span class="source-line-no">185</span><span id="line-185">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerRequest;</span>
-<span class="source-line-no">186</span><span id="line-186">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerResponse;</span>
-<span class="source-line-no">187</span><span id="line-187">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest;</span>
-<span class="source-line-no">188</span><span id="line-188">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesResponse;</span>
-<span class="source-line-no">189</span><span id="line-189">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionRequest;</span>
-<span class="source-line-no">190</span><span id="line-190">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionResponse;</span>
-<span class="source-line-no">191</span><span id="line-191">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos;</span>
-<span class="source-line-no">192</span><span id="line-192">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos;</span>
-<span class="source-line-no">193</span><span id="line-193">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds;</span>
-<span class="source-line-no">194</span><span id="line-194">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;</span>
-<span class="source-line-no">195</span><span id="line-195">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.NameStringPair;</span>
-<span class="source-line-no">196</span><span id="line-196">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ProcedureDescription;</span>
-<span class="source-line-no">197</span><span id="line-197">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier;</span>
-<span class="source-line-no">198</span><span id="line-198">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;</span>
-<span class="source-line-no">199</span><span id="line-199">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.VersionInfo;</span>
-<span class="source-line-no">200</span><span id="line-200">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockHeartbeatRequest;</span>
-<span class="source-line-no">201</span><span id="line-201">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockHeartbeatResponse;</span>
-<span class="source-line-no">202</span><span id="line-202">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockRequest;</span>
-<span class="source-line-no">203</span><span id="line-203">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockResponse;</span>
-<span class="source-line-no">204</span><span id="line-204">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService;</span>
-<span class="source-line-no">205</span><span id="line-205">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos;</span>
-<span class="source-line-no">206</span><span id="line-206">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureRequest;</span>
-<span class="source-line-no">207</span><span id="line-207">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureResponse;</span>
-<span class="source-line-no">208</span><span id="line-208">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnRequest;</span>
-<span class="source-line-no">209</span><span id="line-209">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnResponse;</span>
-<span class="source-line-no">210</span><span id="line-210">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionRequest;</span>
-<span class="source-line-no">211</span><span id="line-211">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionResponse;</span>
-<span class="source-line-no">212</span><span id="line-212">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ClearDeadServersRequest;</span>
-<span class="source-line-no">213</span><span id="line-213">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ClearDeadServersResponse;</span>
-<span class="source-line-no">214</span><span id="line-214">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceRequest;</span>
-<span class="source-line-no">215</span><span id="line-215">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceResponse;</span>
-<span class="source-line-no">216</span><span id="line-216">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableRequest;</span>
-<span class="source-line-no">217</span><span id="line-217">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableResponse;</span>
-<span class="source-line-no">218</span><span id="line-218">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DecommissionRegionServersRequest;</span>
-<span class="source-line-no">219</span><span id="line-219">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DecommissionRegionServersResponse;</span>
-<span class="source-line-no">220</span><span id="line-220">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnRequest;</span>
-<span class="source-line-no">221</span><span id="line-221">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnResponse;</span>
-<span class="source-line-no">222</span><span id="line-222">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceRequest;</span>
-<span class="source-line-no">223</span><span id="line-223">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceResponse;</span>
-<span class="source-line-no">224</span><span id="line-224">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotRequest;</span>
-<span class="source-line-no">225</span><span id="line-225">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotResponse;</span>
-<span class="source-line-no">226</span><span id="line-226">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableRequest;</span>
-<span class="source-line-no">227</span><span id="line-227">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableResponse;</span>
-<span class="source-line-no">228</span><span id="line-228">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableRequest;</span>
-<span class="source-line-no">229</span><span id="line-229">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableResponse;</span>
-<span class="source-line-no">230</span><span id="line-230">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorRequest;</span>
-<span class="source-line-no">231</span><span id="line-231">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorResponse;</span>
-<span class="source-line-no">232</span><span id="line-232">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableRequest;</span>
-<span class="source-line-no">233</span><span id="line-233">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableResponse;</span>
-<span class="source-line-no">234</span><span id="line-234">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureRequest;</span>
-<span class="source-line-no">235</span><span id="line-235">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureResponse;</span>
-<span class="source-line-no">236</span><span id="line-236">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FixMetaRequest;</span>
-<span class="source-line-no">237</span><span id="line-237">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FixMetaResponse;</span>
-<span class="source-line-no">238</span><span id="line-238">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FlushMasterStoreRequest;</span>
-<span class="source-line-no">239</span><span id="line-239">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FlushMasterStoreResponse;</span>
-<span class="source-line-no">240</span><span id="line-240">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FlushTableRequest;</span>
-<span class="source-line-no">241</span><span id="line-241">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FlushTableResponse;</span>
-<span class="source-line-no">242</span><span id="line-242">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusRequest;</span>
-<span class="source-line-no">243</span><span id="line-243">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusResponse;</span>
-<span class="source-line-no">244</span><span id="line-244">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsRequest;</span>
-<span class="source-line-no">245</span><span id="line-245">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsResponse;</span>
-<span class="source-line-no">246</span><span id="line-246">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetLocksRequest;</span>
-<span class="source-line-no">247</span><span id="line-247">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetLocksResponse;</span>
-<span class="source-line-no">248</span><span id="line-248">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorRequest;</span>
-<span class="source-line-no">249</span><span id="line-249">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorResponse;</span>
-<span class="source-line-no">250</span><span id="line-250">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultRequest;</span>
-<span class="source-line-no">251</span><span id="line-251">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultResponse;</span>
-<span class="source-line-no">252</span><span id="line-252">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProceduresRequest;</span>
-<span class="source-line-no">253</span><span id="line-253">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProceduresResponse;</span>
-<span class="source-line-no">254</span><span id="line-254">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusRequest;</span>
-<span class="source-line-no">255</span><span id="line-255">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusResponse;</span>
-<span class="source-line-no">256</span><span id="line-256">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsRequest;</span>
-<span class="source-line-no">257</span><span id="line-257">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsResponse;</span>
-<span class="source-line-no">258</span><span id="line-258">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesRequest;</span>
-<span class="source-line-no">259</span><span id="line-259">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesResponse;</span>
-<span class="source-line-no">260</span><span id="line-260">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableStateRequest;</span>
-<span class="source-line-no">261</span><span id="line-261">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableStateResponse;</span>
-<span class="source-line-no">262</span><span id="line-262">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.HbckService;</span>
-<span class="source-line-no">263</span><span id="line-263">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledRequest;</span>
-<span class="source-line-no">264</span><span id="line-264">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledResponse;</span>
-<span class="source-line-no">265</span><span id="line-265">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledRequest;</span>
-<span class="source-line-no">266</span><span id="line-266">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledResponse;</span>
-<span class="source-line-no">267</span><span id="line-267">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledRequest;</span>
-<span class="source-line-no">268</span><span id="line-268">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledResponse;</span>
-<span class="source-line-no">269</span><span id="line-269">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeRequest;</span>
-<span class="source-line-no">270</span><span id="line-270">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeResponse;</span>
-<span class="source-line-no">271</span><span id="line-271">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsMasterRunningRequest;</span>
-<span class="source-line-no">272</span><span id="line-272">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsMasterRunningResponse;</span>
-<span class="source-line-no">273</span><span id="line-273">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledRequest;</span>
-<span class="source-line-no">274</span><span id="line-274">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledResponse;</span>
-<span class="source-line-no">275</span><span id="line-275">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneRequest;</span>
-<span class="source-line-no">276</span><span id="line-276">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneResponse;</span>
-<span class="source-line-no">277</span><span id="line-277">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotCleanupEnabledRequest;</span>
-<span class="source-line-no">278</span><span id="line-278">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotCleanupEnabledResponse;</span>
-<span class="source-line-no">279</span><span id="line-279">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneRequest;</span>
-<span class="source-line-no">280</span><span id="line-280">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneResponse;</span>
-<span class="source-line-no">281</span><span id="line-281">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledRequest;</span>
-<span class="source-line-no">282</span><span id="line-282">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledResponse;</span>
-<span class="source-line-no">283</span><span id="line-283">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDecommissionedRegionServersRequest;</span>
-<span class="source-line-no">284</span><span id="line-284">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDecommissionedRegionServersResponse;</span>
-<span class="source-line-no">285</span><span id="line-285">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsRequest;</span>
-<span class="source-line-no">286</span><span id="line-286">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsResponse;</span>
-<span class="source-line-no">287</span><span id="line-287">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespacesRequest;</span>
-<span class="source-line-no">288</span><span id="line-288">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespacesResponse;</span>
-<span class="source-line-no">289</span><span id="line-289">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceRequest;</span>
-<span class="source-line-no">290</span><span id="line-290">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceResponse;</span>
-<span class="source-line-no">291</span><span id="line-291">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByStateRequest;</span>
-<span class="source-line-no">292</span><span id="line-292">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByStateResponse;</span>
-<span class="source-line-no">293</span><span id="line-293">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByNamespaceRequest;</span>
-<span class="source-line-no">294</span><span id="line-294">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByNamespaceResponse;</span>
-<span class="source-line-no">295</span><span id="line-295">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByStateRequest;</span>
-<span class="source-line-no">296</span><span id="line-296">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByStateResponse;</span>
-<span class="source-line-no">297</span><span id="line-297">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampForRegionRequest;</span>
-<span class="source-line-no">298</span><span id="line-298">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampRequest;</span>
-<span class="source-line-no">299</span><span id="line-299">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampResponse;</span>
-<span class="source-line-no">300</span><span id="line-300">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService;</span>
-<span class="source-line-no">301</span><span id="line-301">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsRequest;</span>
-<span class="source-line-no">302</span><span id="line-302">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsResponse;</span>
-<span class="source-line-no">303</span><span id="line-303">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnRequest;</span>
-<span class="source-line-no">304</span><span id="line-304">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnResponse;</span>
-<span class="source-line-no">305</span><span id="line-305">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnStoreFileTrackerRequest;</span>
-<span class="source-line-no">306</span><span id="line-306">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnStoreFileTrackerResponse;</span>
-<span class="source-line-no">307</span><span id="line-307">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceRequest;</span>
-<span class="source-line-no">308</span><span id="line-308">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceResponse;</span>
-<span class="source-line-no">309</span><span id="line-309">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableRequest;</span>
-<span class="source-line-no">310</span><span id="line-310">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableResponse;</span>
-<span class="source-line-no">311</span><span id="line-311">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableStoreFileTrackerRequest;</span>
-<span class="source-line-no">312</span><span id="line-312">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableStoreFileTrackerResponse;</span>
-<span class="source-line-no">313</span><span id="line-313">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionRequest;</span>
-<span class="source-line-no">314</span><span id="line-314">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionResponse;</span>
-<span class="source-line-no">315</span><span id="line-315">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeRequest;</span>
-<span class="source-line-no">316</span><span id="line-316">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeResponse;</span>
-<span class="source-line-no">317</span><span id="line-317">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionRequest;</span>
-<span class="source-line-no">318</span><span id="line-318">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionResponse;</span>
-<span class="source-line-no">319</span><span id="line-319">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RecommissionRegionServerRequest;</span>
-<span class="source-line-no">320</span><span id="line-320">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RecommissionRegionServerResponse;</span>
-<span class="source-line-no">321</span><span id="line-321">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RegionSpecifierAndState;</span>
-<span class="source-line-no">322</span><span id="line-322">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotRequest;</span>
-<span class="source-line-no">323</span><span id="line-323">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotResponse;</span>
-<span class="source-line-no">324</span><span id="line-324">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RollAllWALWritersRequest;</span>
-<span class="source-line-no">325</span><span id="line-325">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RollAllWALWritersResponse;</span>
-<span class="source-line-no">326</span><span id="line-326">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanRequest;</span>
-<span class="source-line-no">327</span><span id="line-327">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanResponse;</span>
-<span class="source-line-no">328</span><span id="line-328">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreRequest;</span>
-<span class="source-line-no">329</span><span id="line-329">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreResponse;</span>
-<span class="source-line-no">330</span><span id="line-330">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunHbckChoreRequest;</span>
-<span class="source-line-no">331</span><span id="line-331">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunHbckChoreResponse;</span>
-<span class="source-line-no">332</span><span id="line-332">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesRequest;</span>
-<span class="source-line-no">333</span><span id="line-333">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesResponse;</span>
-<span class="source-line-no">334</span><span id="line-334">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningRequest;</span>
-<span class="source-line-no">335</span><span id="line-335">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningResponse;</span>
-<span class="source-line-no">336</span><span id="line-336">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningRequest;</span>
-<span class="source-line-no">337</span><span id="line-337">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningResponse;</span>
-<span class="source-line-no">338</span><span id="line-338">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningRequest;</span>
-<span class="source-line-no">339</span><span id="line-339">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningResponse;</span>
-<span class="source-line-no">340</span><span id="line-340">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaRequest;</span>
-<span class="source-line-no">341</span><span id="line-341">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaResponse;</span>
-<span class="source-line-no">342</span><span id="line-342">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetRegionStateInMetaRequest;</span>
-<span class="source-line-no">343</span><span id="line-343">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetRegionStateInMetaResponse;</span>
-<span class="source-line-no">344</span><span id="line-344">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSnapshotCleanupRequest;</span>
-<span class="source-line-no">345</span><span id="line-345">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSnapshotCleanupResponse;</span>
-<span class="source-line-no">346</span><span id="line-346">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledRequest;</span>
-<span class="source-line-no">347</span><span id="line-347">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledResponse;</span>
-<span class="source-line-no">348</span><span id="line-348">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetTableStateInMetaRequest;</span>
-<span class="source-line-no">349</span><span id="line-349">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownRequest;</span>
-<span class="source-line-no">350</span><span id="line-350">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownResponse;</span>
-<span class="source-line-no">351</span><span id="line-351">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotRequest;</span>
-<span class="source-line-no">352</span><span id="line-352">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotResponse;</span>
-<span class="source-line-no">353</span><span id="line-353">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionRequest;</span>
-<span class="source-line-no">354</span><span id="line-354">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionResponse;</span>
-<span class="source-line-no">355</span><span id="line-355">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterRequest;</span>
-<span class="source-line-no">356</span><span id="line-356">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterResponse;</span>
-<span class="source-line-no">357</span><span id="line-357">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SwitchExceedThrottleQuotaRequest;</span>
-<span class="source-line-no">358</span><span id="line-358">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SwitchExceedThrottleQuotaResponse;</span>
-<span class="source-line-no">359</span><span id="line-359">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SwitchRpcThrottleRequest;</span>
-<span class="source-line-no">360</span><span id="line-360">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SwitchRpcThrottleResponse;</span>
-<span class="source-line-no">361</span><span id="line-361">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableRequest;</span>
-<span class="source-line-no">362</span><span id="line-362">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableResponse;</span>
-<span class="source-line-no">363</span><span id="line-363">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionRequest;</span>
-<span class="source-line-no">364</span><span id="line-364">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionResponse;</span>
-<span class="source-line-no">365</span><span id="line-365">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetQuotaStatesRequest;</span>
-<span class="source-line-no">366</span><span id="line-366">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetQuotaStatesResponse;</span>
-<span class="source-line-no">367</span><span id="line-367">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetQuotaStatesResponse.NamespaceQuotaSnapshot;</span>
-<span class="source-line-no">368</span><span id="line-368">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetQuotaStatesResponse.TableQuotaSnapshot;</span>
-<span class="source-line-no">369</span><span id="line-369">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaRegionSizesRequest;</span>
-<span class="source-line-no">370</span><span id="line-370">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaRegionSizesResponse;</span>
-<span class="source-line-no">371</span><span id="line-371">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaRegionSizesResponse.RegionSizes;</span>
-<span class="source-line-no">372</span><span id="line-372">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsRequest;</span>
-<span class="source-line-no">373</span><span id="line-373">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsResponse;</span>
-<span class="source-line-no">374</span><span id="line-374">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.AddRSGroupRequest;</span>
-<span class="source-line-no">375</span><span id="line-375">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.AddRSGroupResponse;</span>
-<span class="source-line-no">376</span><span id="line-376">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.BalanceRSGroupRequest;</span>
-<span class="source-line-no">377</span><span id="line-377">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.BalanceRSGroupResponse;</span>
-<span class="source-line-no">378</span><span id="line-378">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetConfiguredNamespacesAndTablesInRSGroupRequest;</span>
-<span class="source-line-no">379</span><span id="line-379">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetConfiguredNamespacesAndTablesInRSGroupResponse;</span>
-<span class="source-line-no">380</span><span id="line-380">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoOfServerRequest;</span>
-<span class="source-line-no">381</span><span id="line-381">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoOfServerResponse;</span>
-<span class="source-line-no">382</span><span id="line-382">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoOfTableRequest;</span>
-<span class="source-line-no">383</span><span id="line-383">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoOfTableResponse;</span>
-<span class="source-line-no">384</span><span id="line-384">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoRequest;</span>
-<span class="source-line-no">385</span><span id="line-385">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoResponse;</span>
-<span class="source-line-no">386</span><span id="line-386">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.ListRSGroupInfosRequest;</span>
-<span class="source-line-no">387</span><span id="line-387">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.ListRSGroupInfosResponse;</span>
-<span class="source-line-no">388</span><span id="line-388">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.ListTablesInRSGroupRequest;</span>
-<span class="source-line-no">389</span><span id="line-389">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.ListTablesInRSGroupResponse;</span>
-<span class="source-line-no">390</span><span id="line-390">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.MoveServersRequest;</span>
-<span class="source-line-no">391</span><span id="line-391">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.MoveServersResponse;</span>
-<span class="source-line-no">392</span><span id="line-392">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RemoveRSGroupRequest;</span>
-<span class="source-line-no">393</span><span id="line-393">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RemoveRSGroupResponse;</span>
-<span class="source-line-no">394</span><span id="line-394">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RemoveServersRequest;</span>
-<span class="source-line-no">395</span><span id="line-395">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RemoveServersResponse;</span>
-<span class="source-line-no">396</span><span id="line-396">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RenameRSGroupRequest;</span>
-<span class="source-line-no">397</span><span id="line-397">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RenameRSGroupResponse;</span>
-<span class="source-line-no">398</span><span id="line-398">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.UpdateRSGroupConfigRequest;</span>
-<span class="source-line-no">399</span><span id="line-399">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.UpdateRSGroupConfigResponse;</span>
-<span class="source-line-no">400</span><span id="line-400">import org.apache.hadoop.hbase.shaded.protobuf.generated.RecentLogs;</span>
-<span class="source-line-no">401</span><span id="line-401">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos;</span>
-<span class="source-line-no">402</span><span id="line-402">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.FileArchiveNotificationRequest;</span>
-<span class="source-line-no">403</span><span id="line-403">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.FileArchiveNotificationResponse;</span>
-<span class="source-line-no">404</span><span id="line-404">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLastFlushedSequenceIdRequest;</span>
-<span class="source-line-no">405</span><span id="line-405">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLastFlushedSequenceIdResponse;</span>
-<span class="source-line-no">406</span><span id="line-406">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLiveRegionServersRequest;</span>
-<span class="source-line-no">407</span><span id="line-407">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLiveRegionServersResponse;</span>
-<span class="source-line-no">408</span><span id="line-408">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerReportRequest;</span>
-<span class="source-line-no">409</span><span id="line-409">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerReportResponse;</span>
-<span class="source-line-no">410</span><span id="line-410">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest;</span>
-<span class="source-line-no">411</span><span id="line-411">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse;</span>
-<span class="source-line-no">412</span><span id="line-412">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService;</span>
-<span class="source-line-no">413</span><span id="line-413">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUse;</span>
-<span class="source-line-no">414</span><span id="line-414">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUseReportRequest;</span>
-<span class="source-line-no">415</span><span id="line-415">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUseReportResponse;</span>
-<span class="source-line-no">416</span><span id="line-416">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RemoteProcedureResult;</span>
-<span class="source-line-no">417</span><span id="line-417">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneRequest;</span>
-<span class="source-line-no">418</span><span id="line-418">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneResponse;</span>
-<span class="source-line-no">419</span><span id="line-419">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRSFatalErrorRequest;</span>
-<span class="source-line-no">420</span><span id="line-420">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRSFatalErrorResponse;</span>
-<span class="source-line-no">421</span><span id="line-421">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest;</span>
-<span class="source-line-no">422</span><span id="line-422">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse;</span>
-<span class="source-line-no">423</span><span id="line-423">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegistryProtos.ClientMetaService;</span>
-<span class="source-line-no">424</span><span id="line-424">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerRequest;</span>
-<span class="source-line-no">425</span><span id="line-425">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerResponse;</span>
-<span class="source-line-no">426</span><span id="line-426">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerRequest;</span>
-<span class="source-line-no">427</span><span id="line-427">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerResponse;</span>
-<span class="source-line-no">428</span><span id="line-428">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerRequest;</span>
-<span class="source-line-no">429</span><span id="line-429">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerResponse;</span>
-<span class="source-line-no">430</span><span id="line-430">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigRequest;</span>
-<span class="source-line-no">431</span><span id="line-431">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigResponse;</span>
-<span class="source-line-no">432</span><span id="line-432">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerModificationProceduresRequest;</span>
-<span class="source-line-no">433</span><span id="line-433">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerModificationProceduresResponse;</span>
-<span class="source-line-no">434</span><span id="line-434">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerStateRequest;</span>
-<span class="source-line-no">435</span><span id="line-435">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerStateResponse;</span>
-<span class="source-line-no">436</span><span id="line-436">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.IsReplicationPeerModificationEnabledRequest;</span>
-<span class="source-line-no">437</span><span id="line-437">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.IsReplicationPeerModificationEnabledResponse;</span>
-<span class="source-line-no">438</span><span id="line-438">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersRequest;</span>
-<span class="source-line-no">439</span><span id="line-439">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersResponse;</span>
-<span class="source-line-no">440</span><span id="line-440">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerRequest;</span>
-<span class="source-line-no">441</span><span id="line-441">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerResponse;</span>
-<span class="source-line-no">442</span><span id="line-442">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationPeerModificationSwitchRequest;</span>
-<span class="source-line-no">443</span><span id="line-443">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationPeerModificationSwitchResponse;</span>
-<span class="source-line-no">444</span><span id="line-444">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationState;</span>
-<span class="source-line-no">445</span><span id="line-445">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.TransitReplicationPeerSyncReplicationStateRequest;</span>
-<span class="source-line-no">446</span><span id="line-446">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.TransitReplicationPeerSyncReplicationStateResponse;</span>
-<span class="source-line-no">447</span><span id="line-447">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigRequest;</span>
-<span class="source-line-no">448</span><span id="line-448">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigResponse;</span>
-<span class="source-line-no">449</span><span id="line-449">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;</span>
-<span class="source-line-no">450</span><span id="line-450">import org.apache.hadoop.hbase.shaded.protobuf.generated.VisibilityLabelsProtos.VisibilityLabelsService;</span>
-<span class="source-line-no">451</span><span id="line-451"></span>
-<span class="source-line-no">452</span><span id="line-452">/**</span>
-<span class="source-line-no">453</span><span id="line-453"> * Implements the master RPC services.</span>
-<span class="source-line-no">454</span><span id="line-454"> */</span>
-<span class="source-line-no">455</span><span id="line-455">@InterfaceAudience.Private</span>
-<span class="source-line-no">456</span><span id="line-456">public class MasterRpcServices extends HBaseRpcServicesBase&lt;HMaster&gt;</span>
-<span class="source-line-no">457</span><span id="line-457">  implements MasterService.BlockingInterface, RegionServerStatusService.BlockingInterface,</span>
-<span class="source-line-no">458</span><span id="line-458">  LockService.BlockingInterface, HbckService.BlockingInterface {</span>
-<span class="source-line-no">459</span><span id="line-459"></span>
-<span class="source-line-no">460</span><span id="line-460">  private static final Logger LOG = LoggerFactory.getLogger(MasterRpcServices.class.getName());</span>
-<span class="source-line-no">461</span><span id="line-461">  private static final Logger AUDITLOG =</span>
-<span class="source-line-no">462</span><span id="line-462">    LoggerFactory.getLogger("SecurityLogger." + MasterRpcServices.class.getName());</span>
-<span class="source-line-no">463</span><span id="line-463"></span>
-<span class="source-line-no">464</span><span id="line-464">  /** RPC scheduler to use for the master. */</span>
-<span class="source-line-no">465</span><span id="line-465">  public static final String MASTER_RPC_SCHEDULER_FACTORY_CLASS =</span>
-<span class="source-line-no">466</span><span id="line-466">    "hbase.master.rpc.scheduler.factory.class";</span>
-<span class="source-line-no">467</span><span id="line-467"></span>
-<span class="source-line-no">468</span><span id="line-468">  /**</span>
-<span class="source-line-no">469</span><span id="line-469">   * @return Subset of configuration to pass initializing regionservers: e.g. the filesystem to use</span>
-<span class="source-line-no">470</span><span id="line-470">   *         and root directory to use.</span>
-<span class="source-line-no">471</span><span id="line-471">   */</span>
-<span class="source-line-no">472</span><span id="line-472">  private RegionServerStartupResponse.Builder createConfigurationSubset() {</span>
-<span class="source-line-no">473</span><span id="line-473">    RegionServerStartupResponse.Builder resp =</span>
-<span class="source-line-no">474</span><span id="line-474">      addConfig(RegionServerStartupResponse.newBuilder(), HConstants.HBASE_DIR);</span>
-<span class="source-line-no">475</span><span id="line-475">    resp = addConfig(resp, "fs.defaultFS");</span>
-<span class="source-line-no">476</span><span id="line-476">    return addConfig(resp, "hbase.master.info.port");</span>
-<span class="source-line-no">477</span><span id="line-477">  }</span>
-<span class="source-line-no">478</span><span id="line-478"></span>
-<span class="source-line-no">479</span><span id="line-479">  private RegionServerStartupResponse.Builder</span>
-<span class="source-line-no">480</span><span id="line-480">    addConfig(final RegionServerStartupResponse.Builder resp, final String key) {</span>
-<span class="source-line-no">481</span><span id="line-481">    NameStringPair.Builder entry =</span>
-<span class="source-line-no">482</span><span id="line-482">      NameStringPair.newBuilder().setName(key).setValue(server.getConfiguration().get(key));</span>
-<span class="source-line-no">483</span><span id="line-483">    resp.addMapEntries(entry.build());</span>
-<span class="source-line-no">484</span><span id="line-484">    return resp;</span>
-<span class="source-line-no">485</span><span id="line-485">  }</span>
-<span class="source-line-no">486</span><span id="line-486"></span>
-<span class="source-line-no">487</span><span id="line-487">  public MasterRpcServices(HMaster m) throws IOException {</span>
-<span class="source-line-no">488</span><span id="line-488">    super(m, m.getProcessName());</span>
-<span class="source-line-no">489</span><span id="line-489">  }</span>
-<span class="source-line-no">490</span><span id="line-490"></span>
-<span class="source-line-no">491</span><span id="line-491">  @Override</span>
-<span class="source-line-no">492</span><span id="line-492">  protected boolean defaultReservoirEnabled() {</span>
-<span class="source-line-no">493</span><span id="line-493">    return false;</span>
-<span class="source-line-no">494</span><span id="line-494">  }</span>
-<span class="source-line-no">495</span><span id="line-495"></span>
-<span class="source-line-no">496</span><span id="line-496">  @Override</span>
-<span class="source-line-no">497</span><span id="line-497">  protected ServerType getDNSServerType() {</span>
-<span class="source-line-no">498</span><span id="line-498">    return DNS.ServerType.MASTER;</span>
-<span class="source-line-no">499</span><span id="line-499">  }</span>
-<span class="source-line-no">500</span><span id="line-500"></span>
-<span class="source-line-no">501</span><span id="line-501">  @Override</span>
-<span class="source-line-no">502</span><span id="line-502">  protected String getHostname(Configuration conf, String defaultHostname) {</span>
-<span class="source-line-no">503</span><span id="line-503">    return conf.get("hbase.master.ipc.address", defaultHostname);</span>
-<span class="source-line-no">504</span><span id="line-504">  }</span>
-<span class="source-line-no">505</span><span id="line-505"></span>
-<span class="source-line-no">506</span><span id="line-506">  @Override</span>
-<span class="source-line-no">507</span><span id="line-507">  protected String getPortConfigName() {</span>
-<span class="source-line-no">508</span><span id="line-508">    return HConstants.MASTER_PORT;</span>
-<span class="source-line-no">509</span><span id="line-509">  }</span>
-<span class="source-line-no">510</span><span id="line-510"></span>
-<span class="source-line-no">511</span><span id="line-511">  @Override</span>
-<span class="source-line-no">512</span><span id="line-512">  protected int getDefaultPort() {</span>
-<span class="source-line-no">513</span><span id="line-513">    return HConstants.DEFAULT_MASTER_PORT;</span>
-<span class="source-line-no">514</span><span id="line-514">  }</span>
-<span class="source-line-no">515</span><span id="line-515"></span>
-<span class="source-line-no">516</span><span id="line-516">  @Override</span>
-<span class="source-line-no">517</span><span id="line-517">  protected Class&lt;?&gt; getRpcSchedulerFactoryClass(Configuration conf) {</span>
-<span class="source-line-no">518</span><span id="line-518">    return conf.getClass(MASTER_RPC_SCHEDULER_FACTORY_CLASS, SimpleRpcSchedulerFactory.class);</span>
-<span class="source-line-no">519</span><span id="line-519">  }</span>
-<span class="source-line-no">520</span><span id="line-520"></span>
-<span class="source-line-no">521</span><span id="line-521">  @Override</span>
-<span class="source-line-no">522</span><span id="line-522">  protected PriorityFunction createPriority() {</span>
-<span class="source-line-no">523</span><span id="line-523">    return new MasterAnnotationReadingPriorityFunction(this);</span>
-<span class="source-line-no">524</span><span id="line-524">  }</span>
-<span class="source-line-no">525</span><span id="line-525"></span>
-<span class="source-line-no">526</span><span id="line-526">  /**</span>
-<span class="source-line-no">527</span><span id="line-527">   * Checks for the following pre-checks in order:</span>
-<span class="source-line-no">528</span><span id="line-528">   * &lt;ol&gt;</span>
-<span class="source-line-no">529</span><span id="line-529">   * &lt;li&gt;Master is initialized&lt;/li&gt;</span>
-<span class="source-line-no">530</span><span id="line-530">   * &lt;li&gt;Rpc caller has admin permissions&lt;/li&gt;</span>
-<span class="source-line-no">531</span><span id="line-531">   * &lt;/ol&gt;</span>
-<span class="source-line-no">532</span><span id="line-532">   * @param requestName name of rpc request. Used in reporting failures to provide context.</span>
-<span class="source-line-no">533</span><span id="line-533">   * @throws ServiceException If any of the above listed pre-check fails.</span>
-<span class="source-line-no">534</span><span id="line-534">   */</span>
-<span class="source-line-no">535</span><span id="line-535">  private void rpcPreCheck(String requestName) throws ServiceException {</span>
-<span class="source-line-no">536</span><span id="line-536">    try {</span>
-<span class="source-line-no">537</span><span id="line-537">      server.checkInitialized();</span>
-<span class="source-line-no">538</span><span id="line-538">      requirePermission(requestName, Permission.Action.ADMIN);</span>
-<span class="source-line-no">539</span><span id="line-539">    } catch (IOException ioe) {</span>
-<span class="source-line-no">540</span><span id="line-540">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">541</span><span id="line-541">    }</span>
-<span class="source-line-no">542</span><span id="line-542">  }</span>
-<span class="source-line-no">543</span><span id="line-543"></span>
-<span class="source-line-no">544</span><span id="line-544">  enum BalanceSwitchMode {</span>
-<span class="source-line-no">545</span><span id="line-545">    SYNC,</span>
-<span class="source-line-no">546</span><span id="line-546">    ASYNC</span>
-<span class="source-line-no">547</span><span id="line-547">  }</span>
-<span class="source-line-no">548</span><span id="line-548"></span>
-<span class="source-line-no">549</span><span id="line-549">  /**</span>
-<span class="source-line-no">550</span><span id="line-550">   * Assigns balancer switch according to BalanceSwitchMode</span>
-<span class="source-line-no">551</span><span id="line-551">   * @param b    new balancer switch</span>
-<span class="source-line-no">552</span><span id="line-552">   * @param mode BalanceSwitchMode</span>
-<span class="source-line-no">553</span><span id="line-553">   * @return old balancer switch</span>
-<span class="source-line-no">554</span><span id="line-554">   */</span>
-<span class="source-line-no">555</span><span id="line-555">  boolean switchBalancer(final boolean b, BalanceSwitchMode mode) throws IOException {</span>
-<span class="source-line-no">556</span><span id="line-556">    boolean oldValue = server.loadBalancerStateStore.get();</span>
-<span class="source-line-no">557</span><span id="line-557">    boolean newValue = b;</span>
-<span class="source-line-no">558</span><span id="line-558">    try {</span>
-<span class="source-line-no">559</span><span id="line-559">      if (server.cpHost != null) {</span>
-<span class="source-line-no">560</span><span id="line-560">        server.cpHost.preBalanceSwitch(newValue);</span>
-<span class="source-line-no">561</span><span id="line-561">      }</span>
-<span class="source-line-no">562</span><span id="line-562">      if (mode == BalanceSwitchMode.SYNC) {</span>
-<span class="source-line-no">563</span><span id="line-563">        synchronized (server.getLoadBalancer()) {</span>
-<span class="source-line-no">564</span><span id="line-564">          server.loadBalancerStateStore.set(newValue);</span>
-<span class="source-line-no">565</span><span id="line-565">        }</span>
-<span class="source-line-no">566</span><span id="line-566">      } else {</span>
-<span class="source-line-no">567</span><span id="line-567">        server.loadBalancerStateStore.set(newValue);</span>
-<span class="source-line-no">568</span><span id="line-568">      }</span>
-<span class="source-line-no">569</span><span id="line-569">      LOG.info(server.getClientIdAuditPrefix() + " set balanceSwitch=" + newValue);</span>
-<span class="source-line-no">570</span><span id="line-570">      if (server.cpHost != null) {</span>
-<span class="source-line-no">571</span><span id="line-571">        server.cpHost.postBalanceSwitch(oldValue, newValue);</span>
-<span class="source-line-no">572</span><span id="line-572">      }</span>
-<span class="source-line-no">573</span><span id="line-573">      server.getLoadBalancer().updateBalancerStatus(newValue);</span>
-<span class="source-line-no">574</span><span id="line-574">    } catch (IOException ioe) {</span>
-<span class="source-line-no">575</span><span id="line-575">      LOG.warn("Error flipping balance switch", ioe);</span>
-<span class="source-line-no">576</span><span id="line-576">    }</span>
-<span class="source-line-no">577</span><span id="line-577">    return oldValue;</span>
-<span class="source-line-no">578</span><span id="line-578">  }</span>
-<span class="source-line-no">579</span><span id="line-579"></span>
-<span class="source-line-no">580</span><span id="line-580">  boolean synchronousBalanceSwitch(final boolean b) throws IOException {</span>
-<span class="source-line-no">581</span><span id="line-581">    return switchBalancer(b, BalanceSwitchMode.SYNC);</span>
-<span class="source-line-no">582</span><span id="line-582">  }</span>
-<span class="source-line-no">583</span><span id="line-583"></span>
-<span class="source-line-no">584</span><span id="line-584">  /** Returns list of blocking services and their security info classes that this server supports */</span>
-<span class="source-line-no">585</span><span id="line-585">  @Override</span>
-<span class="source-line-no">586</span><span id="line-586">  protected List&lt;BlockingServiceAndInterface&gt; getServices() {</span>
-<span class="source-line-no">587</span><span id="line-587">    List&lt;BlockingServiceAndInterface&gt; bssi = new ArrayList&lt;&gt;(5);</span>
-<span class="source-line-no">588</span><span id="line-588">    bssi.add(new BlockingServiceAndInterface(MasterService.newReflectiveBlockingService(this),</span>
-<span class="source-line-no">589</span><span id="line-589">      MasterService.BlockingInterface.class));</span>
-<span class="source-line-no">590</span><span id="line-590">    bssi.add(</span>
-<span class="source-line-no">591</span><span id="line-591">      new BlockingServiceAndInterface(RegionServerStatusService.newReflectiveBlockingService(this),</span>
-<span class="source-line-no">592</span><span id="line-592">        RegionServerStatusService.BlockingInterface.class));</span>
-<span class="source-line-no">593</span><span id="line-593">    bssi.add(new BlockingServiceAndInterface(LockService.newReflectiveBlockingService(this),</span>
-<span class="source-line-no">594</span><span id="line-594">      LockService.BlockingInterface.class));</span>
-<span class="source-line-no">595</span><span id="line-595">    bssi.add(new BlockingServiceAndInterface(HbckService.newReflectiveBlockingService(this),</span>
-<span class="source-line-no">596</span><span id="line-596">      HbckService.BlockingInterface.class));</span>
-<span class="source-line-no">597</span><span id="line-597">    bssi.add(new BlockingServiceAndInterface(ClientMetaService.newReflectiveBlockingService(this),</span>
-<span class="source-line-no">598</span><span id="line-598">      ClientMetaService.BlockingInterface.class));</span>
-<span class="source-line-no">599</span><span id="line-599">    bssi.add(new BlockingServiceAndInterface(AdminService.newReflectiveBlockingService(this),</span>
-<span class="source-line-no">600</span><span id="line-600">      AdminService.BlockingInterface.class));</span>
-<span class="source-line-no">601</span><span id="line-601">    return bssi;</span>
-<span class="source-line-no">602</span><span id="line-602">  }</span>
-<span class="source-line-no">603</span><span id="line-603"></span>
-<span class="source-line-no">604</span><span id="line-604">  void start(ZKWatcher zkWatcher) {</span>
-<span class="source-line-no">605</span><span id="line-605">    internalStart(zkWatcher);</span>
-<span class="source-line-no">606</span><span id="line-606">  }</span>
-<span class="source-line-no">607</span><span id="line-607"></span>
-<span class="source-line-no">608</span><span id="line-608">  void stop() {</span>
-<span class="source-line-no">609</span><span id="line-609">    internalStop();</span>
-<span class="source-line-no">610</span><span id="line-610">  }</span>
-<span class="source-line-no">611</span><span id="line-611"></span>
-<span class="source-line-no">612</span><span id="line-612">  @Override</span>
-<span class="source-line-no">613</span><span id="line-613">  // priority for all RegionServerStatusProtos rpc's are set HIGH_QOS in</span>
-<span class="source-line-no">614</span><span id="line-614">  // MasterAnnotationReadingPriorityFunction itself</span>
-<span class="source-line-no">615</span><span id="line-615">  public GetLastFlushedSequenceIdResponse getLastFlushedSequenceId(RpcController controller,</span>
-<span class="source-line-no">616</span><span id="line-616">    GetLastFlushedSequenceIdRequest request) throws ServiceException {</span>
-<span class="source-line-no">617</span><span id="line-617">    try {</span>
-<span class="source-line-no">618</span><span id="line-618">      server.checkServiceStarted();</span>
-<span class="source-line-no">619</span><span id="line-619">    } catch (IOException ioe) {</span>
-<span class="source-line-no">620</span><span id="line-620">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">621</span><span id="line-621">    }</span>
-<span class="source-line-no">622</span><span id="line-622">    byte[] encodedRegionName = request.getRegionName().toByteArray();</span>
-<span class="source-line-no">623</span><span id="line-623">    RegionStoreSequenceIds ids =</span>
-<span class="source-line-no">624</span><span id="line-624">      server.getServerManager().getLastFlushedSequenceId(encodedRegionName);</span>
-<span class="source-line-no">625</span><span id="line-625">    return ResponseConverter.buildGetLastFlushedSequenceIdResponse(ids);</span>
-<span class="source-line-no">626</span><span id="line-626">  }</span>
-<span class="source-line-no">627</span><span id="line-627"></span>
-<span class="source-line-no">628</span><span id="line-628">  @Override</span>
-<span class="source-line-no">629</span><span id="line-629">  public RegionServerReportResponse regionServerReport(RpcController controller,</span>
-<span class="source-line-no">630</span><span id="line-630">    RegionServerReportRequest request) throws ServiceException {</span>
-<span class="source-line-no">631</span><span id="line-631">    try {</span>
-<span class="source-line-no">632</span><span id="line-632">      server.checkServiceStarted();</span>
-<span class="source-line-no">633</span><span id="line-633">      int versionNumber = 0;</span>
-<span class="source-line-no">634</span><span id="line-634">      String version = "0.0.0";</span>
-<span class="source-line-no">635</span><span id="line-635">      VersionInfo versionInfo = VersionInfoUtil.getCurrentClientVersionInfo();</span>
-<span class="source-line-no">636</span><span id="line-636">      if (versionInfo != null) {</span>
-<span class="source-line-no">637</span><span id="line-637">        version = versionInfo.getVersion();</span>
-<span class="source-line-no">638</span><span id="line-638">        versionNumber = VersionInfoUtil.getVersionNumber(versionInfo);</span>
-<span class="source-line-no">639</span><span id="line-639">      }</span>
-<span class="source-line-no">640</span><span id="line-640">      ClusterStatusProtos.ServerLoad sl = request.getLoad();</span>
-<span class="source-line-no">641</span><span id="line-641">      ServerName serverName = ProtobufUtil.toServerName(request.getServer());</span>
-<span class="source-line-no">642</span><span id="line-642">      ServerMetrics oldLoad = server.getServerManager().getLoad(serverName);</span>
-<span class="source-line-no">643</span><span id="line-643">      ServerMetrics newLoad =</span>
-<span class="source-line-no">644</span><span id="line-644">        ServerMetricsBuilder.toServerMetrics(serverName, versionNumber, version, sl);</span>
-<span class="source-line-no">645</span><span id="line-645">      server.getServerManager().regionServerReport(serverName, newLoad);</span>
-<span class="source-line-no">646</span><span id="line-646">      server.getAssignmentManager().reportOnlineRegions(serverName,</span>
-<span class="source-line-no">647</span><span id="line-647">        newLoad.getRegionMetrics().keySet());</span>
-<span class="source-line-no">648</span><span id="line-648">      if (sl != null &amp;&amp; server.metricsMaster != null) {</span>
-<span class="source-line-no">649</span><span id="line-649">        // Up our metrics.</span>
-<span class="source-line-no">650</span><span id="line-650">        server.metricsMaster.incrementRequests(</span>
-<span class="source-line-no">651</span><span id="line-651">          sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0));</span>
-<span class="source-line-no">652</span><span id="line-652">        server.metricsMaster.incrementReadRequests(</span>
-<span class="source-line-no">653</span><span id="line-653">          sl.getReadRequestsCount() - (oldLoad != null ? oldLoad.getReadRequestsCount() : 0));</span>
-<span class="source-line-no">654</span><span id="line-654">        server.metricsMaster.incrementWriteRequests(</span>
-<span class="source-line-no">655</span><span id="line-655">          sl.getWriteRequestsCount() - (oldLoad != null ? oldLoad.getWriteRequestsCount() : 0));</span>
-<span class="source-line-no">656</span><span id="line-656">      }</span>
-<span class="source-line-no">657</span><span id="line-657">    } catch (IOException ioe) {</span>
-<span class="source-line-no">658</span><span id="line-658">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">659</span><span id="line-659">    }</span>
-<span class="source-line-no">660</span><span id="line-660">    return RegionServerReportResponse.newBuilder().build();</span>
-<span class="source-line-no">661</span><span id="line-661">  }</span>
-<span class="source-line-no">662</span><span id="line-662"></span>
-<span class="source-line-no">663</span><span id="line-663">  @Override</span>
-<span class="source-line-no">664</span><span id="line-664">  public RegionServerStartupResponse regionServerStartup(RpcController controller,</span>
-<span class="source-line-no">665</span><span id="line-665">    RegionServerStartupRequest request) throws ServiceException {</span>
-<span class="source-line-no">666</span><span id="line-666">    // Register with server manager</span>
-<span class="source-line-no">667</span><span id="line-667">    try {</span>
-<span class="source-line-no">668</span><span id="line-668">      server.checkServiceStarted();</span>
-<span class="source-line-no">669</span><span id="line-669">      int versionNumber = 0;</span>
-<span class="source-line-no">670</span><span id="line-670">      String version = "0.0.0";</span>
-<span class="source-line-no">671</span><span id="line-671">      VersionInfo versionInfo = VersionInfoUtil.getCurrentClientVersionInfo();</span>
-<span class="source-line-no">672</span><span id="line-672">      if (versionInfo != null) {</span>
-<span class="source-line-no">673</span><span id="line-673">        version = versionInfo.getVersion();</span>
-<span class="source-line-no">674</span><span id="line-674">        versionNumber = VersionInfoUtil.getVersionNumber(versionInfo);</span>
-<span class="source-line-no">675</span><span id="line-675">      }</span>
-<span class="source-line-no">676</span><span id="line-676">      InetAddress ia = server.getRemoteInetAddress(request.getPort(), request.getServerStartCode());</span>
-<span class="source-line-no">677</span><span id="line-677">      // if regionserver passed hostname to use,</span>
-<span class="source-line-no">678</span><span id="line-678">      // then use it instead of doing a reverse DNS lookup</span>
-<span class="source-line-no">679</span><span id="line-679">      ServerName rs =</span>
-<span class="source-line-no">680</span><span id="line-680">        server.getServerManager().regionServerStartup(request, versionNumber, version, ia);</span>
-<span class="source-line-no">681</span><span id="line-681"></span>
-<span class="source-line-no">682</span><span id="line-682">      // Send back some config info</span>
-<span class="source-line-no">683</span><span id="line-683">      RegionServerStartupResponse.Builder resp = createConfigurationSubset();</span>
-<span class="source-line-no">684</span><span id="line-684">      NameStringPair.Builder entry = NameStringPair.newBuilder()</span>
-<span class="source-line-no">685</span><span id="line-685">        .setName(HConstants.KEY_FOR_HOSTNAME_SEEN_BY_MASTER).setValue(rs.getHostname());</span>
-<span class="source-line-no">686</span><span id="line-686">      resp.addMapEntries(entry.build());</span>
-<span class="source-line-no">687</span><span id="line-687"></span>
-<span class="source-line-no">688</span><span id="line-688">      return resp.build();</span>
-<span class="source-line-no">689</span><span id="line-689">    } catch (IOException ioe) {</span>
-<span class="source-line-no">690</span><span id="line-690">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">691</span><span id="line-691">    }</span>
-<span class="source-line-no">692</span><span id="line-692">  }</span>
-<span class="source-line-no">693</span><span id="line-693"></span>
-<span class="source-line-no">694</span><span id="line-694">  @Override</span>
-<span class="source-line-no">695</span><span id="line-695">  public ReportRSFatalErrorResponse reportRSFatalError(RpcController controller,</span>
-<span class="source-line-no">696</span><span id="line-696">    ReportRSFatalErrorRequest request) throws ServiceException {</span>
-<span class="source-line-no">697</span><span id="line-697">    String errorText = request.getErrorMessage();</span>
-<span class="source-line-no">698</span><span id="line-698">    ServerName sn = ProtobufUtil.toServerName(request.getServer());</span>
-<span class="source-line-no">699</span><span id="line-699">    String msg = sn + " reported a fatal error:\n" + errorText;</span>
-<span class="source-line-no">700</span><span id="line-700">    LOG.warn(msg);</span>
-<span class="source-line-no">701</span><span id="line-701">    server.rsFatals.add(msg);</span>
-<span class="source-line-no">702</span><span id="line-702">    return ReportRSFatalErrorResponse.newBuilder().build();</span>
-<span class="source-line-no">703</span><span id="line-703">  }</span>
-<span class="source-line-no">704</span><span id="line-704"></span>
-<span class="source-line-no">705</span><span id="line-705">  @Override</span>
-<span class="source-line-no">706</span><span id="line-706">  public AddColumnResponse addColumn(RpcController controller, AddColumnRequest req)</span>
-<span class="source-line-no">707</span><span id="line-707">    throws ServiceException {</span>
-<span class="source-line-no">708</span><span id="line-708">    try {</span>
-<span class="source-line-no">709</span><span id="line-709">      long procId = server.addColumn(ProtobufUtil.toTableName(req.getTableName()),</span>
-<span class="source-line-no">710</span><span id="line-710">        ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()), req.getNonceGroup(),</span>
-<span class="source-line-no">711</span><span id="line-711">        req.getNonce());</span>
-<span class="source-line-no">712</span><span id="line-712">      if (procId == -1) {</span>
-<span class="source-line-no">713</span><span id="line-713">        // This mean operation was not performed in server, so do not set any procId</span>
-<span class="source-line-no">714</span><span id="line-714">        return AddColumnResponse.newBuilder().build();</span>
-<span class="source-line-no">715</span><span id="line-715">      } else {</span>
-<span class="source-line-no">716</span><span id="line-716">        return AddColumnResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">717</span><span id="line-717">      }</span>
-<span class="source-line-no">718</span><span id="line-718">    } catch (IOException ioe) {</span>
-<span class="source-line-no">719</span><span id="line-719">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">720</span><span id="line-720">    }</span>
-<span class="source-line-no">721</span><span id="line-721">  }</span>
-<span class="source-line-no">722</span><span id="line-722"></span>
-<span class="source-line-no">723</span><span id="line-723">  @Override</span>
-<span class="source-line-no">724</span><span id="line-724">  public AssignRegionResponse assignRegion(RpcController controller, AssignRegionRequest req)</span>
-<span class="source-line-no">725</span><span id="line-725">    throws ServiceException {</span>
-<span class="source-line-no">726</span><span id="line-726">    try {</span>
-<span class="source-line-no">727</span><span id="line-727">      server.checkInitialized();</span>
-<span class="source-line-no">728</span><span id="line-728"></span>
-<span class="source-line-no">729</span><span id="line-729">      final RegionSpecifierType type = req.getRegion().getType();</span>
-<span class="source-line-no">730</span><span id="line-730">      if (type != RegionSpecifierType.REGION_NAME) {</span>
-<span class="source-line-no">731</span><span id="line-731">        LOG.warn("assignRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME</span>
-<span class="source-line-no">732</span><span id="line-732">          + " actual: " + type);</span>
-<span class="source-line-no">733</span><span id="line-733">      }</span>
-<span class="source-line-no">734</span><span id="line-734"></span>
-<span class="source-line-no">735</span><span id="line-735">      final byte[] regionName = req.getRegion().getValue().toByteArray();</span>
-<span class="source-line-no">736</span><span id="line-736">      final RegionInfo regionInfo = server.getAssignmentManager().getRegionInfo(regionName);</span>
-<span class="source-line-no">737</span><span id="line-737">      if (regionInfo == null) {</span>
-<span class="source-line-no">738</span><span id="line-738">        throw new UnknownRegionException(Bytes.toStringBinary(regionName));</span>
-<span class="source-line-no">739</span><span id="line-739">      }</span>
-<span class="source-line-no">740</span><span id="line-740"></span>
-<span class="source-line-no">741</span><span id="line-741">      final AssignRegionResponse arr = AssignRegionResponse.newBuilder().build();</span>
-<span class="source-line-no">742</span><span id="line-742">      if (server.cpHost != null) {</span>
-<span class="source-line-no">743</span><span id="line-743">        server.cpHost.preAssign(regionInfo);</span>
-<span class="source-line-no">744</span><span id="line-744">      }</span>
-<span class="source-line-no">745</span><span id="line-745">      LOG.info(server.getClientIdAuditPrefix() + " assign " + regionInfo.getRegionNameAsString());</span>
-<span class="source-line-no">746</span><span id="line-746">      server.getAssignmentManager().assign(regionInfo);</span>
-<span class="source-line-no">747</span><span id="line-747">      if (server.cpHost != null) {</span>
-<span class="source-line-no">748</span><span id="line-748">        server.cpHost.postAssign(regionInfo);</span>
-<span class="source-line-no">749</span><span id="line-749">      }</span>
-<span class="source-line-no">750</span><span id="line-750">      return arr;</span>
-<span class="source-line-no">751</span><span id="line-751">    } catch (IOException ioe) {</span>
-<span class="source-line-no">752</span><span id="line-752">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">753</span><span id="line-753">    }</span>
-<span class="source-line-no">754</span><span id="line-754">  }</span>
-<span class="source-line-no">755</span><span id="line-755"></span>
-<span class="source-line-no">756</span><span id="line-756">  @Override</span>
-<span class="source-line-no">757</span><span id="line-757">  public MasterProtos.BalanceResponse balance(RpcController controller,</span>
-<span class="source-line-no">758</span><span id="line-758">    MasterProtos.BalanceRequest request) throws ServiceException {</span>
-<span class="source-line-no">759</span><span id="line-759">    try {</span>
-<span class="source-line-no">760</span><span id="line-760">      return ProtobufUtil.toBalanceResponse(server.balance(ProtobufUtil.toBalanceRequest(request)));</span>
-<span class="source-line-no">761</span><span id="line-761">    } catch (IOException ex) {</span>
-<span class="source-line-no">762</span><span id="line-762">      throw new ServiceException(ex);</span>
-<span class="source-line-no">763</span><span id="line-763">    }</span>
-<span class="source-line-no">764</span><span id="line-764">  }</span>
-<span class="source-line-no">765</span><span id="line-765"></span>
-<span class="source-line-no">766</span><span id="line-766">  @Override</span>
-<span class="source-line-no">767</span><span id="line-767">  public CreateNamespaceResponse createNamespace(RpcController controller,</span>
-<span class="source-line-no">768</span><span id="line-768">    CreateNamespaceRequest request) throws ServiceException {</span>
-<span class="source-line-no">769</span><span id="line-769">    try {</span>
-<span class="source-line-no">770</span><span id="line-770">      long procId =</span>
-<span class="source-line-no">771</span><span id="line-771">        server.createNamespace(ProtobufUtil.toNamespaceDescriptor(request.getNamespaceDescriptor()),</span>
-<span class="source-line-no">772</span><span id="line-772">          request.getNonceGroup(), request.getNonce());</span>
-<span class="source-line-no">773</span><span id="line-773">      return CreateNamespaceResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">774</span><span id="line-774">    } catch (IOException e) {</span>
-<span class="source-line-no">775</span><span id="line-775">      throw new ServiceException(e);</span>
-<span class="source-line-no">776</span><span id="line-776">    }</span>
-<span class="source-line-no">777</span><span id="line-777">  }</span>
-<span class="source-line-no">778</span><span id="line-778"></span>
-<span class="source-line-no">779</span><span id="line-779">  @Override</span>
-<span class="source-line-no">780</span><span id="line-780">  public CreateTableResponse createTable(RpcController controller, CreateTableRequest req)</span>
-<span class="source-line-no">781</span><span id="line-781">    throws ServiceException {</span>
-<span class="source-line-no">782</span><span id="line-782">    TableDescriptor tableDescriptor = ProtobufUtil.toTableDescriptor(req.getTableSchema());</span>
-<span class="source-line-no">783</span><span id="line-783">    byte[][] splitKeys = ProtobufUtil.getSplitKeysArray(req);</span>
-<span class="source-line-no">784</span><span id="line-784">    try {</span>
-<span class="source-line-no">785</span><span id="line-785">      long procId =</span>
-<span class="source-line-no">786</span><span id="line-786">        server.createTable(tableDescriptor, splitKeys, req.getNonceGroup(), req.getNonce());</span>
-<span class="source-line-no">787</span><span id="line-787">      LOG.info(server.getClientIdAuditPrefix() + " procedure request for creating table: "</span>
-<span class="source-line-no">788</span><span id="line-788">        + req.getTableSchema().getTableName() + " procId is: " + procId);</span>
-<span class="source-line-no">789</span><span id="line-789">      return CreateTableResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">790</span><span id="line-790">    } catch (IOException ioe) {</span>
-<span class="source-line-no">791</span><span id="line-791">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">792</span><span id="line-792">    }</span>
-<span class="source-line-no">793</span><span id="line-793">  }</span>
-<span class="source-line-no">794</span><span id="line-794"></span>
-<span class="source-line-no">795</span><span id="line-795">  @Override</span>
-<span class="source-line-no">796</span><span id="line-796">  public DeleteColumnResponse deleteColumn(RpcController controller, DeleteColumnRequest req)</span>
-<span class="source-line-no">797</span><span id="line-797">    throws ServiceException {</span>
-<span class="source-line-no">798</span><span id="line-798">    try {</span>
-<span class="source-line-no">799</span><span id="line-799">      long procId = server.deleteColumn(ProtobufUtil.toTableName(req.getTableName()),</span>
-<span class="source-line-no">800</span><span id="line-800">        req.getColumnName().toByteArray(), req.getNonceGroup(), req.getNonce());</span>
-<span class="source-line-no">801</span><span id="line-801">      if (procId == -1) {</span>
-<span class="source-line-no">802</span><span id="line-802">        // This mean operation was not performed in server, so do not set any procId</span>
-<span class="source-line-no">803</span><span id="line-803">        return DeleteColumnResponse.newBuilder().build();</span>
-<span class="source-line-no">804</span><span id="line-804">      } else {</span>
-<span class="source-line-no">805</span><span id="line-805">        return DeleteColumnResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">806</span><span id="line-806">      }</span>
-<span class="source-line-no">807</span><span id="line-807">    } catch (IOException ioe) {</span>
-<span class="source-line-no">808</span><span id="line-808">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">809</span><span id="line-809">    }</span>
-<span class="source-line-no">810</span><span id="line-810">  }</span>
-<span class="source-line-no">811</span><span id="line-811"></span>
-<span class="source-line-no">812</span><span id="line-812">  @Override</span>
-<span class="source-line-no">813</span><span id="line-813">  public DeleteNamespaceResponse deleteNamespace(RpcController controller,</span>
-<span class="source-line-no">814</span><span id="line-814">    DeleteNamespaceRequest request) throws ServiceException {</span>
-<span class="source-line-no">815</span><span id="line-815">    try {</span>
-<span class="source-line-no">816</span><span id="line-816">      long procId = server.deleteNamespace(request.getNamespaceName(), request.getNonceGroup(),</span>
-<span class="source-line-no">817</span><span id="line-817">        request.getNonce());</span>
-<span class="source-line-no">818</span><span id="line-818">      return DeleteNamespaceResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">819</span><span id="line-819">    } catch (IOException e) {</span>
-<span class="source-line-no">820</span><span id="line-820">      throw new ServiceException(e);</span>
-<span class="source-line-no">821</span><span id="line-821">    }</span>
-<span class="source-line-no">822</span><span id="line-822">  }</span>
-<span class="source-line-no">823</span><span id="line-823"></span>
-<span class="source-line-no">824</span><span id="line-824">  /**</span>
-<span class="source-line-no">825</span><span id="line-825">   * Execute Delete Snapshot operation.</span>
-<span class="source-line-no">826</span><span id="line-826">   * @return DeleteSnapshotResponse (a protobuf wrapped void) if the snapshot existed and was</span>
-<span class="source-line-no">827</span><span id="line-827">   *         deleted properly.</span>
-<span class="source-line-no">828</span><span id="line-828">   * @throws ServiceException wrapping SnapshotDoesNotExistException if specified snapshot did not</span>
-<span class="source-line-no">829</span><span id="line-829">   *                          exist.</span>
-<span class="source-line-no">830</span><span id="line-830">   */</span>
-<span class="source-line-no">831</span><span id="line-831">  @Override</span>
-<span class="source-line-no">832</span><span id="line-832">  public DeleteSnapshotResponse deleteSnapshot(RpcController controller,</span>
-<span class="source-line-no">833</span><span id="line-833">    DeleteSnapshotRequest request) throws ServiceException {</span>
-<span class="source-line-no">834</span><span id="line-834">    try {</span>
-<span class="source-line-no">835</span><span id="line-835">      server.checkInitialized();</span>
-<span class="source-line-no">836</span><span id="line-836">      server.snapshotManager.checkSnapshotSupport();</span>
-<span class="source-line-no">837</span><span id="line-837"></span>
-<span class="source-line-no">838</span><span id="line-838">      LOG.info(server.getClientIdAuditPrefix() + " delete " + request.getSnapshot());</span>
-<span class="source-line-no">839</span><span id="line-839">      server.snapshotManager.deleteSnapshot(request.getSnapshot());</span>
-<span class="source-line-no">840</span><span id="line-840">      return DeleteSnapshotResponse.newBuilder().build();</span>
-<span class="source-line-no">841</span><span id="line-841">    } catch (IOException e) {</span>
-<span class="source-line-no">842</span><span id="line-842">      throw new ServiceException(e);</span>
-<span class="source-line-no">843</span><span id="line-843">    }</span>
-<span class="source-line-no">844</span><span id="line-844">  }</span>
-<span class="source-line-no">845</span><span id="line-845"></span>
-<span class="source-line-no">846</span><span id="line-846">  @Override</span>
-<span class="source-line-no">847</span><span id="line-847">  public DeleteTableResponse deleteTable(RpcController controller, DeleteTableRequest request)</span>
-<span class="source-line-no">848</span><span id="line-848">    throws ServiceException {</span>
-<span class="source-line-no">849</span><span id="line-849">    try {</span>
-<span class="source-line-no">850</span><span id="line-850">      long procId = server.deleteTable(ProtobufUtil.toTableName(request.getTableName()),</span>
-<span class="source-line-no">851</span><span id="line-851">        request.getNonceGroup(), request.getNonce());</span>
-<span class="source-line-no">852</span><span id="line-852">      return DeleteTableResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">853</span><span id="line-853">    } catch (IOException ioe) {</span>
-<span class="source-line-no">854</span><span id="line-854">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">855</span><span id="line-855">    }</span>
-<span class="source-line-no">856</span><span id="line-856">  }</span>
-<span class="source-line-no">857</span><span id="line-857"></span>
-<span class="source-line-no">858</span><span id="line-858">  @Override</span>
-<span class="source-line-no">859</span><span id="line-859">  public TruncateTableResponse truncateTable(RpcController controller, TruncateTableRequest request)</span>
-<span class="source-line-no">860</span><span id="line-860">    throws ServiceException {</span>
-<span class="source-line-no">861</span><span id="line-861">    try {</span>
-<span class="source-line-no">862</span><span id="line-862">      long procId = server.truncateTable(ProtobufUtil.toTableName(request.getTableName()),</span>
-<span class="source-line-no">863</span><span id="line-863">        request.getPreserveSplits(), request.getNonceGroup(), request.getNonce());</span>
-<span class="source-line-no">864</span><span id="line-864">      return TruncateTableResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">865</span><span id="line-865">    } catch (IOException ioe) {</span>
-<span class="source-line-no">866</span><span id="line-866">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">867</span><span id="line-867">    }</span>
-<span class="source-line-no">868</span><span id="line-868">  }</span>
-<span class="source-line-no">869</span><span id="line-869"></span>
-<span class="source-line-no">870</span><span id="line-870">  @Override</span>
-<span class="source-line-no">871</span><span id="line-871">  public DisableTableResponse disableTable(RpcController controller, DisableTableRequest request)</span>
-<span class="source-line-no">872</span><span id="line-872">    throws ServiceException {</span>
-<span class="source-line-no">873</span><span id="line-873">    try {</span>
-<span class="source-line-no">874</span><span id="line-874">      long procId = server.disableTable(ProtobufUtil.toTableName(request.getTableName()),</span>
-<span class="source-line-no">875</span><span id="line-875">        request.getNonceGroup(), request.getNonce());</span>
-<span class="source-line-no">876</span><span id="line-876">      return DisableTableResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">877</span><span id="line-877">    } catch (IOException ioe) {</span>
-<span class="source-line-no">878</span><span id="line-878">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">879</span><span id="line-879">    }</span>
-<span class="source-line-no">880</span><span id="line-880">  }</span>
-<span class="source-line-no">881</span><span id="line-881"></span>
-<span class="source-line-no">882</span><span id="line-882">  @Override</span>
-<span class="source-line-no">883</span><span id="line-883">  public EnableCatalogJanitorResponse enableCatalogJanitor(RpcController c,</span>
-<span class="source-line-no">884</span><span id="line-884">    EnableCatalogJanitorRequest req) throws ServiceException {</span>
-<span class="source-line-no">885</span><span id="line-885">    rpcPreCheck("enableCatalogJanitor");</span>
-<span class="source-line-no">886</span><span id="line-886">    return EnableCatalogJanitorResponse.newBuilder()</span>
-<span class="source-line-no">887</span><span id="line-887">      .setPrevValue(server.catalogJanitorChore.setEnabled(req.getEnable())).build();</span>
-<span class="source-line-no">888</span><span id="line-888">  }</span>
-<span class="source-line-no">889</span><span id="line-889"></span>
-<span class="source-line-no">890</span><span id="line-890">  @Override</span>
-<span class="source-line-no">891</span><span id="line-891">  public SetCleanerChoreRunningResponse setCleanerChoreRunning(RpcController c,</span>
-<span class="source-line-no">892</span><span id="line-892">    SetCleanerChoreRunningRequest req) throws ServiceException {</span>
-<span class="source-line-no">893</span><span id="line-893">    rpcPreCheck("setCleanerChoreRunning");</span>
-<span class="source-line-no">894</span><span id="line-894"></span>
-<span class="source-line-no">895</span><span id="line-895">    boolean prevValue =</span>
-<span class="source-line-no">896</span><span id="line-896">      server.getLogCleaner().getEnabled() &amp;&amp; server.getHFileCleaner().getEnabled();</span>
-<span class="source-line-no">897</span><span id="line-897">    server.getLogCleaner().setEnabled(req.getOn());</span>
-<span class="source-line-no">898</span><span id="line-898">    for (HFileCleaner hFileCleaner : server.getHFileCleaners()) {</span>
-<span class="source-line-no">899</span><span id="line-899">      hFileCleaner.setEnabled(req.getOn());</span>
-<span class="source-line-no">900</span><span id="line-900">    }</span>
-<span class="source-line-no">901</span><span id="line-901">    return SetCleanerChoreRunningResponse.newBuilder().setPrevValue(prevValue).build();</span>
-<span class="source-line-no">902</span><span id="line-902">  }</span>
-<span class="source-line-no">903</span><span id="line-903"></span>
-<span class="source-line-no">904</span><span id="line-904">  @Override</span>
-<span class="source-line-no">905</span><span id="line-905">  public EnableTableResponse enableTable(RpcController controller, EnableTableRequest request)</span>
-<span class="source-line-no">906</span><span id="line-906">    throws ServiceException {</span>
-<span class="source-line-no">907</span><span id="line-907">    try {</span>
-<span class="source-line-no">908</span><span id="line-908">      long procId = server.enableTable(ProtobufUtil.toTableName(request.getTableName()),</span>
-<span class="source-line-no">909</span><span id="line-909">        request.getNonceGroup(), request.getNonce());</span>
-<span class="source-line-no">910</span><span id="line-910">      return EnableTableResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">911</span><span id="line-911">    } catch (IOException ioe) {</span>
-<span class="source-line-no">912</span><span id="line-912">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">913</span><span id="line-913">    }</span>
-<span class="source-line-no">914</span><span id="line-914">  }</span>
-<span class="source-line-no">915</span><span id="line-915"></span>
-<span class="source-line-no">916</span><span id="line-916">  @Override</span>
-<span class="source-line-no">917</span><span id="line-917">  public MergeTableRegionsResponse mergeTableRegions(RpcController c,</span>
-<span class="source-line-no">918</span><span id="line-918">    MergeTableRegionsRequest request) throws ServiceException {</span>
-<span class="source-line-no">919</span><span id="line-919">    try {</span>
-<span class="source-line-no">920</span><span id="line-920">      server.checkInitialized();</span>
-<span class="source-line-no">921</span><span id="line-921">    } catch (IOException ioe) {</span>
-<span class="source-line-no">922</span><span id="line-922">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">923</span><span id="line-923">    }</span>
-<span class="source-line-no">924</span><span id="line-924"></span>
-<span class="source-line-no">925</span><span id="line-925">    RegionStates regionStates = server.getAssignmentManager().getRegionStates();</span>
-<span class="source-line-no">926</span><span id="line-926"></span>
-<span class="source-line-no">927</span><span id="line-927">    RegionInfo[] regionsToMerge = new RegionInfo[request.getRegionCount()];</span>
-<span class="source-line-no">928</span><span id="line-928">    for (int i = 0; i &lt; request.getRegionCount(); i++) {</span>
-<span class="source-line-no">929</span><span id="line-929">      final byte[] encodedNameOfRegion = request.getRegion(i).getValue().toByteArray();</span>
-<span class="source-line-no">930</span><span id="line-930">      if (request.getRegion(i).getType() != RegionSpecifierType.ENCODED_REGION_NAME) {</span>
-<span class="source-line-no">931</span><span id="line-931">        LOG.warn("MergeRegions specifier type: expected: " + RegionSpecifierType.ENCODED_REGION_NAME</span>
-<span class="source-line-no">932</span><span id="line-932">          + " actual: region " + i + " =" + request.getRegion(i).getType());</span>
-<span class="source-line-no">933</span><span id="line-933">      }</span>
-<span class="source-line-no">934</span><span id="line-934">      RegionState regionState = regionStates.getRegionState(Bytes.toString(encodedNameOfRegion));</span>
-<span class="source-line-no">935</span><span id="line-935">      if (regionState == null) {</span>
-<span class="source-line-no">936</span><span id="line-936">        throw new ServiceException(</span>
-<span class="source-line-no">937</span><span id="line-937">          new UnknownRegionException(Bytes.toStringBinary(encodedNameOfRegion)));</span>
-<span class="source-line-no">938</span><span id="line-938">      }</span>
-<span class="source-line-no">939</span><span id="line-939">      regionsToMerge[i] = regionState.getRegion();</span>
-<span class="source-line-no">940</span><span id="line-940">    }</span>
-<span class="source-line-no">941</span><span id="line-941"></span>
-<span class="source-line-no">942</span><span id="line-942">    try {</span>
-<span class="source-line-no">943</span><span id="line-943">      long procId = server.mergeRegions(regionsToMerge, request.getForcible(),</span>
-<span class="source-line-no">944</span><span id="line-944">        request.getNonceGroup(), request.getNonce());</span>
-<span class="source-line-no">945</span><span id="line-945">      return MergeTableRegionsResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">946</span><span id="line-946">    } catch (IOException ioe) {</span>
-<span class="source-line-no">947</span><span id="line-947">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">948</span><span id="line-948">    }</span>
-<span class="source-line-no">949</span><span id="line-949">  }</span>
-<span class="source-line-no">950</span><span id="line-950"></span>
-<span class="source-line-no">951</span><span id="line-951">  @Override</span>
-<span class="source-line-no">952</span><span id="line-952">  public SplitTableRegionResponse splitRegion(final RpcController controller,</span>
-<span class="source-line-no">953</span><span id="line-953">    final SplitTableRegionRequest request) throws ServiceException {</span>
-<span class="source-line-no">954</span><span id="line-954">    try {</span>
-<span class="source-line-no">955</span><span id="line-955">      long procId = server.splitRegion(ProtobufUtil.toRegionInfo(request.getRegionInfo()),</span>
-<span class="source-line-no">956</span><span id="line-956">        request.hasSplitRow() ? request.getSplitRow().toByteArray() : null, request.getNonceGroup(),</span>
-<span class="source-line-no">957</span><span id="line-957">        request.getNonce());</span>
-<span class="source-line-no">958</span><span id="line-958">      return SplitTableRegionResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">959</span><span id="line-959">    } catch (IOException ie) {</span>
-<span class="source-line-no">960</span><span id="line-960">      throw new ServiceException(ie);</span>
-<span class="source-line-no">961</span><span id="line-961">    }</span>
-<span class="source-line-no">962</span><span id="line-962">  }</span>
-<span class="source-line-no">963</span><span id="line-963"></span>
-<span class="source-line-no">964</span><span id="line-964">  @Override</span>
-<span class="source-line-no">965</span><span id="line-965">  public MasterProtos.TruncateRegionResponse truncateRegion(RpcController controller,</span>
-<span class="source-line-no">966</span><span id="line-966">    final MasterProtos.TruncateRegionRequest request) throws ServiceException {</span>
-<span class="source-line-no">967</span><span id="line-967">    try {</span>
-<span class="source-line-no">968</span><span id="line-968">      long procId = server.truncateRegion(ProtobufUtil.toRegionInfo(request.getRegionInfo()),</span>
-<span class="source-line-no">969</span><span id="line-969">        request.getNonceGroup(), request.getNonce());</span>
-<span class="source-line-no">970</span><span id="line-970">      return MasterProtos.TruncateRegionResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">971</span><span id="line-971">    } catch (IOException ie) {</span>
-<span class="source-line-no">972</span><span id="line-972">      throw new ServiceException(ie);</span>
-<span class="source-line-no">973</span><span id="line-973">    }</span>
-<span class="source-line-no">974</span><span id="line-974">  }</span>
-<span class="source-line-no">975</span><span id="line-975"></span>
-<span class="source-line-no">976</span><span id="line-976">  @Override</span>
-<span class="source-line-no">977</span><span id="line-977">  public ClientProtos.CoprocessorServiceResponse execMasterService(final RpcController controller,</span>
-<span class="source-line-no">978</span><span id="line-978">    final ClientProtos.CoprocessorServiceRequest request) throws ServiceException {</span>
-<span class="source-line-no">979</span><span id="line-979">    rpcPreCheck("execMasterService");</span>
-<span class="source-line-no">980</span><span id="line-980">    try {</span>
-<span class="source-line-no">981</span><span id="line-981">      ServerRpcController execController = new ServerRpcController();</span>
-<span class="source-line-no">982</span><span id="line-982">      ClientProtos.CoprocessorServiceCall call = request.getCall();</span>
-<span class="source-line-no">983</span><span id="line-983">      String serviceName = call.getServiceName();</span>
-<span class="source-line-no">984</span><span id="line-984">      String methodName = call.getMethodName();</span>
-<span class="source-line-no">985</span><span id="line-985">      if (!server.coprocessorServiceHandlers.containsKey(serviceName)) {</span>
-<span class="source-line-no">986</span><span id="line-986">        throw new UnknownProtocolException(null,</span>
-<span class="source-line-no">987</span><span id="line-987">          "No registered Master Coprocessor Endpoint found for " + serviceName</span>
-<span class="source-line-no">988</span><span id="line-988">            + ". Has it been enabled?");</span>
-<span class="source-line-no">989</span><span id="line-989">      }</span>
-<span class="source-line-no">990</span><span id="line-990"></span>
-<span class="source-line-no">991</span><span id="line-991">      Service service = server.coprocessorServiceHandlers.get(serviceName);</span>
-<span class="source-line-no">992</span><span id="line-992">      ServiceDescriptor serviceDesc = service.getDescriptorForType();</span>
-<span class="source-line-no">993</span><span id="line-993">      MethodDescriptor methodDesc =</span>
-<span class="source-line-no">994</span><span id="line-994">        CoprocessorRpcUtils.getMethodDescriptor(methodName, serviceDesc);</span>
-<span class="source-line-no">995</span><span id="line-995"></span>
-<span class="source-line-no">996</span><span id="line-996">      Message execRequest = CoprocessorRpcUtils.getRequest(service, methodDesc, call.getRequest());</span>
-<span class="source-line-no">997</span><span id="line-997">      final Message.Builder responseBuilder =</span>
-<span class="source-line-no">998</span><span id="line-998">        service.getResponsePrototype(methodDesc).newBuilderForType();</span>
-<span class="source-line-no">999</span><span id="line-999">      service.callMethod(methodDesc, execController, execRequest, (message) -&gt; {</span>
-<span class="source-line-no">1000</span><span id="line-1000">        if (message != null) {</span>
-<span class="source-line-no">1001</span><span id="line-1001">          responseBuilder.mergeFrom(message);</span>
-<span class="source-line-no">1002</span><span id="line-1002">        }</span>
-<span class="source-line-no">1003</span><span id="line-1003">      });</span>
-<span class="source-line-no">1004</span><span id="line-1004">      Message execResult = responseBuilder.build();</span>
-<span class="source-line-no">1005</span><span id="line-1005">      if (execController.getFailedOn() != null) {</span>
-<span class="source-line-no">1006</span><span id="line-1006">        throw execController.getFailedOn();</span>
-<span class="source-line-no">1007</span><span id="line-1007">      }</span>
-<span class="source-line-no">1008</span><span id="line-1008"></span>
-<span class="source-line-no">1009</span><span id="line-1009">      String remoteAddress = RpcServer.getRemoteAddress().map(InetAddress::toString).orElse("");</span>
-<span class="source-line-no">1010</span><span id="line-1010">      User caller = RpcServer.getRequestUser().orElse(null);</span>
-<span class="source-line-no">1011</span><span id="line-1011">      AUDITLOG.info("User {} (remote address: {}) master service request for {}.{}", caller,</span>
-<span class="source-line-no">1012</span><span id="line-1012">        remoteAddress, serviceName, methodName);</span>
-<span class="source-line-no">1013</span><span id="line-1013"></span>
-<span class="source-line-no">1014</span><span id="line-1014">      return CoprocessorRpcUtils.getResponse(execResult, HConstants.EMPTY_BYTE_ARRAY);</span>
-<span class="source-line-no">1015</span><span id="line-1015">    } catch (IOException ie) {</span>
-<span class="source-line-no">1016</span><span id="line-1016">      throw new ServiceException(ie);</span>
-<span class="source-line-no">1017</span><span id="line-1017">    }</span>
-<span class="source-line-no">1018</span><span id="line-1018">  }</span>
-<span class="source-line-no">1019</span><span id="line-1019"></span>
-<span class="source-line-no">1020</span><span id="line-1020">  /**</span>
-<span class="source-line-no">1021</span><span id="line-1021">   * Triggers an asynchronous attempt to run a distributed procedure. {@inheritDoc}</span>
-<span class="source-line-no">1022</span><span id="line-1022">   */</span>
-<span class="source-line-no">1023</span><span id="line-1023">  @Override</span>
-<span class="source-line-no">1024</span><span id="line-1024">  public ExecProcedureResponse execProcedure(RpcController controller, ExecProcedureRequest request)</span>
-<span class="source-line-no">1025</span><span id="line-1025">    throws ServiceException {</span>
-<span class="source-line-no">1026</span><span id="line-1026">    try {</span>
-<span class="source-line-no">1027</span><span id="line-1027">      server.checkInitialized();</span>
-<span class="source-line-no">1028</span><span id="line-1028">      ProcedureDescription desc = request.getProcedure();</span>
-<span class="source-line-no">1029</span><span id="line-1029">      MasterProcedureManager mpm =</span>
-<span class="source-line-no">1030</span><span id="line-1030">        server.getMasterProcedureManagerHost().getProcedureManager(desc.getSignature());</span>
-<span class="source-line-no">1031</span><span id="line-1031">      if (mpm == null) {</span>
-<span class="source-line-no">1032</span><span id="line-1032">        throw new ServiceException(</span>
-<span class="source-line-no">1033</span><span id="line-1033">          new DoNotRetryIOException("The procedure is not registered: " + desc.getSignature()));</span>
-<span class="source-line-no">1034</span><span id="line-1034">      }</span>
-<span class="source-line-no">1035</span><span id="line-1035">      LOG.info(server.getClientIdAuditPrefix() + " procedure request for: " + desc.getSignature());</span>
-<span class="source-line-no">1036</span><span id="line-1036">      mpm.checkPermissions(desc, getAccessChecker(), RpcServer.getRequestUser().orElse(null));</span>
-<span class="source-line-no">1037</span><span id="line-1037">      mpm.execProcedure(desc);</span>
-<span class="source-line-no">1038</span><span id="line-1038">      // send back the max amount of time the client should wait for the procedure</span>
-<span class="source-line-no">1039</span><span id="line-1039">      // to complete</span>
-<span class="source-line-no">1040</span><span id="line-1040">      long waitTime = SnapshotDescriptionUtils.DEFAULT_MAX_WAIT_TIME;</span>
-<span class="source-line-no">1041</span><span id="line-1041">      return ExecProcedureResponse.newBuilder().setExpectedTimeout(waitTime).build();</span>
-<span class="source-line-no">1042</span><span id="line-1042">    } catch (ForeignException e) {</span>
-<span class="source-line-no">1043</span><span id="line-1043">      throw new ServiceException(e.getCause());</span>
-<span class="source-line-no">1044</span><span id="line-1044">    } catch (IOException e) {</span>
-<span class="source-line-no">1045</span><span id="line-1045">      throw new ServiceException(e);</span>
-<span class="source-line-no">1046</span><span id="line-1046">    }</span>
-<span class="source-line-no">1047</span><span id="line-1047">  }</span>
-<span class="source-line-no">1048</span><span id="line-1048"></span>
-<span class="source-line-no">1049</span><span id="line-1049">  /**</span>
-<span class="source-line-no">1050</span><span id="line-1050">   * Triggers a synchronous attempt to run a distributed procedure and sets return data in response.</span>
-<span class="source-line-no">1051</span><span id="line-1051">   * {@inheritDoc}</span>
-<span class="source-line-no">1052</span><span id="line-1052">   */</span>
-<span class="source-line-no">1053</span><span id="line-1053">  @Override</span>
-<span class="source-line-no">1054</span><span id="line-1054">  public ExecProcedureResponse execProcedureWithRet(RpcController controller,</span>
-<span class="source-line-no">1055</span><span id="line-1055">    ExecProcedureRequest request) throws ServiceException {</span>
-<span class="source-line-no">1056</span><span id="line-1056">    rpcPreCheck("execProcedureWithRet");</span>
-<span class="source-line-no">1057</span><span id="line-1057">    try {</span>
-<span class="source-line-no">1058</span><span id="line-1058">      ProcedureDescription desc = request.getProcedure();</span>
-<span class="source-line-no">1059</span><span id="line-1059">      MasterProcedureManager mpm =</span>
-<span class="source-line-no">1060</span><span id="line-1060">        server.getMasterProcedureManagerHost().getProcedureManager(desc.getSignature());</span>
-<span class="source-line-no">1061</span><span id="line-1061">      if (mpm == null) {</span>
-<span class="source-line-no">1062</span><span id="line-1062">        throw new ServiceException("The procedure is not registered: " + desc.getSignature());</span>
-<span class="source-line-no">1063</span><span id="line-1063">      }</span>
-<span class="source-line-no">1064</span><span id="line-1064">      LOG.info(server.getClientIdAuditPrefix() + " procedure request for: " + desc.getSignature());</span>
-<span class="source-line-no">1065</span><span id="line-1065">      byte[] data = mpm.execProcedureWithRet(desc);</span>
-<span class="source-line-no">1066</span><span id="line-1066">      ExecProcedureResponse.Builder builder = ExecProcedureResponse.newBuilder();</span>
-<span class="source-line-no">1067</span><span id="line-1067">      // set return data if available</span>
-<span class="source-line-no">1068</span><span id="line-1068">      if (data != null) {</span>
-<span class="source-line-no">1069</span><span id="line-1069">        builder.setReturnData(UnsafeByteOperations.unsafeWrap(data));</span>
-<span class="source-line-no">1070</span><span id="line-1070">      }</span>
-<span class="source-line-no">1071</span><span id="line-1071">      return builder.build();</span>
-<span class="source-line-no">1072</span><span id="line-1072">    } catch (IOException e) {</span>
-<span class="source-line-no">1073</span><span id="line-1073">      throw new ServiceException(e);</span>
-<span class="source-line-no">1074</span><span id="line-1074">    }</span>
-<span class="source-line-no">1075</span><span id="line-1075">  }</span>
-<span class="source-line-no">1076</span><span id="line-1076"></span>
-<span class="source-line-no">1077</span><span id="line-1077">  @Override</span>
-<span class="source-line-no">1078</span><span id="line-1078">  public GetClusterStatusResponse getClusterStatus(RpcController controller,</span>
-<span class="source-line-no">1079</span><span id="line-1079">    GetClusterStatusRequest req) throws ServiceException {</span>
-<span class="source-line-no">1080</span><span id="line-1080">    GetClusterStatusResponse.Builder response = GetClusterStatusResponse.newBuilder();</span>
-<span class="source-line-no">1081</span><span id="line-1081">    try {</span>
-<span class="source-line-no">1082</span><span id="line-1082">      // We used to check if Master was up at this point but let this call proceed even if</span>
-<span class="source-line-no">1083</span><span id="line-1083">      // Master is initializing... else we shut out stuff like hbck2 tool from making progress</span>
-<span class="source-line-no">1084</span><span id="line-1084">      // since it queries this method to figure cluster version. hbck2 wants to be able to work</span>
-<span class="source-line-no">1085</span><span id="line-1085">      // against Master even if it is 'initializing' so it can do fixup.</span>
-<span class="source-line-no">1086</span><span id="line-1086">      response.setClusterStatus(ClusterMetricsBuilder.toClusterStatus(</span>
-<span class="source-line-no">1087</span><span id="line-1087">        server.getClusterMetrics(ClusterMetricsBuilder.toOptions(req.getOptionsList()))));</span>
-<span class="source-line-no">1088</span><span id="line-1088">    } catch (IOException e) {</span>
-<span class="source-line-no">1089</span><span id="line-1089">      throw new ServiceException(e);</span>
-<span class="source-line-no">1090</span><span id="line-1090">    }</span>
-<span class="source-line-no">1091</span><span id="line-1091">    return response.build();</span>
-<span class="source-line-no">1092</span><span id="line-1092">  }</span>
-<span class="source-line-no">1093</span><span id="line-1093"></span>
-<span class="source-line-no">1094</span><span id="line-1094">  /**</span>
-<span class="source-line-no">1095</span><span id="line-1095">   * List the currently available/stored snapshots. Any in-progress snapshots are ignored</span>
-<span class="source-line-no">1096</span><span id="line-1096">   */</span>
-<span class="source-line-no">1097</span><span id="line-1097">  @Override</span>
-<span class="source-line-no">1098</span><span id="line-1098">  public GetCompletedSnapshotsResponse getCompletedSnapshots(RpcController controller,</span>
-<span class="source-line-no">1099</span><span id="line-1099">    GetCompletedSnapshotsRequest request) throws ServiceException {</span>
-<span class="source-line-no">1100</span><span id="line-1100">    try {</span>
-<span class="source-line-no">1101</span><span id="line-1101">      server.checkInitialized();</span>
-<span class="source-line-no">1102</span><span id="line-1102">      GetCompletedSnapshotsResponse.Builder builder = GetCompletedSnapshotsResponse.newBuilder();</span>
-<span class="source-line-no">1103</span><span id="line-1103">      List&lt;SnapshotDescription&gt; snapshots = server.snapshotManager.getCompletedSnapshots();</span>
-<span class="source-line-no">1104</span><span id="line-1104"></span>
-<span class="source-line-no">1105</span><span id="line-1105">      // convert to protobuf</span>
-<span class="source-line-no">1106</span><span id="line-1106">      for (SnapshotDescription snapshot : snapshots) {</span>
-<span class="source-line-no">1107</span><span id="line-1107">        builder.addSnapshots(snapshot);</span>
-<span class="source-line-no">1108</span><span id="line-1108">      }</span>
-<span class="source-line-no">1109</span><span id="line-1109">      return builder.build();</span>
-<span class="source-line-no">1110</span><span id="line-1110">    } catch (IOException e) {</span>
-<span class="source-line-no">1111</span><span id="line-1111">      throw new ServiceException(e);</span>
-<span class="source-line-no">1112</span><span id="line-1112">    }</span>
-<span class="source-line-no">1113</span><span id="line-1113">  }</span>
-<span class="source-line-no">1114</span><span id="line-1114"></span>
-<span class="source-line-no">1115</span><span id="line-1115">  @Override</span>
-<span class="source-line-no">1116</span><span id="line-1116">  public ListNamespacesResponse listNamespaces(RpcController controller,</span>
-<span class="source-line-no">1117</span><span id="line-1117">    ListNamespacesRequest request) throws ServiceException {</span>
-<span class="source-line-no">1118</span><span id="line-1118">    try {</span>
-<span class="source-line-no">1119</span><span id="line-1119">      return ListNamespacesResponse.newBuilder().addAllNamespaceName(server.listNamespaces())</span>
-<span class="source-line-no">1120</span><span id="line-1120">        .build();</span>
-<span class="source-line-no">1121</span><span id="line-1121">    } catch (IOException e) {</span>
-<span class="source-line-no">1122</span><span id="line-1122">      throw new ServiceException(e);</span>
-<span class="source-line-no">1123</span><span id="line-1123">    }</span>
-<span class="source-line-no">1124</span><span id="line-1124">  }</span>
-<span class="source-line-no">1125</span><span id="line-1125"></span>
-<span class="source-line-no">1126</span><span id="line-1126">  @Override</span>
-<span class="source-line-no">1127</span><span id="line-1127">  public GetNamespaceDescriptorResponse getNamespaceDescriptor(RpcController controller,</span>
-<span class="source-line-no">1128</span><span id="line-1128">    GetNamespaceDescriptorRequest request) throws ServiceException {</span>
-<span class="source-line-no">1129</span><span id="line-1129">    try {</span>
-<span class="source-line-no">1130</span><span id="line-1130">      return GetNamespaceDescriptorResponse.newBuilder()</span>
-<span class="source-line-no">1131</span><span id="line-1131">        .setNamespaceDescriptor(</span>
-<span class="source-line-no">1132</span><span id="line-1132">          ProtobufUtil.toProtoNamespaceDescriptor(server.getNamespace(request.getNamespaceName())))</span>
-<span class="source-line-no">1133</span><span id="line-1133">        .build();</span>
-<span class="source-line-no">1134</span><span id="line-1134">    } catch (IOException e) {</span>
-<span class="source-line-no">1135</span><span id="line-1135">      throw new ServiceException(e);</span>
-<span class="source-line-no">1136</span><span id="line-1136">    }</span>
-<span class="source-line-no">1137</span><span id="line-1137">  }</span>
-<span class="source-line-no">1138</span><span id="line-1138"></span>
-<span class="source-line-no">1139</span><span id="line-1139">  /**</span>
-<span class="source-line-no">1140</span><span id="line-1140">   * Get the number of regions of the table that have been updated by the alter.</span>
-<span class="source-line-no">1141</span><span id="line-1141">   * @return Pair indicating the number of regions updated Pair.getFirst is the regions that are yet</span>
-<span class="source-line-no">1142</span><span id="line-1142">   *         to be updated Pair.getSecond is the total number of regions of the table</span>
-<span class="source-line-no">1143</span><span id="line-1143">   */</span>
-<span class="source-line-no">1144</span><span id="line-1144">  @Override</span>
-<span class="source-line-no">1145</span><span id="line-1145">  public GetSchemaAlterStatusResponse getSchemaAlterStatus(RpcController controller,</span>
-<span class="source-line-no">1146</span><span id="line-1146">    GetSchemaAlterStatusRequest req) throws ServiceException {</span>
-<span class="source-line-no">1147</span><span id="line-1147">    // TODO: currently, we query using the table name on the client side. this</span>
-<span class="source-line-no">1148</span><span id="line-1148">    // may overlap with other table operations or the table operation may</span>
-<span class="source-line-no">1149</span><span id="line-1149">    // have completed before querying this API. We need to refactor to a</span>
-<span class="source-line-no">1150</span><span id="line-1150">    // transaction system in the future to avoid these ambiguities.</span>
-<span class="source-line-no">1151</span><span id="line-1151">    TableName tableName = ProtobufUtil.toTableName(req.getTableName());</span>
-<span class="source-line-no">1152</span><span id="line-1152"></span>
-<span class="source-line-no">1153</span><span id="line-1153">    try {</span>
-<span class="source-line-no">1154</span><span id="line-1154">      server.checkInitialized();</span>
-<span class="source-line-no">1155</span><span id="line-1155">      Pair&lt;Integer, Integer&gt; pair = server.getAssignmentManager().getReopenStatus(tableName);</span>
-<span class="source-line-no">1156</span><span id="line-1156">      GetSchemaAlterStatusResponse.Builder ret = GetSchemaAlterStatusResponse.newBuilder();</span>
-<span class="source-line-no">1157</span><span id="line-1157">      ret.setYetToUpdateRegions(pair.getFirst());</span>
-<span class="source-line-no">1158</span><span id="line-1158">      ret.setTotalRegions(pair.getSecond());</span>
-<span class="source-line-no">1159</span><span id="line-1159">      return ret.build();</span>
-<span class="source-line-no">1160</span><span id="line-1160">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1161</span><span id="line-1161">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1162</span><span id="line-1162">    }</span>
-<span class="source-line-no">1163</span><span id="line-1163">  }</span>
-<span class="source-line-no">1164</span><span id="line-1164"></span>
-<span class="source-line-no">1165</span><span id="line-1165">  /**</span>
-<span class="source-line-no">1166</span><span id="line-1166">   * Get list of TableDescriptors for requested tables.</span>
-<span class="source-line-no">1167</span><span id="line-1167">   * @param c   Unused (set to null).</span>
-<span class="source-line-no">1168</span><span id="line-1168">   * @param req GetTableDescriptorsRequest that contains: - tableNames: requested tables, or if</span>
-<span class="source-line-no">1169</span><span id="line-1169">   *            empty, all are requested.</span>
-<span class="source-line-no">1170</span><span id="line-1170">   */</span>
-<span class="source-line-no">1171</span><span id="line-1171">  @Override</span>
-<span class="source-line-no">1172</span><span id="line-1172">  public GetTableDescriptorsResponse getTableDescriptors(RpcController c,</span>
-<span class="source-line-no">1173</span><span id="line-1173">    GetTableDescriptorsRequest req) throws ServiceException {</span>
-<span class="source-line-no">1174</span><span id="line-1174">    try {</span>
-<span class="source-line-no">1175</span><span id="line-1175">      server.checkInitialized();</span>
-<span class="source-line-no">1176</span><span id="line-1176"></span>
-<span class="source-line-no">1177</span><span id="line-1177">      final String regex = req.hasRegex() ? req.getRegex() : null;</span>
-<span class="source-line-no">1178</span><span id="line-1178">      final String namespace = req.hasNamespace() ? req.getNamespace() : null;</span>
-<span class="source-line-no">1179</span><span id="line-1179">      List&lt;TableName&gt; tableNameList = null;</span>
-<span class="source-line-no">1180</span><span id="line-1180">      if (req.getTableNamesCount() &gt; 0) {</span>
-<span class="source-line-no">1181</span><span id="line-1181">        tableNameList = new ArrayList&lt;TableName&gt;(req.getTableNamesCount());</span>
-<span class="source-line-no">1182</span><span id="line-1182">        for (HBaseProtos.TableName tableNamePB : req.getTableNamesList()) {</span>
-<span class="source-line-no">1183</span><span id="line-1183">          tableNameList.add(ProtobufUtil.toTableName(tableNamePB));</span>
-<span class="source-line-no">1184</span><span id="line-1184">        }</span>
-<span class="source-line-no">1185</span><span id="line-1185">      }</span>
-<span class="source-line-no">1186</span><span id="line-1186"></span>
-<span class="source-line-no">1187</span><span id="line-1187">      List&lt;TableDescriptor&gt; descriptors =</span>
-<span class="source-line-no">1188</span><span id="line-1188">        server.listTableDescriptors(namespace, regex, tableNameList, req.getIncludeSysTables());</span>
-<span class="source-line-no">1189</span><span id="line-1189"></span>
-<span class="source-line-no">1190</span><span id="line-1190">      GetTableDescriptorsResponse.Builder builder = GetTableDescriptorsResponse.newBuilder();</span>
-<span class="source-line-no">1191</span><span id="line-1191">      if (descriptors != null &amp;&amp; descriptors.size() &gt; 0) {</span>
-<span class="source-line-no">1192</span><span id="line-1192">        // Add the table descriptors to the response</span>
-<span class="source-line-no">1193</span><span id="line-1193">        for (TableDescriptor htd : descriptors) {</span>
-<span class="source-line-no">1194</span><span id="line-1194">          builder.addTableSchema(ProtobufUtil.toTableSchema(htd));</span>
-<span class="source-line-no">1195</span><span id="line-1195">        }</span>
-<span class="source-line-no">1196</span><span id="line-1196">      }</span>
-<span class="source-line-no">1197</span><span id="line-1197">      return builder.build();</span>
-<span class="source-line-no">1198</span><span id="line-1198">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1199</span><span id="line-1199">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1200</span><span id="line-1200">    }</span>
-<span class="source-line-no">1201</span><span id="line-1201">  }</span>
-<span class="source-line-no">1202</span><span id="line-1202"></span>
-<span class="source-line-no">1203</span><span id="line-1203">  @Override</span>
-<span class="source-line-no">1204</span><span id="line-1204">  public ListTableDescriptorsByStateResponse listTableDescriptorsByState(RpcController controller,</span>
-<span class="source-line-no">1205</span><span id="line-1205">    ListTableDescriptorsByStateRequest request) throws ServiceException {</span>
-<span class="source-line-no">1206</span><span id="line-1206">    try {</span>
-<span class="source-line-no">1207</span><span id="line-1207">      server.checkInitialized();</span>
-<span class="source-line-no">1208</span><span id="line-1208">      List&lt;TableDescriptor&gt; descriptors = server.listTableDescriptors(null, null, null, false);</span>
-<span class="source-line-no">1209</span><span id="line-1209"></span>
-<span class="source-line-no">1210</span><span id="line-1210">      ListTableDescriptorsByStateResponse.Builder builder =</span>
-<span class="source-line-no">1211</span><span id="line-1211">        ListTableDescriptorsByStateResponse.newBuilder();</span>
-<span class="source-line-no">1212</span><span id="line-1212">      if (descriptors != null &amp;&amp; descriptors.size() &gt; 0) {</span>
-<span class="source-line-no">1213</span><span id="line-1213">        // Add the table descriptors to the response</span>
-<span class="source-line-no">1214</span><span id="line-1214">        TableState.State state =</span>
-<span class="source-line-no">1215</span><span id="line-1215">          request.getIsEnabled() ? TableState.State.ENABLED : TableState.State.DISABLED;</span>
-<span class="source-line-no">1216</span><span id="line-1216">        for (TableDescriptor htd : descriptors) {</span>
-<span class="source-line-no">1217</span><span id="line-1217">          if (server.getTableStateManager().isTableState(htd.getTableName(), state)) {</span>
-<span class="source-line-no">1218</span><span id="line-1218">            builder.addTableSchema(ProtobufUtil.toTableSchema(htd));</span>
-<span class="source-line-no">1219</span><span id="line-1219">          }</span>
-<span class="source-line-no">1220</span><span id="line-1220">        }</span>
-<span class="source-line-no">1221</span><span id="line-1221">      }</span>
-<span class="source-line-no">1222</span><span id="line-1222">      return builder.build();</span>
-<span class="source-line-no">1223</span><span id="line-1223">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1224</span><span id="line-1224">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1225</span><span id="line-1225">    }</span>
-<span class="source-line-no">1226</span><span id="line-1226">  }</span>
-<span class="source-line-no">1227</span><span id="line-1227"></span>
-<span class="source-line-no">1228</span><span id="line-1228">  /**</span>
-<span class="source-line-no">1229</span><span id="line-1229">   * Get list of userspace table names</span>
-<span class="source-line-no">1230</span><span id="line-1230">   * @param controller Unused (set to null).</span>
-<span class="source-line-no">1231</span><span id="line-1231">   * @param req        GetTableNamesRequest</span>
-<span class="source-line-no">1232</span><span id="line-1232">   */</span>
-<span class="source-line-no">1233</span><span id="line-1233">  @Override</span>
-<span class="source-line-no">1234</span><span id="line-1234">  public GetTableNamesResponse getTableNames(RpcController controller, GetTableNamesRequest req)</span>
-<span class="source-line-no">1235</span><span id="line-1235">    throws ServiceException {</span>
-<span class="source-line-no">1236</span><span id="line-1236">    try {</span>
-<span class="source-line-no">1237</span><span id="line-1237">      server.checkServiceStarted();</span>
-<span class="source-line-no">1238</span><span id="line-1238"></span>
-<span class="source-line-no">1239</span><span id="line-1239">      final String regex = req.hasRegex() ? req.getRegex() : null;</span>
-<span class="source-line-no">1240</span><span id="line-1240">      final String namespace = req.hasNamespace() ? req.getNamespace() : null;</span>
-<span class="source-line-no">1241</span><span id="line-1241">      List&lt;TableName&gt; tableNames =</span>
-<span class="source-line-no">1242</span><span id="line-1242">        server.listTableNames(namespace, regex, req.getIncludeSysTables());</span>
-<span class="source-line-no">1243</span><span id="line-1243"></span>
-<span class="source-line-no">1244</span><span id="line-1244">      GetTableNamesResponse.Builder builder = GetTableNamesResponse.newBuilder();</span>
-<span class="source-line-no">1245</span><span id="line-1245">      if (tableNames != null &amp;&amp; tableNames.size() &gt; 0) {</span>
-<span class="source-line-no">1246</span><span id="line-1246">        // Add the table names to the response</span>
-<span class="source-line-no">1247</span><span id="line-1247">        for (TableName table : tableNames) {</span>
-<span class="source-line-no">1248</span><span id="line-1248">          builder.addTableNames(ProtobufUtil.toProtoTableName(table));</span>
-<span class="source-line-no">1249</span><span id="line-1249">        }</span>
-<span class="source-line-no">1250</span><span id="line-1250">      }</span>
-<span class="source-line-no">1251</span><span id="line-1251">      return builder.build();</span>
-<span class="source-line-no">1252</span><span id="line-1252">    } catch (IOException e) {</span>
-<span class="source-line-no">1253</span><span id="line-1253">      throw new ServiceException(e);</span>
-<span class="source-line-no">1254</span><span id="line-1254">    }</span>
-<span class="source-line-no">1255</span><span id="line-1255">  }</span>
-<span class="source-line-no">1256</span><span id="line-1256"></span>
-<span class="source-line-no">1257</span><span id="line-1257">  @Override</span>
-<span class="source-line-no">1258</span><span id="line-1258">  public ListTableNamesByStateResponse listTableNamesByState(RpcController controller,</span>
-<span class="source-line-no">1259</span><span id="line-1259">    ListTableNamesByStateRequest request) throws ServiceException {</span>
-<span class="source-line-no">1260</span><span id="line-1260">    try {</span>
-<span class="source-line-no">1261</span><span id="line-1261">      server.checkServiceStarted();</span>
-<span class="source-line-no">1262</span><span id="line-1262">      List&lt;TableName&gt; tableNames = server.listTableNames(null, null, false);</span>
-<span class="source-line-no">1263</span><span id="line-1263">      ListTableNamesByStateResponse.Builder builder = ListTableNamesByStateResponse.newBuilder();</span>
-<span class="source-line-no">1264</span><span id="line-1264">      if (tableNames != null &amp;&amp; tableNames.size() &gt; 0) {</span>
-<span class="source-line-no">1265</span><span id="line-1265">        // Add the disabled table names to the response</span>
-<span class="source-line-no">1266</span><span id="line-1266">        TableState.State state =</span>
-<span class="source-line-no">1267</span><span id="line-1267">          request.getIsEnabled() ? TableState.State.ENABLED : TableState.State.DISABLED;</span>
-<span class="source-line-no">1268</span><span id="line-1268">        for (TableName table : tableNames) {</span>
-<span class="source-line-no">1269</span><span id="line-1269">          if (server.getTableStateManager().isTableState(table, state)) {</span>
-<span class="source-line-no">1270</span><span id="line-1270">            builder.addTableNames(ProtobufUtil.toProtoTableName(table));</span>
-<span class="source-line-no">1271</span><span id="line-1271">          }</span>
-<span class="source-line-no">1272</span><span id="line-1272">        }</span>
-<span class="source-line-no">1273</span><span id="line-1273">      }</span>
-<span class="source-line-no">1274</span><span id="line-1274">      return builder.build();</span>
-<span class="source-line-no">1275</span><span id="line-1275">    } catch (IOException e) {</span>
-<span class="source-line-no">1276</span><span id="line-1276">      throw new ServiceException(e);</span>
-<span class="source-line-no">1277</span><span id="line-1277">    }</span>
-<span class="source-line-no">1278</span><span id="line-1278">  }</span>
-<span class="source-line-no">1279</span><span id="line-1279"></span>
-<span class="source-line-no">1280</span><span id="line-1280">  @Override</span>
-<span class="source-line-no">1281</span><span id="line-1281">  public GetTableStateResponse getTableState(RpcController controller, GetTableStateRequest request)</span>
-<span class="source-line-no">1282</span><span id="line-1282">    throws ServiceException {</span>
-<span class="source-line-no">1283</span><span id="line-1283">    try {</span>
-<span class="source-line-no">1284</span><span id="line-1284">      server.checkServiceStarted();</span>
-<span class="source-line-no">1285</span><span id="line-1285">      TableName tableName = ProtobufUtil.toTableName(request.getTableName());</span>
-<span class="source-line-no">1286</span><span id="line-1286">      TableState ts = server.getTableStateManager().getTableState(tableName);</span>
-<span class="source-line-no">1287</span><span id="line-1287">      GetTableStateResponse.Builder builder = GetTableStateResponse.newBuilder();</span>
-<span class="source-line-no">1288</span><span id="line-1288">      builder.setTableState(ts.convert());</span>
-<span class="source-line-no">1289</span><span id="line-1289">      return builder.build();</span>
-<span class="source-line-no">1290</span><span id="line-1290">    } catch (IOException e) {</span>
-<span class="source-line-no">1291</span><span id="line-1291">      throw new ServiceException(e);</span>
-<span class="source-line-no">1292</span><span id="line-1292">    }</span>
-<span class="source-line-no">1293</span><span id="line-1293">  }</span>
-<span class="source-line-no">1294</span><span id="line-1294"></span>
-<span class="source-line-no">1295</span><span id="line-1295">  @Override</span>
-<span class="source-line-no">1296</span><span id="line-1296">  public IsCatalogJanitorEnabledResponse isCatalogJanitorEnabled(RpcController c,</span>
-<span class="source-line-no">1297</span><span id="line-1297">    IsCatalogJanitorEnabledRequest req) throws ServiceException {</span>
-<span class="source-line-no">1298</span><span id="line-1298">    return IsCatalogJanitorEnabledResponse.newBuilder().setValue(server.isCatalogJanitorEnabled())</span>
-<span class="source-line-no">1299</span><span id="line-1299">      .build();</span>
-<span class="source-line-no">1300</span><span id="line-1300">  }</span>
-<span class="source-line-no">1301</span><span id="line-1301"></span>
-<span class="source-line-no">1302</span><span id="line-1302">  @Override</span>
-<span class="source-line-no">1303</span><span id="line-1303">  public IsCleanerChoreEnabledResponse isCleanerChoreEnabled(RpcController c,</span>
-<span class="source-line-no">1304</span><span id="line-1304">    IsCleanerChoreEnabledRequest req) throws ServiceException {</span>
-<span class="source-line-no">1305</span><span id="line-1305">    return IsCleanerChoreEnabledResponse.newBuilder().setValue(server.isCleanerChoreEnabled())</span>
-<span class="source-line-no">1306</span><span id="line-1306">      .build();</span>
-<span class="source-line-no">1307</span><span id="line-1307">  }</span>
-<span class="source-line-no">1308</span><span id="line-1308"></span>
-<span class="source-line-no">1309</span><span id="line-1309">  @Override</span>
-<span class="source-line-no">1310</span><span id="line-1310">  public IsMasterRunningResponse isMasterRunning(RpcController c, IsMasterRunningRequest req)</span>
-<span class="source-line-no">1311</span><span id="line-1311">    throws ServiceException {</span>
-<span class="source-line-no">1312</span><span id="line-1312">    try {</span>
-<span class="source-line-no">1313</span><span id="line-1313">      server.checkServiceStarted();</span>
-<span class="source-line-no">1314</span><span id="line-1314">      return IsMasterRunningResponse.newBuilder().setIsMasterRunning(!server.isStopped()).build();</span>
-<span class="source-line-no">1315</span><span id="line-1315">    } catch (IOException e) {</span>
-<span class="source-line-no">1316</span><span id="line-1316">      throw new ServiceException(e);</span>
-<span class="source-line-no">1317</span><span id="line-1317">    }</span>
-<span class="source-line-no">1318</span><span id="line-1318">  }</span>
-<span class="source-line-no">1319</span><span id="line-1319"></span>
-<span class="source-line-no">1320</span><span id="line-1320">  /**</span>
-<span class="source-line-no">1321</span><span id="line-1321">   * Checks if the specified procedure is done.</span>
-<span class="source-line-no">1322</span><span id="line-1322">   * @return true if the procedure is done, false if the procedure is in the process of completing</span>
-<span class="source-line-no">1323</span><span id="line-1323">   * @throws ServiceException if invalid procedure or failed procedure with progress failure reason.</span>
-<span class="source-line-no">1324</span><span id="line-1324">   */</span>
-<span class="source-line-no">1325</span><span id="line-1325">  @Override</span>
-<span class="source-line-no">1326</span><span id="line-1326">  public IsProcedureDoneResponse isProcedureDone(RpcController controller,</span>
-<span class="source-line-no">1327</span><span id="line-1327">    IsProcedureDoneRequest request) throws ServiceException {</span>
-<span class="source-line-no">1328</span><span id="line-1328">    try {</span>
-<span class="source-line-no">1329</span><span id="line-1329">      server.checkInitialized();</span>
-<span class="source-line-no">1330</span><span id="line-1330">      ProcedureDescription desc = request.getProcedure();</span>
-<span class="source-line-no">1331</span><span id="line-1331">      MasterProcedureManager mpm =</span>
-<span class="source-line-no">1332</span><span id="line-1332">        server.getMasterProcedureManagerHost().getProcedureManager(desc.getSignature());</span>
-<span class="source-line-no">1333</span><span id="line-1333">      if (mpm == null) {</span>
-<span class="source-line-no">1334</span><span id="line-1334">        throw new ServiceException("The procedure is not registered: " + desc.getSignature());</span>
-<span class="source-line-no">1335</span><span id="line-1335">      }</span>
-<span class="source-line-no">1336</span><span id="line-1336">      LOG.debug("Checking to see if procedure from request:" + desc.getSignature() + " is done");</span>
-<span class="source-line-no">1337</span><span id="line-1337"></span>
-<span class="source-line-no">1338</span><span id="line-1338">      IsProcedureDoneResponse.Builder builder = IsProcedureDoneResponse.newBuilder();</span>
-<span class="source-line-no">1339</span><span id="line-1339">      boolean done = mpm.isProcedureDone(desc);</span>
-<span class="source-line-no">1340</span><span id="line-1340">      builder.setDone(done);</span>
-<span class="source-line-no">1341</span><span id="line-1341">      return builder.build();</span>
-<span class="source-line-no">1342</span><span id="line-1342">    } catch (ForeignException e) {</span>
-<span class="source-line-no">1343</span><span id="line-1343">      throw new ServiceException(e.getCause());</span>
-<span class="source-line-no">1344</span><span id="line-1344">    } catch (IOException e) {</span>
-<span class="source-line-no">1345</span><span id="line-1345">      throw new ServiceException(e);</span>
-<span class="source-line-no">1346</span><span id="line-1346">    }</span>
-<span class="source-line-no">1347</span><span id="line-1347">  }</span>
-<span class="source-line-no">1348</span><span id="line-1348"></span>
-<span class="source-line-no">1349</span><span id="line-1349">  /**</span>
-<span class="source-line-no">1350</span><span id="line-1350">   * Checks if the specified snapshot is done.</span>
-<span class="source-line-no">1351</span><span id="line-1351">   * @return true if the snapshot is in file system ready to use, false if the snapshot is in the</span>
-<span class="source-line-no">1352</span><span id="line-1352">   *         process of completing</span>
-<span class="source-line-no">1353</span><span id="line-1353">   * @throws ServiceException wrapping UnknownSnapshotException if invalid snapshot, or a wrapped</span>
-<span class="source-line-no">1354</span><span id="line-1354">   *                          HBaseSnapshotException with progress failure reason.</span>
-<span class="source-line-no">1355</span><span id="line-1355">   */</span>
-<span class="source-line-no">1356</span><span id="line-1356">  @Override</span>
-<span class="source-line-no">1357</span><span id="line-1357">  public IsSnapshotDoneResponse isSnapshotDone(RpcController controller,</span>
-<span class="source-line-no">1358</span><span id="line-1358">    IsSnapshotDoneRequest request) throws ServiceException {</span>
-<span class="source-line-no">1359</span><span id="line-1359">    LOG.debug("Checking to see if snapshot from request:"</span>
-<span class="source-line-no">1360</span><span id="line-1360">      + ClientSnapshotDescriptionUtils.toString(request.getSnapshot()) + " is done");</span>
-<span class="source-line-no">1361</span><span id="line-1361">    try {</span>
-<span class="source-line-no">1362</span><span id="line-1362">      server.checkInitialized();</span>
-<span class="source-line-no">1363</span><span id="line-1363">      IsSnapshotDoneResponse.Builder builder = IsSnapshotDoneResponse.newBuilder();</span>
-<span class="source-line-no">1364</span><span id="line-1364">      boolean done = server.snapshotManager.isSnapshotDone(request.getSnapshot());</span>
-<span class="source-line-no">1365</span><span id="line-1365">      builder.setDone(done);</span>
-<span class="source-line-no">1366</span><span id="line-1366">      return builder.build();</span>
-<span class="source-line-no">1367</span><span id="line-1367">    } catch (ForeignException e) {</span>
-<span class="source-line-no">1368</span><span id="line-1368">      throw new ServiceException(e.getCause());</span>
-<span class="source-line-no">1369</span><span id="line-1369">    } catch (IOException e) {</span>
-<span class="source-line-no">1370</span><span id="line-1370">      throw new ServiceException(e);</span>
-<span class="source-line-no">1371</span><span id="line-1371">    }</span>
-<span class="source-line-no">1372</span><span id="line-1372">  }</span>
-<span class="source-line-no">1373</span><span id="line-1373"></span>
-<span class="source-line-no">1374</span><span id="line-1374">  @Override</span>
-<span class="source-line-no">1375</span><span id="line-1375">  public GetProcedureResultResponse getProcedureResult(RpcController controller,</span>
-<span class="source-line-no">1376</span><span id="line-1376">    GetProcedureResultRequest request) throws ServiceException {</span>
-<span class="source-line-no">1377</span><span id="line-1377">    LOG.debug("Checking to see if procedure is done pid={}", request.getProcId());</span>
-<span class="source-line-no">1378</span><span id="line-1378">    try {</span>
-<span class="source-line-no">1379</span><span id="line-1379">      server.checkInitialized();</span>
-<span class="source-line-no">1380</span><span id="line-1380">      GetProcedureResultResponse.Builder builder = GetProcedureResultResponse.newBuilder();</span>
-<span class="source-line-no">1381</span><span id="line-1381">      long procId = request.getProcId();</span>
-<span class="source-line-no">1382</span><span id="line-1382">      ProcedureExecutor&lt;?&gt; executor = server.getMasterProcedureExecutor();</span>
-<span class="source-line-no">1383</span><span id="line-1383">      Procedure&lt;?&gt; result = executor.getResultOrProcedure(procId);</span>
-<span class="source-line-no">1384</span><span id="line-1384">      if (result != null) {</span>
-<span class="source-line-no">1385</span><span id="line-1385">        builder.setSubmittedTime(result.getSubmittedTime());</span>
-<span class="source-line-no">1386</span><span id="line-1386">        builder.setLastUpdate(result.getLastUpdate());</span>
-<span class="source-line-no">1387</span><span id="line-1387">        if (executor.isFinished(procId)) {</span>
-<span class="source-line-no">1388</span><span id="line-1388">          builder.setState(GetProcedureResultResponse.State.FINISHED);</span>
-<span class="source-line-no">1389</span><span id="line-1389">          if (result.isFailed()) {</span>
-<span class="source-line-no">1390</span><span id="line-1390">            IOException exception = MasterProcedureUtil.unwrapRemoteIOException(result);</span>
-<span class="source-line-no">1391</span><span id="line-1391">            builder.setException(ForeignExceptionUtil.toProtoForeignException(exception));</span>
-<span class="source-line-no">1392</span><span id="line-1392">          }</span>
-<span class="source-line-no">1393</span><span id="line-1393">          byte[] resultData = result.getResult();</span>
-<span class="source-line-no">1394</span><span id="line-1394">          if (resultData != null) {</span>
-<span class="source-line-no">1395</span><span id="line-1395">            builder.setResult(UnsafeByteOperations.unsafeWrap(resultData));</span>
-<span class="source-line-no">1396</span><span id="line-1396">          }</span>
-<span class="source-line-no">1397</span><span id="line-1397">          server.getMasterProcedureExecutor().removeResult(request.getProcId());</span>
-<span class="source-line-no">1398</span><span id="line-1398">        } else {</span>
-<span class="source-line-no">1399</span><span id="line-1399">          builder.setState(GetProcedureResultResponse.State.RUNNING);</span>
-<span class="source-line-no">1400</span><span id="line-1400">        }</span>
-<span class="source-line-no">1401</span><span id="line-1401">      } else {</span>
-<span class="source-line-no">1402</span><span id="line-1402">        builder.setState(GetProcedureResultResponse.State.NOT_FOUND);</span>
-<span class="source-line-no">1403</span><span id="line-1403">      }</span>
-<span class="source-line-no">1404</span><span id="line-1404">      return builder.build();</span>
-<span class="source-line-no">1405</span><span id="line-1405">    } catch (IOException e) {</span>
-<span class="source-line-no">1406</span><span id="line-1406">      throw new ServiceException(e);</span>
-<span class="source-line-no">1407</span><span id="line-1407">    }</span>
-<span class="source-line-no">1408</span><span id="line-1408">  }</span>
-<span class="source-line-no">1409</span><span id="line-1409"></span>
-<span class="source-line-no">1410</span><span id="line-1410">  @Override</span>
-<span class="source-line-no">1411</span><span id="line-1411">  public AbortProcedureResponse abortProcedure(RpcController rpcController,</span>
-<span class="source-line-no">1412</span><span id="line-1412">    AbortProcedureRequest request) throws ServiceException {</span>
-<span class="source-line-no">1413</span><span id="line-1413">    try {</span>
-<span class="source-line-no">1414</span><span id="line-1414">      AbortProcedureResponse.Builder response = AbortProcedureResponse.newBuilder();</span>
-<span class="source-line-no">1415</span><span id="line-1415">      boolean abortResult =</span>
-<span class="source-line-no">1416</span><span id="line-1416">        server.abortProcedure(request.getProcId(), request.getMayInterruptIfRunning());</span>
-<span class="source-line-no">1417</span><span id="line-1417">      response.setIsProcedureAborted(abortResult);</span>
-<span class="source-line-no">1418</span><span id="line-1418">      return response.build();</span>
-<span class="source-line-no">1419</span><span id="line-1419">    } catch (IOException e) {</span>
-<span class="source-line-no">1420</span><span id="line-1420">      throw new ServiceException(e);</span>
-<span class="source-line-no">1421</span><span id="line-1421">    }</span>
-<span class="source-line-no">1422</span><span id="line-1422">  }</span>
-<span class="source-line-no">1423</span><span id="line-1423"></span>
-<span class="source-line-no">1424</span><span id="line-1424">  @Override</span>
-<span class="source-line-no">1425</span><span id="line-1425">  public ListNamespaceDescriptorsResponse listNamespaceDescriptors(RpcController c,</span>
-<span class="source-line-no">1426</span><span id="line-1426">    ListNamespaceDescriptorsRequest request) throws ServiceException {</span>
-<span class="source-line-no">1427</span><span id="line-1427">    try {</span>
-<span class="source-line-no">1428</span><span id="line-1428">      ListNamespaceDescriptorsResponse.Builder response =</span>
-<span class="source-line-no">1429</span><span id="line-1429">        ListNamespaceDescriptorsResponse.newBuilder();</span>
-<span class="source-line-no">1430</span><span id="line-1430">      for (NamespaceDescriptor ns : server.getNamespaces()) {</span>
-<span class="source-line-no">1431</span><span id="line-1431">        response.addNamespaceDescriptor(ProtobufUtil.toProtoNamespaceDescriptor(ns));</span>
-<span class="source-line-no">1432</span><span id="line-1432">      }</span>
-<span class="source-line-no">1433</span><span id="line-1433">      return response.build();</span>
-<span class="source-line-no">1434</span><span id="line-1434">    } catch (IOException e) {</span>
-<span class="source-line-no">1435</span><span id="line-1435">      throw new ServiceException(e);</span>
-<span class="source-line-no">1436</span><span id="line-1436">    }</span>
-<span class="source-line-no">1437</span><span id="line-1437">  }</span>
-<span class="source-line-no">1438</span><span id="line-1438"></span>
-<span class="source-line-no">1439</span><span id="line-1439">  @Override</span>
-<span class="source-line-no">1440</span><span id="line-1440">  public GetProceduresResponse getProcedures(RpcController rpcController,</span>
-<span class="source-line-no">1441</span><span id="line-1441">    GetProceduresRequest request) throws ServiceException {</span>
-<span class="source-line-no">1442</span><span id="line-1442">    try {</span>
-<span class="source-line-no">1443</span><span id="line-1443">      final GetProceduresResponse.Builder response = GetProceduresResponse.newBuilder();</span>
-<span class="source-line-no">1444</span><span id="line-1444">      for (Procedure&lt;?&gt; p : server.getProcedures()) {</span>
-<span class="source-line-no">1445</span><span id="line-1445">        response.addProcedure(ProcedureUtil.convertToProtoProcedure(p));</span>
-<span class="source-line-no">1446</span><span id="line-1446">      }</span>
-<span class="source-line-no">1447</span><span id="line-1447">      return response.build();</span>
-<span class="source-line-no">1448</span><span id="line-1448">    } catch (IOException e) {</span>
-<span class="source-line-no">1449</span><span id="line-1449">      throw new ServiceException(e);</span>
-<span class="source-line-no">1450</span><span id="line-1450">    }</span>
-<span class="source-line-no">1451</span><span id="line-1451">  }</span>
-<span class="source-line-no">1452</span><span id="line-1452"></span>
-<span class="source-line-no">1453</span><span id="line-1453">  @Override</span>
-<span class="source-line-no">1454</span><span id="line-1454">  public GetLocksResponse getLocks(RpcController controller, GetLocksRequest request)</span>
-<span class="source-line-no">1455</span><span id="line-1455">    throws ServiceException {</span>
-<span class="source-line-no">1456</span><span id="line-1456">    try {</span>
-<span class="source-line-no">1457</span><span id="line-1457">      final GetLocksResponse.Builder builder = GetLocksResponse.newBuilder();</span>
-<span class="source-line-no">1458</span><span id="line-1458"></span>
-<span class="source-line-no">1459</span><span id="line-1459">      for (LockedResource lockedResource : server.getLocks()) {</span>
-<span class="source-line-no">1460</span><span id="line-1460">        builder.addLock(ProcedureUtil.convertToProtoLockedResource(lockedResource));</span>
-<span class="source-line-no">1461</span><span id="line-1461">      }</span>
-<span class="source-line-no">1462</span><span id="line-1462"></span>
-<span class="source-line-no">1463</span><span id="line-1463">      return builder.build();</span>
-<span class="source-line-no">1464</span><span id="line-1464">    } catch (IOException e) {</span>
-<span class="source-line-no">1465</span><span id="line-1465">      throw new ServiceException(e);</span>
-<span class="source-line-no">1466</span><span id="line-1466">    }</span>
-<span class="source-line-no">1467</span><span id="line-1467">  }</span>
-<span class="source-line-no">1468</span><span id="line-1468"></span>
-<span class="source-line-no">1469</span><span id="line-1469">  @Override</span>
-<span class="source-line-no">1470</span><span id="line-1470">  public ListTableDescriptorsByNamespaceResponse listTableDescriptorsByNamespace(RpcController c,</span>
-<span class="source-line-no">1471</span><span id="line-1471">    ListTableDescriptorsByNamespaceRequest request) throws ServiceException {</span>
-<span class="source-line-no">1472</span><span id="line-1472">    try {</span>
-<span class="source-line-no">1473</span><span id="line-1473">      ListTableDescriptorsByNamespaceResponse.Builder b =</span>
-<span class="source-line-no">1474</span><span id="line-1474">        ListTableDescriptorsByNamespaceResponse.newBuilder();</span>
-<span class="source-line-no">1475</span><span id="line-1475">      for (TableDescriptor htd : server</span>
-<span class="source-line-no">1476</span><span id="line-1476">        .listTableDescriptorsByNamespace(request.getNamespaceName())) {</span>
-<span class="source-line-no">1477</span><span id="line-1477">        b.addTableSchema(ProtobufUtil.toTableSchema(htd));</span>
-<span class="source-line-no">1478</span><span id="line-1478">      }</span>
-<span class="source-line-no">1479</span><span id="line-1479">      return b.build();</span>
-<span class="source-line-no">1480</span><span id="line-1480">    } catch (IOException e) {</span>
-<span class="source-line-no">1481</span><span id="line-1481">      throw new ServiceException(e);</span>
-<span class="source-line-no">1482</span><span id="line-1482">    }</span>
-<span class="source-line-no">1483</span><span id="line-1483">  }</span>
-<span class="source-line-no">1484</span><span id="line-1484"></span>
-<span class="source-line-no">1485</span><span id="line-1485">  @Override</span>
-<span class="source-line-no">1486</span><span id="line-1486">  public ListTableNamesByNamespaceResponse listTableNamesByNamespace(RpcController c,</span>
-<span class="source-line-no">1487</span><span id="line-1487">    ListTableNamesByNamespaceRequest request) throws ServiceException {</span>
-<span class="source-line-no">1488</span><span id="line-1488">    try {</span>
-<span class="source-line-no">1489</span><span id="line-1489">      ListTableNamesByNamespaceResponse.Builder b = ListTableNamesByNamespaceResponse.newBuilder();</span>
-<span class="source-line-no">1490</span><span id="line-1490">      for (TableName tableName : server.listTableNamesByNamespace(request.getNamespaceName())) {</span>
-<span class="source-line-no">1491</span><span id="line-1491">        b.addTableName(ProtobufUtil.toProtoTableName(tableName));</span>
-<span class="source-line-no">1492</span><span id="line-1492">      }</span>
-<span class="source-line-no">1493</span><span id="line-1493">      return b.build();</span>
-<span class="source-line-no">1494</span><span id="line-1494">    } catch (IOException e) {</span>
-<span class="source-line-no">1495</span><span id="line-1495">      throw new ServiceException(e);</span>
-<span class="source-line-no">1496</span><span id="line-1496">    }</span>
-<span class="source-line-no">1497</span><span id="line-1497">  }</span>
-<span class="source-line-no">1498</span><span id="line-1498"></span>
-<span class="source-line-no">1499</span><span id="line-1499">  @Override</span>
-<span class="source-line-no">1500</span><span id="line-1500">  public ModifyColumnResponse modifyColumn(RpcController controller, ModifyColumnRequest req)</span>
-<span class="source-line-no">1501</span><span id="line-1501">    throws ServiceException {</span>
-<span class="source-line-no">1502</span><span id="line-1502">    try {</span>
-<span class="source-line-no">1503</span><span id="line-1503">      long procId = server.modifyColumn(ProtobufUtil.toTableName(req.getTableName()),</span>
-<span class="source-line-no">1504</span><span id="line-1504">        ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()), req.getNonceGroup(),</span>
-<span class="source-line-no">1505</span><span id="line-1505">        req.getNonce());</span>
-<span class="source-line-no">1506</span><span id="line-1506">      if (procId == -1) {</span>
-<span class="source-line-no">1507</span><span id="line-1507">        // This mean operation was not performed in server, so do not set any procId</span>
-<span class="source-line-no">1508</span><span id="line-1508">        return ModifyColumnResponse.newBuilder().build();</span>
-<span class="source-line-no">1509</span><span id="line-1509">      } else {</span>
-<span class="source-line-no">1510</span><span id="line-1510">        return ModifyColumnResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">1511</span><span id="line-1511">      }</span>
-<span class="source-line-no">1512</span><span id="line-1512">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1513</span><span id="line-1513">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1514</span><span id="line-1514">    }</span>
-<span class="source-line-no">1515</span><span id="line-1515">  }</span>
-<span class="source-line-no">1516</span><span id="line-1516"></span>
-<span class="source-line-no">1517</span><span id="line-1517">  @Override</span>
-<span class="source-line-no">1518</span><span id="line-1518">  public ModifyColumnStoreFileTrackerResponse modifyColumnStoreFileTracker(RpcController controller,</span>
-<span class="source-line-no">1519</span><span id="line-1519">    ModifyColumnStoreFileTrackerRequest req) throws ServiceException {</span>
-<span class="source-line-no">1520</span><span id="line-1520">    try {</span>
-<span class="source-line-no">1521</span><span id="line-1521">      long procId =</span>
-<span class="source-line-no">1522</span><span id="line-1522">        server.modifyColumnStoreFileTracker(ProtobufUtil.toTableName(req.getTableName()),</span>
-<span class="source-line-no">1523</span><span id="line-1523">          req.getFamily().toByteArray(), req.getDstSft(), req.getNonceGroup(), req.getNonce());</span>
-<span class="source-line-no">1524</span><span id="line-1524">      return ModifyColumnStoreFileTrackerResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">1525</span><span id="line-1525">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1526</span><span id="line-1526">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1527</span><span id="line-1527">    }</span>
-<span class="source-line-no">1528</span><span id="line-1528">  }</span>
-<span class="source-line-no">1529</span><span id="line-1529"></span>
-<span class="source-line-no">1530</span><span id="line-1530">  @Override</span>
-<span class="source-line-no">1531</span><span id="line-1531">  public ModifyNamespaceResponse modifyNamespace(RpcController controller,</span>
-<span class="source-line-no">1532</span><span id="line-1532">    ModifyNamespaceRequest request) throws ServiceException {</span>
-<span class="source-line-no">1533</span><span id="line-1533">    try {</span>
-<span class="source-line-no">1534</span><span id="line-1534">      long procId =</span>
-<span class="source-line-no">1535</span><span id="line-1535">        server.modifyNamespace(ProtobufUtil.toNamespaceDescriptor(request.getNamespaceDescriptor()),</span>
-<span class="source-line-no">1536</span><span id="line-1536">          request.getNonceGroup(), request.getNonce());</span>
-<span class="source-line-no">1537</span><span id="line-1537">      return ModifyNamespaceResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">1538</span><span id="line-1538">    } catch (IOException e) {</span>
-<span class="source-line-no">1539</span><span id="line-1539">      throw new ServiceException(e);</span>
-<span class="source-line-no">1540</span><span id="line-1540">    }</span>
-<span class="source-line-no">1541</span><span id="line-1541">  }</span>
-<span class="source-line-no">1542</span><span id="line-1542"></span>
-<span class="source-line-no">1543</span><span id="line-1543">  @Override</span>
-<span class="source-line-no">1544</span><span id="line-1544">  public ModifyTableResponse modifyTable(RpcController controller, ModifyTableRequest req)</span>
-<span class="source-line-no">1545</span><span id="line-1545">    throws ServiceException {</span>
-<span class="source-line-no">1546</span><span id="line-1546">    try {</span>
-<span class="source-line-no">1547</span><span id="line-1547">      long procId = server.modifyTable(ProtobufUtil.toTableName(req.getTableName()),</span>
-<span class="source-line-no">1548</span><span id="line-1548">        ProtobufUtil.toTableDescriptor(req.getTableSchema()), req.getNonceGroup(), req.getNonce(),</span>
-<span class="source-line-no">1549</span><span id="line-1549">        req.getReopenRegions());</span>
-<span class="source-line-no">1550</span><span id="line-1550">      return ModifyTableResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">1551</span><span id="line-1551">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1552</span><span id="line-1552">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1553</span><span id="line-1553">    }</span>
-<span class="source-line-no">1554</span><span id="line-1554">  }</span>
-<span class="source-line-no">1555</span><span id="line-1555"></span>
-<span class="source-line-no">1556</span><span id="line-1556">  @Override</span>
-<span class="source-line-no">1557</span><span id="line-1557">  public ModifyTableStoreFileTrackerResponse modifyTableStoreFileTracker(RpcController controller,</span>
-<span class="source-line-no">1558</span><span id="line-1558">    ModifyTableStoreFileTrackerRequest req) throws ServiceException {</span>
-<span class="source-line-no">1559</span><span id="line-1559">    try {</span>
-<span class="source-line-no">1560</span><span id="line-1560">      long procId = server.modifyTableStoreFileTracker(ProtobufUtil.toTableName(req.getTableName()),</span>
-<span class="source-line-no">1561</span><span id="line-1561">        req.getDstSft(), req.getNonceGroup(), req.getNonce());</span>
-<span class="source-line-no">1562</span><span id="line-1562">      return ModifyTableStoreFileTrackerResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">1563</span><span id="line-1563">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1564</span><span id="line-1564">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1565</span><span id="line-1565">    }</span>
-<span class="source-line-no">1566</span><span id="line-1566">  }</span>
-<span class="source-line-no">1567</span><span id="line-1567"></span>
-<span class="source-line-no">1568</span><span id="line-1568">  @Override</span>
-<span class="source-line-no">1569</span><span id="line-1569">  public MoveRegionResponse moveRegion(RpcController controller, MoveRegionRequest req)</span>
-<span class="source-line-no">1570</span><span id="line-1570">    throws ServiceException {</span>
-<span class="source-line-no">1571</span><span id="line-1571">    final byte[] encodedRegionName = req.getRegion().getValue().toByteArray();</span>
-<span class="source-line-no">1572</span><span id="line-1572">    RegionSpecifierType type = req.getRegion().getType();</span>
-<span class="source-line-no">1573</span><span id="line-1573">    final byte[] destServerName = (req.hasDestServerName())</span>
-<span class="source-line-no">1574</span><span id="line-1574">      ? Bytes.toBytes(ProtobufUtil.toServerName(req.getDestServerName()).getServerName())</span>
-<span class="source-line-no">1575</span><span id="line-1575">      : null;</span>
-<span class="source-line-no">1576</span><span id="line-1576">    MoveRegionResponse mrr = MoveRegionResponse.newBuilder().build();</span>
-<span class="source-line-no">1577</span><span id="line-1577"></span>
-<span class="source-line-no">1578</span><span id="line-1578">    if (type != RegionSpecifierType.ENCODED_REGION_NAME) {</span>
-<span class="source-line-no">1579</span><span id="line-1579">      LOG.warn("moveRegion specifier type: expected: " + RegionSpecifierType.ENCODED_REGION_NAME</span>
-<span class="source-line-no">1580</span><span id="line-1580">        + " actual: " + type);</span>
-<span class="source-line-no">1581</span><span id="line-1581">    }</span>
-<span class="source-line-no">1582</span><span id="line-1582"></span>
-<span class="source-line-no">1583</span><span id="line-1583">    try {</span>
-<span class="source-line-no">1584</span><span id="line-1584">      server.checkInitialized();</span>
-<span class="source-line-no">1585</span><span id="line-1585">      server.move(encodedRegionName, destServerName);</span>
-<span class="source-line-no">1586</span><span id="line-1586">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1587</span><span id="line-1587">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1588</span><span id="line-1588">    }</span>
-<span class="source-line-no">1589</span><span id="line-1589">    return mrr;</span>
-<span class="source-line-no">1590</span><span id="line-1590">  }</span>
-<span class="source-line-no">1591</span><span id="line-1591"></span>
-<span class="source-line-no">1592</span><span id="line-1592">  /**</span>
-<span class="source-line-no">1593</span><span id="line-1593">   * Offline specified region from master's in-memory state. It will not attempt to reassign the</span>
-<span class="source-line-no">1594</span><span id="line-1594">   * region as in unassign. This is a special method that should be used by experts or hbck.</span>
-<span class="source-line-no">1595</span><span id="line-1595">   */</span>
-<span class="source-line-no">1596</span><span id="line-1596">  @Override</span>
-<span class="source-line-no">1597</span><span id="line-1597">  public OfflineRegionResponse offlineRegion(RpcController controller, OfflineRegionRequest request)</span>
-<span class="source-line-no">1598</span><span id="line-1598">    throws ServiceException {</span>
-<span class="source-line-no">1599</span><span id="line-1599">    try {</span>
-<span class="source-line-no">1600</span><span id="line-1600">      server.checkInitialized();</span>
-<span class="source-line-no">1601</span><span id="line-1601"></span>
-<span class="source-line-no">1602</span><span id="line-1602">      final RegionSpecifierType type = request.getRegion().getType();</span>
-<span class="source-line-no">1603</span><span id="line-1603">      if (type != RegionSpecifierType.REGION_NAME) {</span>
-<span class="source-line-no">1604</span><span id="line-1604">        LOG.warn("moveRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME</span>
-<span class="source-line-no">1605</span><span id="line-1605">          + " actual: " + type);</span>
-<span class="source-line-no">1606</span><span id="line-1606">      }</span>
-<span class="source-line-no">1607</span><span id="line-1607"></span>
-<span class="source-line-no">1608</span><span id="line-1608">      final byte[] regionName = request.getRegion().getValue().toByteArray();</span>
-<span class="source-line-no">1609</span><span id="line-1609">      final RegionInfo hri = server.getAssignmentManager().getRegionInfo(regionName);</span>
-<span class="source-line-no">1610</span><span id="line-1610">      if (hri == null) {</span>
-<span class="source-line-no">1611</span><span id="line-1611">        throw new UnknownRegionException(Bytes.toStringBinary(regionName));</span>
-<span class="source-line-no">1612</span><span id="line-1612">      }</span>
-<span class="source-line-no">1613</span><span id="line-1613"></span>
-<span class="source-line-no">1614</span><span id="line-1614">      if (server.cpHost != null) {</span>
-<span class="source-line-no">1615</span><span id="line-1615">        server.cpHost.preRegionOffline(hri);</span>
-<span class="source-line-no">1616</span><span id="line-1616">      }</span>
-<span class="source-line-no">1617</span><span id="line-1617">      LOG.info(server.getClientIdAuditPrefix() + " offline " + hri.getRegionNameAsString());</span>
-<span class="source-line-no">1618</span><span id="line-1618">      server.getAssignmentManager().offlineRegion(hri);</span>
-<span class="source-line-no">1619</span><span id="line-1619">      if (server.cpHost != null) {</span>
-<span class="source-line-no">1620</span><span id="line-1620">        server.cpHost.postRegionOffline(hri);</span>
-<span class="source-line-no">1621</span><span id="line-1621">      }</span>
-<span class="source-line-no">1622</span><span id="line-1622">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1623</span><span id="line-1623">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1624</span><span id="line-1624">    }</span>
-<span class="source-line-no">1625</span><span id="line-1625">    return OfflineRegionResponse.newBuilder().build();</span>
-<span class="source-line-no">1626</span><span id="line-1626">  }</span>
-<span class="source-line-no">1627</span><span id="line-1627"></span>
-<span class="source-line-no">1628</span><span id="line-1628">  /**</span>
-<span class="source-line-no">1629</span><span id="line-1629">   * Execute Restore/Clone snapshot operation.</span>
-<span class="source-line-no">1630</span><span id="line-1630">   * &lt;p&gt;</span>
-<span class="source-line-no">1631</span><span id="line-1631">   * If the specified table exists a "Restore" is executed, replacing the table schema and directory</span>
-<span class="source-line-no">1632</span><span id="line-1632">   * data with the content of the snapshot. The table must be disabled, or a</span>
-<span class="source-line-no">1633</span><span id="line-1633">   * UnsupportedOperationException will be thrown.</span>
-<span class="source-line-no">1634</span><span id="line-1634">   * &lt;p&gt;</span>
-<span class="source-line-no">1635</span><span id="line-1635">   * If the table doesn't exist a "Clone" is executed, a new table is created using the schema at</span>
-<span class="source-line-no">1636</span><span id="line-1636">   * the time of the snapshot, and the content of the snapshot.</span>
-<span class="source-line-no">1637</span><span id="line-1637">   * &lt;p&gt;</span>
-<span class="source-line-no">1638</span><span id="line-1638">   * The restore/clone operation does not require copying HFiles. Since HFiles are immutable the</span>
-<span class="source-line-no">1639</span><span id="line-1639">   * table can point to and use the same files as the original one.</span>
-<span class="source-line-no">1640</span><span id="line-1640">   */</span>
-<span class="source-line-no">1641</span><span id="line-1641">  @Override</span>
-<span class="source-line-no">1642</span><span id="line-1642">  public RestoreSnapshotResponse restoreSnapshot(RpcController controller,</span>
-<span class="source-line-no">1643</span><span id="line-1643">    RestoreSnapshotRequest request) throws ServiceException {</span>
-<span class="source-line-no">1644</span><span id="line-1644">    try {</span>
-<span class="source-line-no">1645</span><span id="line-1645">      long procId = server.restoreSnapshot(request.getSnapshot(), request.getNonceGroup(),</span>
-<span class="source-line-no">1646</span><span id="line-1646">        request.getNonce(), request.getRestoreACL(), request.getCustomSFT());</span>
-<span class="source-line-no">1647</span><span id="line-1647">      return RestoreSnapshotResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">1648</span><span id="line-1648">    } catch (ForeignException e) {</span>
-<span class="source-line-no">1649</span><span id="line-1649">      throw new ServiceException(e.getCause());</span>
-<span class="source-line-no">1650</span><span id="line-1650">    } catch (IOException e) {</span>
-<span class="source-line-no">1651</span><span id="line-1651">      throw new ServiceException(e);</span>
-<span class="source-line-no">1652</span><span id="line-1652">    }</span>
-<span class="source-line-no">1653</span><span id="line-1653">  }</span>
-<span class="source-line-no">1654</span><span id="line-1654"></span>
-<span class="source-line-no">1655</span><span id="line-1655">  @Override</span>
-<span class="source-line-no">1656</span><span id="line-1656">  public SetSnapshotCleanupResponse switchSnapshotCleanup(RpcController controller,</span>
-<span class="source-line-no">1657</span><span id="line-1657">    SetSnapshotCleanupRequest request) throws ServiceException {</span>
-<span class="source-line-no">1658</span><span id="line-1658">    try {</span>
-<span class="source-line-no">1659</span><span id="line-1659">      server.checkInitialized();</span>
-<span class="source-line-no">1660</span><span id="line-1660">      final boolean enabled = request.getEnabled();</span>
-<span class="source-line-no">1661</span><span id="line-1661">      final boolean isSynchronous = request.hasSynchronous() &amp;&amp; request.getSynchronous();</span>
-<span class="source-line-no">1662</span><span id="line-1662">      final boolean prevSnapshotCleanupRunning = this.switchSnapshotCleanup(enabled, isSynchronous);</span>
-<span class="source-line-no">1663</span><span id="line-1663">      return SetSnapshotCleanupResponse.newBuilder()</span>
-<span class="source-line-no">1664</span><span id="line-1664">        .setPrevSnapshotCleanup(prevSnapshotCleanupRunning).build();</span>
-<span class="source-line-no">1665</span><span id="line-1665">    } catch (IOException e) {</span>
-<span class="source-line-no">1666</span><span id="line-1666">      throw new ServiceException(e);</span>
-<span class="source-line-no">1667</span><span id="line-1667">    }</span>
-<span class="source-line-no">1668</span><span id="line-1668">  }</span>
-<span class="source-line-no">1669</span><span id="line-1669"></span>
-<span class="source-line-no">1670</span><span id="line-1670">  @Override</span>
-<span class="source-line-no">1671</span><span id="line-1671">  public IsSnapshotCleanupEnabledResponse isSnapshotCleanupEnabled(RpcController controller,</span>
-<span class="source-line-no">1672</span><span id="line-1672">    IsSnapshotCleanupEnabledRequest request) throws ServiceException {</span>
-<span class="source-line-no">1673</span><span id="line-1673">    try {</span>
-<span class="source-line-no">1674</span><span id="line-1674">      server.checkInitialized();</span>
-<span class="source-line-no">1675</span><span id="line-1675">      final boolean isSnapshotCleanupEnabled = server.snapshotCleanupStateStore.get();</span>
-<span class="source-line-no">1676</span><span id="line-1676">      return IsSnapshotCleanupEnabledResponse.newBuilder().setEnabled(isSnapshotCleanupEnabled)</span>
-<span class="source-line-no">1677</span><span id="line-1677">        .build();</span>
-<span class="source-line-no">1678</span><span id="line-1678">    } catch (IOException e) {</span>
-<span class="source-line-no">1679</span><span id="line-1679">      throw new ServiceException(e);</span>
-<span class="source-line-no">1680</span><span id="line-1680">    }</span>
-<span class="source-line-no">1681</span><span id="line-1681">  }</span>
-<span class="source-line-no">1682</span><span id="line-1682"></span>
-<span class="source-line-no">1683</span><span id="line-1683">  /**</span>
-<span class="source-line-no">1684</span><span id="line-1684">   * Turn on/off snapshot auto-cleanup based on TTL</span>
-<span class="source-line-no">1685</span><span id="line-1685">   * @param enabledNewVal Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable</span>
-<span class="source-line-no">1686</span><span id="line-1686">   * @param synchronous   If &lt;code&gt;true&lt;/code&gt;, it waits until current snapshot cleanup is</span>
-<span class="source-line-no">1687</span><span id="line-1687">   *                      completed, if outstanding</span>
-<span class="source-line-no">1688</span><span id="line-1688">   * @return previous snapshot auto-cleanup mode</span>
-<span class="source-line-no">1689</span><span id="line-1689">   */</span>
-<span class="source-line-no">1690</span><span id="line-1690">  private synchronized boolean switchSnapshotCleanup(final boolean enabledNewVal,</span>
-<span class="source-line-no">1691</span><span id="line-1691">    final boolean synchronous) throws IOException {</span>
-<span class="source-line-no">1692</span><span id="line-1692">    final boolean oldValue = server.snapshotCleanupStateStore.get();</span>
-<span class="source-line-no">1693</span><span id="line-1693">    server.switchSnapshotCleanup(enabledNewVal, synchronous);</span>
-<span class="source-line-no">1694</span><span id="line-1694">    LOG.info("{} Successfully set snapshot cleanup to {}", server.getClientIdAuditPrefix(),</span>
-<span class="source-line-no">1695</span><span id="line-1695">      enabledNewVal);</span>
-<span class="source-line-no">1696</span><span id="line-1696">    return oldValue;</span>
-<span class="source-line-no">1697</span><span id="line-1697">  }</span>
-<span class="source-line-no">1698</span><span id="line-1698"></span>
-<span class="source-line-no">1699</span><span id="line-1699">  @Override</span>
-<span class="source-line-no">1700</span><span id="line-1700">  public RunCatalogScanResponse runCatalogScan(RpcController c, RunCatalogScanRequest req)</span>
-<span class="source-line-no">1701</span><span id="line-1701">    throws ServiceException {</span>
-<span class="source-line-no">1702</span><span id="line-1702">    rpcPreCheck("runCatalogScan");</span>
-<span class="source-line-no">1703</span><span id="line-1703">    try {</span>
-<span class="source-line-no">1704</span><span id="line-1704">      return ResponseConverter.buildRunCatalogScanResponse(this.server.catalogJanitorChore.scan());</span>
-<span class="source-line-no">1705</span><span id="line-1705">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1706</span><span id="line-1706">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1707</span><span id="line-1707">    }</span>
-<span class="source-line-no">1708</span><span id="line-1708">  }</span>
-<span class="source-line-no">1709</span><span id="line-1709"></span>
-<span class="source-line-no">1710</span><span id="line-1710">  @Override</span>
-<span class="source-line-no">1711</span><span id="line-1711">  public RunCleanerChoreResponse runCleanerChore(RpcController c, RunCleanerChoreRequest req)</span>
-<span class="source-line-no">1712</span><span id="line-1712">    throws ServiceException {</span>
-<span class="source-line-no">1713</span><span id="line-1713">    rpcPreCheck("runCleanerChore");</span>
-<span class="source-line-no">1714</span><span id="line-1714">    try {</span>
-<span class="source-line-no">1715</span><span id="line-1715">      CompletableFuture&lt;Boolean&gt; fileCleanerFuture = server.getHFileCleaner().triggerCleanerNow();</span>
-<span class="source-line-no">1716</span><span id="line-1716">      CompletableFuture&lt;Boolean&gt; logCleanerFuture = server.getLogCleaner().triggerCleanerNow();</span>
-<span class="source-line-no">1717</span><span id="line-1717">      boolean result = fileCleanerFuture.get() &amp;&amp; logCleanerFuture.get();</span>
-<span class="source-line-no">1718</span><span id="line-1718">      return ResponseConverter.buildRunCleanerChoreResponse(result);</span>
-<span class="source-line-no">1719</span><span id="line-1719">    } catch (InterruptedException e) {</span>
-<span class="source-line-no">1720</span><span id="line-1720">      throw new ServiceException(e);</span>
-<span class="source-line-no">1721</span><span id="line-1721">    } catch (ExecutionException e) {</span>
-<span class="source-line-no">1722</span><span id="line-1722">      throw new ServiceException(e.getCause());</span>
-<span class="source-line-no">1723</span><span id="line-1723">    }</span>
-<span class="source-line-no">1724</span><span id="line-1724">  }</span>
-<span class="source-line-no">1725</span><span id="line-1725"></span>
-<span class="source-line-no">1726</span><span id="line-1726">  @Override</span>
-<span class="source-line-no">1727</span><span id="line-1727">  public SetBalancerRunningResponse setBalancerRunning(RpcController c,</span>
-<span class="source-line-no">1728</span><span id="line-1728">    SetBalancerRunningRequest req) throws ServiceException {</span>
-<span class="source-line-no">1729</span><span id="line-1729">    try {</span>
-<span class="source-line-no">1730</span><span id="line-1730">      server.checkInitialized();</span>
-<span class="source-line-no">1731</span><span id="line-1731">      boolean prevValue = (req.getSynchronous())</span>
-<span class="source-line-no">1732</span><span id="line-1732">        ? synchronousBalanceSwitch(req.getOn())</span>
-<span class="source-line-no">1733</span><span id="line-1733">        : server.balanceSwitch(req.getOn());</span>
-<span class="source-line-no">1734</span><span id="line-1734">      return SetBalancerRunningResponse.newBuilder().setPrevBalanceValue(prevValue).build();</span>
-<span class="source-line-no">1735</span><span id="line-1735">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1736</span><span id="line-1736">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1737</span><span id="line-1737">    }</span>
-<span class="source-line-no">1738</span><span id="line-1738">  }</span>
-<span class="source-line-no">1739</span><span id="line-1739"></span>
-<span class="source-line-no">1740</span><span id="line-1740">  @Override</span>
-<span class="source-line-no">1741</span><span id="line-1741">  public ShutdownResponse shutdown(RpcController controller, ShutdownRequest request)</span>
-<span class="source-line-no">1742</span><span id="line-1742">    throws ServiceException {</span>
-<span class="source-line-no">1743</span><span id="line-1743">    LOG.info(server.getClientIdAuditPrefix() + " shutdown");</span>
-<span class="source-line-no">1744</span><span id="line-1744">    try {</span>
-<span class="source-line-no">1745</span><span id="line-1745">      server.shutdown();</span>
-<span class="source-line-no">1746</span><span id="line-1746">    } catch (IOException e) {</span>
-<span class="source-line-no">1747</span><span id="line-1747">      LOG.error("Exception occurred in HMaster.shutdown()", e);</span>
-<span class="source-line-no">1748</span><span id="line-1748">      throw new ServiceException(e);</span>
-<span class="source-line-no">1749</span><span id="line-1749">    }</span>
-<span class="source-line-no">1750</span><span id="line-1750">    return ShutdownResponse.newBuilder().build();</span>
-<span class="source-line-no">1751</span><span id="line-1751">  }</span>
-<span class="source-line-no">1752</span><span id="line-1752"></span>
-<span class="source-line-no">1753</span><span id="line-1753">  /**</span>
-<span class="source-line-no">1754</span><span id="line-1754">   * Triggers an asynchronous attempt to take a snapshot. {@inheritDoc}</span>
-<span class="source-line-no">1755</span><span id="line-1755">   */</span>
-<span class="source-line-no">1756</span><span id="line-1756">  @Override</span>
-<span class="source-line-no">1757</span><span id="line-1757">  public SnapshotResponse snapshot(RpcController controller, SnapshotRequest request)</span>
-<span class="source-line-no">1758</span><span id="line-1758">    throws ServiceException {</span>
-<span class="source-line-no">1759</span><span id="line-1759">    try {</span>
-<span class="source-line-no">1760</span><span id="line-1760">      server.checkInitialized();</span>
-<span class="source-line-no">1761</span><span id="line-1761">      server.snapshotManager.checkSnapshotSupport();</span>
-<span class="source-line-no">1762</span><span id="line-1762"></span>
-<span class="source-line-no">1763</span><span id="line-1763">      LOG.info(server.getClientIdAuditPrefix() + " snapshot request for:"</span>
-<span class="source-line-no">1764</span><span id="line-1764">        + ClientSnapshotDescriptionUtils.toString(request.getSnapshot()));</span>
-<span class="source-line-no">1765</span><span id="line-1765">      // get the snapshot information</span>
-<span class="source-line-no">1766</span><span id="line-1766">      SnapshotDescription snapshot =</span>
-<span class="source-line-no">1767</span><span id="line-1767">        SnapshotDescriptionUtils.validate(request.getSnapshot(), server.getConfiguration());</span>
-<span class="source-line-no">1768</span><span id="line-1768">      // send back the max amount of time the client should wait for the snapshot to complete</span>
-<span class="source-line-no">1769</span><span id="line-1769">      long waitTime = SnapshotDescriptionUtils.getMaxMasterTimeout(server.getConfiguration(),</span>
-<span class="source-line-no">1770</span><span id="line-1770">        snapshot.getType(), SnapshotDescriptionUtils.DEFAULT_MAX_WAIT_TIME);</span>
-<span class="source-line-no">1771</span><span id="line-1771"></span>
-<span class="source-line-no">1772</span><span id="line-1772">      SnapshotResponse.Builder builder = SnapshotResponse.newBuilder().setExpectedTimeout(waitTime);</span>
-<span class="source-line-no">1773</span><span id="line-1773"></span>
-<span class="source-line-no">1774</span><span id="line-1774">      // If there is nonce group and nonce in the snapshot request, then the client can</span>
-<span class="source-line-no">1775</span><span id="line-1775">      // handle snapshot procedure procId. And if enable the snapshot procedure, we</span>
-<span class="source-line-no">1776</span><span id="line-1776">      // will do the snapshot work with proc-v2, otherwise we will fall back to zk proc.</span>
-<span class="source-line-no">1777</span><span id="line-1777">      if (</span>
-<span class="source-line-no">1778</span><span id="line-1778">        request.hasNonceGroup() &amp;&amp; request.hasNonce()</span>
-<span class="source-line-no">1779</span><span id="line-1779">          &amp;&amp; server.snapshotManager.snapshotProcedureEnabled()</span>
-<span class="source-line-no">1780</span><span id="line-1780">      ) {</span>
-<span class="source-line-no">1781</span><span id="line-1781">        long nonceGroup = request.getNonceGroup();</span>
-<span class="source-line-no">1782</span><span id="line-1782">        long nonce = request.getNonce();</span>
-<span class="source-line-no">1783</span><span id="line-1783">        long procId = server.snapshotManager.takeSnapshot(snapshot, nonceGroup, nonce);</span>
-<span class="source-line-no">1784</span><span id="line-1784">        return builder.setProcId(procId).build();</span>
-<span class="source-line-no">1785</span><span id="line-1785">      } else {</span>
-<span class="source-line-no">1786</span><span id="line-1786">        server.snapshotManager.takeSnapshot(snapshot);</span>
-<span class="source-line-no">1787</span><span id="line-1787">        return builder.build();</span>
-<span class="source-line-no">1788</span><span id="line-1788">      }</span>
-<span class="source-line-no">1789</span><span id="line-1789">    } catch (ForeignException e) {</span>
-<span class="source-line-no">1790</span><span id="line-1790">      throw new ServiceException(e.getCause());</span>
-<span class="source-line-no">1791</span><span id="line-1791">    } catch (IOException e) {</span>
-<span class="source-line-no">1792</span><span id="line-1792">      throw new ServiceException(e);</span>
-<span class="source-line-no">1793</span><span id="line-1793">    }</span>
-<span class="source-line-no">1794</span><span id="line-1794">  }</span>
-<span class="source-line-no">1795</span><span id="line-1795"></span>
-<span class="source-line-no">1796</span><span id="line-1796">  @Override</span>
-<span class="source-line-no">1797</span><span id="line-1797">  public StopMasterResponse stopMaster(RpcController controller, StopMasterRequest request)</span>
-<span class="source-line-no">1798</span><span id="line-1798">    throws ServiceException {</span>
-<span class="source-line-no">1799</span><span id="line-1799">    LOG.info(server.getClientIdAuditPrefix() + " stop");</span>
-<span class="source-line-no">1800</span><span id="line-1800">    try {</span>
-<span class="source-line-no">1801</span><span id="line-1801">      server.stopMaster();</span>
-<span class="source-line-no">1802</span><span id="line-1802">    } catch (IOException e) {</span>
-<span class="source-line-no">1803</span><span id="line-1803">      LOG.error("Exception occurred while stopping master", e);</span>
-<span class="source-line-no">1804</span><span id="line-1804">      throw new ServiceException(e);</span>
-<span class="source-line-no">1805</span><span id="line-1805">    }</span>
-<span class="source-line-no">1806</span><span id="line-1806">    return StopMasterResponse.newBuilder().build();</span>
-<span class="source-line-no">1807</span><span id="line-1807">  }</span>
-<span class="source-line-no">1808</span><span id="line-1808"></span>
-<span class="source-line-no">1809</span><span id="line-1809">  @Override</span>
-<span class="source-line-no">1810</span><span id="line-1810">  public IsInMaintenanceModeResponse isMasterInMaintenanceMode(final RpcController controller,</span>
-<span class="source-line-no">1811</span><span id="line-1811">    final IsInMaintenanceModeRequest request) throws ServiceException {</span>
-<span class="source-line-no">1812</span><span id="line-1812">    IsInMaintenanceModeResponse.Builder response = IsInMaintenanceModeResponse.newBuilder();</span>
-<span class="source-line-no">1813</span><span id="line-1813">    response.setInMaintenanceMode(server.isInMaintenanceMode());</span>
-<span class="source-line-no">1814</span><span id="line-1814">    return response.build();</span>
-<span class="source-line-no">1815</span><span id="line-1815">  }</span>
-<span class="source-line-no">1816</span><span id="line-1816"></span>
-<span class="source-line-no">1817</span><span id="line-1817">  @Override</span>
-<span class="source-line-no">1818</span><span id="line-1818">  public UnassignRegionResponse unassignRegion(RpcController controller, UnassignRegionRequest req)</span>
-<span class="source-line-no">1819</span><span id="line-1819">    throws ServiceException {</span>
-<span class="source-line-no">1820</span><span id="line-1820">    try {</span>
-<span class="source-line-no">1821</span><span id="line-1821">      final byte[] regionName = req.getRegion().getValue().toByteArray();</span>
-<span class="source-line-no">1822</span><span id="line-1822">      RegionSpecifierType type = req.getRegion().getType();</span>
-<span class="source-line-no">1823</span><span id="line-1823">      UnassignRegionResponse urr = UnassignRegionResponse.newBuilder().build();</span>
-<span class="source-line-no">1824</span><span id="line-1824"></span>
-<span class="source-line-no">1825</span><span id="line-1825">      server.checkInitialized();</span>
-<span class="source-line-no">1826</span><span id="line-1826">      if (type != RegionSpecifierType.REGION_NAME) {</span>
-<span class="source-line-no">1827</span><span id="line-1827">        LOG.warn("unassignRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME</span>
-<span class="source-line-no">1828</span><span id="line-1828">          + " actual: " + type);</span>
-<span class="source-line-no">1829</span><span id="line-1829">      }</span>
-<span class="source-line-no">1830</span><span id="line-1830">      RegionStateNode rsn =</span>
-<span class="source-line-no">1831</span><span id="line-1831">        server.getAssignmentManager().getRegionStates().getRegionStateNodeFromName(regionName);</span>
-<span class="source-line-no">1832</span><span id="line-1832">      if (rsn == null) {</span>
-<span class="source-line-no">1833</span><span id="line-1833">        throw new UnknownRegionException(Bytes.toString(regionName));</span>
-<span class="source-line-no">1834</span><span id="line-1834">      }</span>
-<span class="source-line-no">1835</span><span id="line-1835"></span>
-<span class="source-line-no">1836</span><span id="line-1836">      RegionInfo hri = rsn.getRegionInfo();</span>
-<span class="source-line-no">1837</span><span id="line-1837">      if (server.cpHost != null) {</span>
-<span class="source-line-no">1838</span><span id="line-1838">        server.cpHost.preUnassign(hri);</span>
-<span class="source-line-no">1839</span><span id="line-1839">      }</span>
-<span class="source-line-no">1840</span><span id="line-1840">      LOG.debug(server.getClientIdAuditPrefix() + " unassign " + hri.getRegionNameAsString()</span>
-<span class="source-line-no">1841</span><span id="line-1841">        + " in current location if it is online");</span>
-<span class="source-line-no">1842</span><span id="line-1842">      server.getAssignmentManager().unassign(hri);</span>
-<span class="source-line-no">1843</span><span id="line-1843">      if (server.cpHost != null) {</span>
-<span class="source-line-no">1844</span><span id="line-1844">        server.cpHost.postUnassign(hri);</span>
-<span class="source-line-no">1845</span><span id="line-1845">      }</span>
-<span class="source-line-no">1846</span><span id="line-1846"></span>
-<span class="source-line-no">1847</span><span id="line-1847">      return urr;</span>
-<span class="source-line-no">1848</span><span id="line-1848">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1849</span><span id="line-1849">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1850</span><span id="line-1850">    }</span>
-<span class="source-line-no">1851</span><span id="line-1851">  }</span>
-<span class="source-line-no">1852</span><span id="line-1852"></span>
-<span class="source-line-no">1853</span><span id="line-1853">  @Override</span>
-<span class="source-line-no">1854</span><span id="line-1854">  public ReportRegionStateTransitionResponse reportRegionStateTransition(RpcController c,</span>
-<span class="source-line-no">1855</span><span id="line-1855">    ReportRegionStateTransitionRequest req) throws ServiceException {</span>
-<span class="source-line-no">1856</span><span id="line-1856">    try {</span>
-<span class="source-line-no">1857</span><span id="line-1857">      server.checkServiceStarted();</span>
-<span class="source-line-no">1858</span><span id="line-1858">      for (RegionServerStatusProtos.RegionStateTransition transition : req.getTransitionList()) {</span>
-<span class="source-line-no">1859</span><span id="line-1859">        long procId =</span>
-<span class="source-line-no">1860</span><span id="line-1860">          transition.getProcIdCount() &gt; 0 ? transition.getProcId(0) : Procedure.NO_PROC_ID;</span>
-<span class="source-line-no">1861</span><span id="line-1861">        // -1 is less than any possible MasterActiveCode</span>
-<span class="source-line-no">1862</span><span id="line-1862">        long initiatingMasterActiveTime = transition.hasInitiatingMasterActiveTime()</span>
-<span class="source-line-no">1863</span><span id="line-1863">          ? transition.getInitiatingMasterActiveTime()</span>
-<span class="source-line-no">1864</span><span id="line-1864">          : -1;</span>
-<span class="source-line-no">1865</span><span id="line-1865">        throwOnOldMaster(procId, initiatingMasterActiveTime);</span>
-<span class="source-line-no">1866</span><span id="line-1866">      }</span>
-<span class="source-line-no">1867</span><span id="line-1867">      return server.getAssignmentManager().reportRegionStateTransition(req);</span>
-<span class="source-line-no">1868</span><span id="line-1868">    } catch (IOException ioe) {</span>
-<span class="source-line-no">1869</span><span id="line-1869">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">1870</span><span id="line-1870">    }</span>
-<span class="source-line-no">1871</span><span id="line-1871">  }</span>
-<span class="source-line-no">1872</span><span id="line-1872"></span>
-<span class="source-line-no">1873</span><span id="line-1873">  @Override</span>
-<span class="source-line-no">1874</span><span id="line-1874">  public SetQuotaResponse setQuota(RpcController c, SetQuotaRequest req) throws ServiceException {</span>
-<span class="source-line-no">1875</span><span id="line-1875">    try {</span>
-<span class="source-line-no">1876</span><span id="line-1876">      server.checkInitialized();</span>
-<span class="source-line-no">1877</span><span id="line-1877">      SetQuotaResponse response = server.getMasterQuotaManager().setQuota(req);</span>
-<span class="source-line-no">1878</span><span id="line-1878">      server.reloadRegionServerQuotas();</span>
-<span class="source-line-no">1879</span><span id="line-1879"></span>
-<span class="source-line-no">1880</span><span id="line-1880">      return response;</span>
-<span class="source-line-no">1881</span><span id="line-1881">    } catch (Exception e) {</span>
-<span class="source-line-no">1882</span><span id="line-1882">      throw new ServiceException(e);</span>
-<span class="source-line-no">1883</span><span id="line-1883">    }</span>
-<span class="source-line-no">1884</span><span id="line-1884">  }</span>
-<span class="source-line-no">1885</span><span id="line-1885"></span>
-<span class="source-line-no">1886</span><span id="line-1886">  @Override</span>
-<span class="source-line-no">1887</span><span id="line-1887">  public MajorCompactionTimestampResponse getLastMajorCompactionTimestamp(RpcController controller,</span>
-<span class="source-line-no">1888</span><span id="line-1888">    MajorCompactionTimestampRequest request) throws ServiceException {</span>
-<span class="source-line-no">1889</span><span id="line-1889">    MajorCompactionTimestampResponse.Builder response =</span>
-<span class="source-line-no">1890</span><span id="line-1890">      MajorCompactionTimestampResponse.newBuilder();</span>
-<span class="source-line-no">1891</span><span id="line-1891">    try {</span>
-<span class="source-line-no">1892</span><span id="line-1892">      server.checkInitialized();</span>
-<span class="source-line-no">1893</span><span id="line-1893">      response.setCompactionTimestamp(</span>
-<span class="source-line-no">1894</span><span id="line-1894">        server.getLastMajorCompactionTimestamp(ProtobufUtil.toTableName(request.getTableName())));</span>
-<span class="source-line-no">1895</span><span id="line-1895">    } catch (IOException e) {</span>
-<span class="source-line-no">1896</span><span id="line-1896">      throw new ServiceException(e);</span>
-<span class="source-line-no">1897</span><span id="line-1897">    }</span>
-<span class="source-line-no">1898</span><span id="line-1898">    return response.build();</span>
-<span class="source-line-no">1899</span><span id="line-1899">  }</span>
-<span class="source-line-no">1900</span><span id="line-1900"></span>
-<span class="source-line-no">1901</span><span id="line-1901">  @Override</span>
-<span class="source-line-no">1902</span><span id="line-1902">  public MajorCompactionTimestampResponse getLastMajorCompactionTimestampForRegion(</span>
-<span class="source-line-no">1903</span><span id="line-1903">    RpcController controller, MajorCompactionTimestampForRegionRequest request)</span>
-<span class="source-line-no">1904</span><span id="line-1904">    throws ServiceException {</span>
-<span class="source-line-no">1905</span><span id="line-1905">    MajorCompactionTimestampResponse.Builder response =</span>
-<span class="source-line-no">1906</span><span id="line-1906">      MajorCompactionTimestampResponse.newBuilder();</span>
-<span class="source-line-no">1907</span><span id="line-1907">    try {</span>
-<span class="source-line-no">1908</span><span id="line-1908">      server.checkInitialized();</span>
-<span class="source-line-no">1909</span><span id="line-1909">      response.setCompactionTimestamp(server</span>
-<span class="source-line-no">1910</span><span id="line-1910">        .getLastMajorCompactionTimestampForRegion(request.getRegion().getValue().toByteArray()));</span>
-<span class="source-line-no">1911</span><span id="line-1911">    } catch (IOException e) {</span>
-<span class="source-line-no">1912</span><span id="line-1912">      throw new ServiceException(e);</span>
-<span class="source-line-no">1913</span><span id="line-1913">    }</span>
-<span class="source-line-no">1914</span><span id="line-1914">    return response.build();</span>
-<span class="source-line-no">1915</span><span id="line-1915">  }</span>
-<span class="source-line-no">1916</span><span id="line-1916"></span>
-<span class="source-line-no">1917</span><span id="line-1917">  @Override</span>
-<span class="source-line-no">1918</span><span id="line-1918">  public IsBalancerEnabledResponse isBalancerEnabled(RpcController controller,</span>
-<span class="source-line-no">1919</span><span id="line-1919">    IsBalancerEnabledRequest request) throws ServiceException {</span>
-<span class="source-line-no">1920</span><span id="line-1920">    IsBalancerEnabledResponse.Builder response = IsBalancerEnabledResponse.newBuilder();</span>
-<span class="source-line-no">1921</span><span id="line-1921">    response.setEnabled(server.isBalancerOn());</span>
-<span class="source-line-no">1922</span><span id="line-1922">    return response.build();</span>
-<span class="source-line-no">1923</span><span id="line-1923">  }</span>
-<span class="source-line-no">1924</span><span id="line-1924"></span>
-<span class="source-line-no">1925</span><span id="line-1925">  @Override</span>
-<span class="source-line-no">1926</span><span id="line-1926">  public SetSplitOrMergeEnabledResponse setSplitOrMergeEnabled(RpcController controller,</span>
-<span class="source-line-no">1927</span><span id="line-1927">    SetSplitOrMergeEnabledRequest request) throws ServiceException {</span>
-<span class="source-line-no">1928</span><span id="line-1928">    SetSplitOrMergeEnabledResponse.Builder response = SetSplitOrMergeEnabledResponse.newBuilder();</span>
-<span class="source-line-no">1929</span><span id="line-1929">    try {</span>
-<span class="source-line-no">1930</span><span id="line-1930">      server.checkInitialized();</span>
-<span class="source-line-no">1931</span><span id="line-1931">      boolean newValue = request.getEnabled();</span>
-<span class="source-line-no">1932</span><span id="line-1932">      for (MasterProtos.MasterSwitchType masterSwitchType : request.getSwitchTypesList()) {</span>
-<span class="source-line-no">1933</span><span id="line-1933">        MasterSwitchType switchType = convert(masterSwitchType);</span>
-<span class="source-line-no">1934</span><span id="line-1934">        boolean oldValue = server.isSplitOrMergeEnabled(switchType);</span>
-<span class="source-line-no">1935</span><span id="line-1935">        response.addPrevValue(oldValue);</span>
-<span class="source-line-no">1936</span><span id="line-1936">        if (server.cpHost != null) {</span>
-<span class="source-line-no">1937</span><span id="line-1937">          server.cpHost.preSetSplitOrMergeEnabled(newValue, switchType);</span>
-<span class="source-line-no">1938</span><span id="line-1938">        }</span>
-<span class="source-line-no">1939</span><span id="line-1939">        server.getSplitOrMergeStateStore().setSplitOrMergeEnabled(newValue, switchType);</span>
-<span class="source-line-no">1940</span><span id="line-1940">        if (server.cpHost != null) {</span>
-<span class="source-line-no">1941</span><span id="line-1941">          server.cpHost.postSetSplitOrMergeEnabled(newValue, switchType);</span>
-<span class="source-line-no">1942</span><span id="line-1942">        }</span>
-<span class="source-line-no">1943</span><span id="line-1943">      }</span>
-<span class="source-line-no">1944</span><span id="line-1944">    } catch (IOException e) {</span>
-<span class="source-line-no">1945</span><span id="line-1945">      throw new ServiceException(e);</span>
-<span class="source-line-no">1946</span><span id="line-1946">    }</span>
-<span class="source-line-no">1947</span><span id="line-1947">    return response.build();</span>
-<span class="source-line-no">1948</span><span id="line-1948">  }</span>
-<span class="source-line-no">1949</span><span id="line-1949"></span>
-<span class="source-line-no">1950</span><span id="line-1950">  @Override</span>
-<span class="source-line-no">1951</span><span id="line-1951">  public IsSplitOrMergeEnabledResponse isSplitOrMergeEnabled(RpcController controller,</span>
-<span class="source-line-no">1952</span><span id="line-1952">    IsSplitOrMergeEnabledRequest request) throws ServiceException {</span>
-<span class="source-line-no">1953</span><span id="line-1953">    IsSplitOrMergeEnabledResponse.Builder response = IsSplitOrMergeEnabledResponse.newBuilder();</span>
-<span class="source-line-no">1954</span><span id="line-1954">    response.setEnabled(server.isSplitOrMergeEnabled(convert(request.getSwitchType())));</span>
-<span class="source-line-no">1955</span><span id="line-1955">    return response.build();</span>
-<span class="source-line-no">1956</span><span id="line-1956">  }</span>
-<span class="source-line-no">1957</span><span id="line-1957"></span>
-<span class="source-line-no">1958</span><span id="line-1958">  @Override</span>
-<span class="source-line-no">1959</span><span id="line-1959">  public NormalizeResponse normalize(RpcController controller, NormalizeRequest request)</span>
-<span class="source-line-no">1960</span><span id="line-1960">    throws ServiceException {</span>
-<span class="source-line-no">1961</span><span id="line-1961">    rpcPreCheck("normalize");</span>
-<span class="source-line-no">1962</span><span id="line-1962">    try {</span>
-<span class="source-line-no">1963</span><span id="line-1963">      final NormalizeTableFilterParams ntfp = new NormalizeTableFilterParams.Builder()</span>
-<span class="source-line-no">1964</span><span id="line-1964">        .tableNames(ProtobufUtil.toTableNameList(request.getTableNamesList()))</span>
-<span class="source-line-no">1965</span><span id="line-1965">        .regex(request.hasRegex() ? request.getRegex() : null)</span>
-<span class="source-line-no">1966</span><span id="line-1966">        .namespace(request.hasNamespace() ? request.getNamespace() : null).build();</span>
-<span class="source-line-no">1967</span><span id="line-1967">      return NormalizeResponse.newBuilder()</span>
-<span class="source-line-no">1968</span><span id="line-1968">        // all API requests are considered priority requests.</span>
-<span class="source-line-no">1969</span><span id="line-1969">        .setNormalizerRan(server.normalizeRegions(ntfp, true)).build();</span>
-<span class="source-line-no">1970</span><span id="line-1970">    } catch (IOException ex) {</span>
-<span class="source-line-no">1971</span><span id="line-1971">      throw new ServiceException(ex);</span>
-<span class="source-line-no">1972</span><span id="line-1972">    }</span>
-<span class="source-line-no">1973</span><span id="line-1973">  }</span>
-<span class="source-line-no">1974</span><span id="line-1974"></span>
-<span class="source-line-no">1975</span><span id="line-1975">  @Override</span>
-<span class="source-line-no">1976</span><span id="line-1976">  public SetNormalizerRunningResponse setNormalizerRunning(RpcController controller,</span>
-<span class="source-line-no">1977</span><span id="line-1977">    SetNormalizerRunningRequest request) throws ServiceException {</span>
-<span class="source-line-no">1978</span><span id="line-1978">    rpcPreCheck("setNormalizerRunning");</span>
-<span class="source-line-no">1979</span><span id="line-1979"></span>
-<span class="source-line-no">1980</span><span id="line-1980">    // Sets normalizer on/off flag in ZK.</span>
-<span class="source-line-no">1981</span><span id="line-1981">    // TODO: this method is totally broken in terms of atomicity of actions and values read.</span>
-<span class="source-line-no">1982</span><span id="line-1982">    // 1. The contract has this RPC returning the previous value. There isn't a ZKUtil method</span>
-<span class="source-line-no">1983</span><span id="line-1983">    // that lets us retrieve the previous value as part of setting a new value, so we simply</span>
-<span class="source-line-no">1984</span><span id="line-1984">    // perform a read before issuing the update. Thus we have a data race opportunity, between</span>
-<span class="source-line-no">1985</span><span id="line-1985">    // when the `prevValue` is read and whatever is actually overwritten.</span>
-<span class="source-line-no">1986</span><span id="line-1986">    // 2. Down in `setNormalizerOn`, the call to `createAndWatch` inside of the catch clause can</span>
-<span class="source-line-no">1987</span><span id="line-1987">    // itself fail in the event that the znode already exists. Thus, another data race, between</span>
-<span class="source-line-no">1988</span><span id="line-1988">    // when the initial `setData` call is notified of the absence of the target znode and the</span>
-<span class="source-line-no">1989</span><span id="line-1989">    // subsequent `createAndWatch`, with another client creating said node.</span>
-<span class="source-line-no">1990</span><span id="line-1990">    // That said, there's supposed to be only one active master and thus there's supposed to be</span>
-<span class="source-line-no">1991</span><span id="line-1991">    // only one process with the authority to modify the value.</span>
-<span class="source-line-no">1992</span><span id="line-1992">    final boolean prevValue = server.getRegionNormalizerManager().isNormalizerOn();</span>
-<span class="source-line-no">1993</span><span id="line-1993">    final boolean newValue = request.getOn();</span>
-<span class="source-line-no">1994</span><span id="line-1994">    try {</span>
-<span class="source-line-no">1995</span><span id="line-1995">      server.getRegionNormalizerManager().setNormalizerOn(newValue);</span>
-<span class="source-line-no">1996</span><span id="line-1996">    } catch (IOException e) {</span>
-<span class="source-line-no">1997</span><span id="line-1997">      throw new ServiceException(e);</span>
-<span class="source-line-no">1998</span><span id="line-1998">    }</span>
-<span class="source-line-no">1999</span><span id="line-1999">    LOG.info("{} set normalizerSwitch={}", server.getClientIdAuditPrefix(), newValue);</span>
-<span class="source-line-no">2000</span><span id="line-2000">    return SetNormalizerRunningResponse.newBuilder().setPrevNormalizerValue(prevValue).build();</span>
-<span class="source-line-no">2001</span><span id="line-2001">  }</span>
-<span class="source-line-no">2002</span><span id="line-2002"></span>
-<span class="source-line-no">2003</span><span id="line-2003">  @Override</span>
-<span class="source-line-no">2004</span><span id="line-2004">  public IsNormalizerEnabledResponse isNormalizerEnabled(RpcController controller,</span>
-<span class="source-line-no">2005</span><span id="line-2005">    IsNormalizerEnabledRequest request) {</span>
-<span class="source-line-no">2006</span><span id="line-2006">    IsNormalizerEnabledResponse.Builder response = IsNormalizerEnabledResponse.newBuilder();</span>
-<span class="source-line-no">2007</span><span id="line-2007">    response.setEnabled(server.isNormalizerOn());</span>
-<span class="source-line-no">2008</span><span id="line-2008">    return response.build();</span>
-<span class="source-line-no">2009</span><span id="line-2009">  }</span>
-<span class="source-line-no">2010</span><span id="line-2010"></span>
-<span class="source-line-no">2011</span><span id="line-2011">  /**</span>
-<span class="source-line-no">2012</span><span id="line-2012">   * Returns the security capabilities in effect on the cluster</span>
-<span class="source-line-no">2013</span><span id="line-2013">   */</span>
-<span class="source-line-no">2014</span><span id="line-2014">  @Override</span>
-<span class="source-line-no">2015</span><span id="line-2015">  public SecurityCapabilitiesResponse getSecurityCapabilities(RpcController controller,</span>
-<span class="source-line-no">2016</span><span id="line-2016">    SecurityCapabilitiesRequest request) throws ServiceException {</span>
-<span class="source-line-no">2017</span><span id="line-2017">    SecurityCapabilitiesResponse.Builder response = SecurityCapabilitiesResponse.newBuilder();</span>
-<span class="source-line-no">2018</span><span id="line-2018">    try {</span>
-<span class="source-line-no">2019</span><span id="line-2019">      server.checkInitialized();</span>
-<span class="source-line-no">2020</span><span id="line-2020">      Set&lt;SecurityCapabilitiesResponse.Capability&gt; capabilities = new HashSet&lt;&gt;();</span>
-<span class="source-line-no">2021</span><span id="line-2021">      // Authentication</span>
-<span class="source-line-no">2022</span><span id="line-2022">      if (User.isHBaseSecurityEnabled(server.getConfiguration())) {</span>
-<span class="source-line-no">2023</span><span id="line-2023">        capabilities.add(SecurityCapabilitiesResponse.Capability.SECURE_AUTHENTICATION);</span>
-<span class="source-line-no">2024</span><span id="line-2024">      } else {</span>
-<span class="source-line-no">2025</span><span id="line-2025">        capabilities.add(SecurityCapabilitiesResponse.Capability.SIMPLE_AUTHENTICATION);</span>
-<span class="source-line-no">2026</span><span id="line-2026">      }</span>
-<span class="source-line-no">2027</span><span id="line-2027">      // A coprocessor that implements AccessControlService can provide AUTHORIZATION and</span>
-<span class="source-line-no">2028</span><span id="line-2028">      // CELL_AUTHORIZATION</span>
-<span class="source-line-no">2029</span><span id="line-2029">      if (server.cpHost != null &amp;&amp; hasAccessControlServiceCoprocessor(server.cpHost)) {</span>
-<span class="source-line-no">2030</span><span id="line-2030">        if (AccessChecker.isAuthorizationSupported(server.getConfiguration())) {</span>
-<span class="source-line-no">2031</span><span id="line-2031">          capabilities.add(SecurityCapabilitiesResponse.Capability.AUTHORIZATION);</span>
-<span class="source-line-no">2032</span><span id="line-2032">        }</span>
-<span class="source-line-no">2033</span><span id="line-2033">        if (AccessController.isCellAuthorizationSupported(server.getConfiguration())) {</span>
-<span class="source-line-no">2034</span><span id="line-2034">          capabilities.add(SecurityCapabilitiesResponse.Capability.CELL_AUTHORIZATION);</span>
-<span class="source-line-no">2035</span><span id="line-2035">        }</span>
-<span class="source-line-no">2036</span><span id="line-2036">      }</span>
-<span class="source-line-no">2037</span><span id="line-2037">      // A coprocessor that implements VisibilityLabelsService can provide CELL_VISIBILITY.</span>
-<span class="source-line-no">2038</span><span id="line-2038">      if (server.cpHost != null &amp;&amp; hasVisibilityLabelsServiceCoprocessor(server.cpHost)) {</span>
-<span class="source-line-no">2039</span><span id="line-2039">        if (VisibilityController.isCellAuthorizationSupported(server.getConfiguration())) {</span>
-<span class="source-line-no">2040</span><span id="line-2040">          capabilities.add(SecurityCapabilitiesResponse.Capability.CELL_VISIBILITY);</span>
-<span class="source-line-no">2041</span><span id="line-2041">        }</span>
-<span class="source-line-no">2042</span><span id="line-2042">      }</span>
-<span class="source-line-no">2043</span><span id="line-2043">      response.addAllCapabilities(capabilities);</span>
-<span class="source-line-no">2044</span><span id="line-2044">    } catch (IOException e) {</span>
-<span class="source-line-no">2045</span><span id="line-2045">      throw new ServiceException(e);</span>
-<span class="source-line-no">2046</span><span id="line-2046">    }</span>
-<span class="source-line-no">2047</span><span id="line-2047">    return response.build();</span>
-<span class="source-line-no">2048</span><span id="line-2048">  }</span>
-<span class="source-line-no">2049</span><span id="line-2049"></span>
-<span class="source-line-no">2050</span><span id="line-2050">  /**</span>
-<span class="source-line-no">2051</span><span id="line-2051">   * Determines if there is a MasterCoprocessor deployed which implements</span>
-<span class="source-line-no">2052</span><span id="line-2052">   * {@link AccessControlService.Interface}.</span>
-<span class="source-line-no">2053</span><span id="line-2053">   */</span>
-<span class="source-line-no">2054</span><span id="line-2054">  boolean hasAccessControlServiceCoprocessor(MasterCoprocessorHost cpHost) {</span>
-<span class="source-line-no">2055</span><span id="line-2055">    return checkCoprocessorWithService(cpHost.findCoprocessors(MasterCoprocessor.class),</span>
-<span class="source-line-no">2056</span><span id="line-2056">      AccessControlService.Interface.class);</span>
-<span class="source-line-no">2057</span><span id="line-2057">  }</span>
-<span class="source-line-no">2058</span><span id="line-2058"></span>
-<span class="source-line-no">2059</span><span id="line-2059">  /**</span>
-<span class="source-line-no">2060</span><span id="line-2060">   * Determines if there is a MasterCoprocessor deployed which implements</span>
-<span class="source-line-no">2061</span><span id="line-2061">   * {@link VisibilityLabelsService.Interface}.</span>
-<span class="source-line-no">2062</span><span id="line-2062">   */</span>
-<span class="source-line-no">2063</span><span id="line-2063">  boolean hasVisibilityLabelsServiceCoprocessor(MasterCoprocessorHost cpHost) {</span>
-<span class="source-line-no">2064</span><span id="line-2064">    return checkCoprocessorWithService(cpHost.findCoprocessors(MasterCoprocessor.class),</span>
-<span class="source-line-no">2065</span><span id="line-2065">      VisibilityLabelsService.Interface.class);</span>
-<span class="source-line-no">2066</span><span id="line-2066">  }</span>
-<span class="source-line-no">2067</span><span id="line-2067"></span>
-<span class="source-line-no">2068</span><span id="line-2068">  /**</span>
-<span class="source-line-no">2069</span><span id="line-2069">   * Determines if there is a coprocessor implementation in the provided argument which extends or</span>
-<span class="source-line-no">2070</span><span id="line-2070">   * implements the provided {@code service}.</span>
-<span class="source-line-no">2071</span><span id="line-2071">   */</span>
-<span class="source-line-no">2072</span><span id="line-2072">  boolean checkCoprocessorWithService(List&lt;MasterCoprocessor&gt; coprocessorsToCheck,</span>
-<span class="source-line-no">2073</span><span id="line-2073">    Class&lt;?&gt; service) {</span>
-<span class="source-line-no">2074</span><span id="line-2074">    if (coprocessorsToCheck == null || coprocessorsToCheck.isEmpty()) {</span>
-<span class="source-line-no">2075</span><span id="line-2075">      return false;</span>
-<span class="source-line-no">2076</span><span id="line-2076">    }</span>
-<span class="source-line-no">2077</span><span id="line-2077">    for (MasterCoprocessor cp : coprocessorsToCheck) {</span>
-<span class="source-line-no">2078</span><span id="line-2078">      if (service.isAssignableFrom(cp.getClass())) {</span>
-<span class="source-line-no">2079</span><span id="line-2079">        return true;</span>
-<span class="source-line-no">2080</span><span id="line-2080">      }</span>
-<span class="source-line-no">2081</span><span id="line-2081">    }</span>
-<span class="source-line-no">2082</span><span id="line-2082">    return false;</span>
-<span class="source-line-no">2083</span><span id="line-2083">  }</span>
-<span class="source-line-no">2084</span><span id="line-2084"></span>
-<span class="source-line-no">2085</span><span id="line-2085">  private MasterSwitchType convert(MasterProtos.MasterSwitchType switchType) {</span>
-<span class="source-line-no">2086</span><span id="line-2086">    switch (switchType) {</span>
-<span class="source-line-no">2087</span><span id="line-2087">      case SPLIT:</span>
-<span class="source-line-no">2088</span><span id="line-2088">        return MasterSwitchType.SPLIT;</span>
-<span class="source-line-no">2089</span><span id="line-2089">      case MERGE:</span>
-<span class="source-line-no">2090</span><span id="line-2090">        return MasterSwitchType.MERGE;</span>
-<span class="source-line-no">2091</span><span id="line-2091">      default:</span>
-<span class="source-line-no">2092</span><span id="line-2092">        break;</span>
-<span class="source-line-no">2093</span><span id="line-2093">    }</span>
-<span class="source-line-no">2094</span><span id="line-2094">    return null;</span>
-<span class="source-line-no">2095</span><span id="line-2095">  }</span>
-<span class="source-line-no">2096</span><span id="line-2096"></span>
-<span class="source-line-no">2097</span><span id="line-2097">  @Override</span>
-<span class="source-line-no">2098</span><span id="line-2098">  public AddReplicationPeerResponse addReplicationPeer(RpcController controller,</span>
-<span class="source-line-no">2099</span><span id="line-2099">    AddReplicationPeerRequest request) throws ServiceException {</span>
-<span class="source-line-no">2100</span><span id="line-2100">    try {</span>
-<span class="source-line-no">2101</span><span id="line-2101">      long procId = server.addReplicationPeer(request.getPeerId(),</span>
-<span class="source-line-no">2102</span><span id="line-2102">        ReplicationPeerConfigUtil.convert(request.getPeerConfig()),</span>
-<span class="source-line-no">2103</span><span id="line-2103">        request.getPeerState().getState().equals(ReplicationState.State.ENABLED));</span>
-<span class="source-line-no">2104</span><span id="line-2104">      return AddReplicationPeerResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">2105</span><span id="line-2105">    } catch (ReplicationException | IOException e) {</span>
-<span class="source-line-no">2106</span><span id="line-2106">      throw new ServiceException(e);</span>
-<span class="source-line-no">2107</span><span id="line-2107">    }</span>
-<span class="source-line-no">2108</span><span id="line-2108">  }</span>
-<span class="source-line-no">2109</span><span id="line-2109"></span>
-<span class="source-line-no">2110</span><span id="line-2110">  @Override</span>
-<span class="source-line-no">2111</span><span id="line-2111">  public RemoveReplicationPeerResponse removeReplicationPeer(RpcController controller,</span>
-<span class="source-line-no">2112</span><span id="line-2112">    RemoveReplicationPeerRequest request) throws ServiceException {</span>
-<span class="source-line-no">2113</span><span id="line-2113">    try {</span>
-<span class="source-line-no">2114</span><span id="line-2114">      long procId = server.removeReplicationPeer(request.getPeerId());</span>
-<span class="source-line-no">2115</span><span id="line-2115">      return RemoveReplicationPeerResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">2116</span><span id="line-2116">    } catch (ReplicationException | IOException e) {</span>
-<span class="source-line-no">2117</span><span id="line-2117">      throw new ServiceException(e);</span>
-<span class="source-line-no">2118</span><span id="line-2118">    }</span>
-<span class="source-line-no">2119</span><span id="line-2119">  }</span>
-<span class="source-line-no">2120</span><span id="line-2120"></span>
-<span class="source-line-no">2121</span><span id="line-2121">  @Override</span>
-<span class="source-line-no">2122</span><span id="line-2122">  public EnableReplicationPeerResponse enableReplicationPeer(RpcController controller,</span>
-<span class="source-line-no">2123</span><span id="line-2123">    EnableReplicationPeerRequest request) throws ServiceException {</span>
-<span class="source-line-no">2124</span><span id="line-2124">    try {</span>
-<span class="source-line-no">2125</span><span id="line-2125">      long procId = server.enableReplicationPeer(request.getPeerId());</span>
-<span class="source-line-no">2126</span><span id="line-2126">      return EnableReplicationPeerResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">2127</span><span id="line-2127">    } catch (ReplicationException | IOException e) {</span>
-<span class="source-line-no">2128</span><span id="line-2128">      throw new ServiceException(e);</span>
-<span class="source-line-no">2129</span><span id="line-2129">    }</span>
-<span class="source-line-no">2130</span><span id="line-2130">  }</span>
-<span class="source-line-no">2131</span><span id="line-2131"></span>
-<span class="source-line-no">2132</span><span id="line-2132">  @Override</span>
-<span class="source-line-no">2133</span><span id="line-2133">  public DisableReplicationPeerResponse disableReplicationPeer(RpcController controller,</span>
-<span class="source-line-no">2134</span><span id="line-2134">    DisableReplicationPeerRequest request) throws ServiceException {</span>
-<span class="source-line-no">2135</span><span id="line-2135">    try {</span>
-<span class="source-line-no">2136</span><span id="line-2136">      long procId = server.disableReplicationPeer(request.getPeerId());</span>
-<span class="source-line-no">2137</span><span id="line-2137">      return DisableReplicationPeerResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">2138</span><span id="line-2138">    } catch (ReplicationException | IOException e) {</span>
-<span class="source-line-no">2139</span><span id="line-2139">      throw new ServiceException(e);</span>
-<span class="source-line-no">2140</span><span id="line-2140">    }</span>
-<span class="source-line-no">2141</span><span id="line-2141">  }</span>
-<span class="source-line-no">2142</span><span id="line-2142"></span>
-<span class="source-line-no">2143</span><span id="line-2143">  @Override</span>
-<span class="source-line-no">2144</span><span id="line-2144">  public GetReplicationPeerConfigResponse getReplicationPeerConfig(RpcController controller,</span>
-<span class="source-line-no">2145</span><span id="line-2145">    GetReplicationPeerConfigRequest request) throws ServiceException {</span>
-<span class="source-line-no">2146</span><span id="line-2146">    GetReplicationPeerConfigResponse.Builder response =</span>
-<span class="source-line-no">2147</span><span id="line-2147">      GetReplicationPeerConfigResponse.newBuilder();</span>
-<span class="source-line-no">2148</span><span id="line-2148">    try {</span>
-<span class="source-line-no">2149</span><span id="line-2149">      String peerId = request.getPeerId();</span>
-<span class="source-line-no">2150</span><span id="line-2150">      ReplicationPeerConfig peerConfig = server.getReplicationPeerConfig(peerId);</span>
-<span class="source-line-no">2151</span><span id="line-2151">      response.setPeerId(peerId);</span>
-<span class="source-line-no">2152</span><span id="line-2152">      response.setPeerConfig(ReplicationPeerConfigUtil.convert(peerConfig));</span>
-<span class="source-line-no">2153</span><span id="line-2153">    } catch (ReplicationException | IOException e) {</span>
-<span class="source-line-no">2154</span><span id="line-2154">      throw new ServiceException(e);</span>
-<span class="source-line-no">2155</span><span id="line-2155">    }</span>
-<span class="source-line-no">2156</span><span id="line-2156">    return response.build();</span>
-<span class="source-line-no">2157</span><span id="line-2157">  }</span>
-<span class="source-line-no">2158</span><span id="line-2158"></span>
-<span class="source-line-no">2159</span><span id="line-2159">  @Override</span>
-<span class="source-line-no">2160</span><span id="line-2160">  public UpdateReplicationPeerConfigResponse updateReplicationPeerConfig(RpcController controller,</span>
-<span class="source-line-no">2161</span><span id="line-2161">    UpdateReplicationPeerConfigRequest request) throws ServiceException {</span>
-<span class="source-line-no">2162</span><span id="line-2162">    try {</span>
-<span class="source-line-no">2163</span><span id="line-2163">      long procId = server.updateReplicationPeerConfig(request.getPeerId(),</span>
-<span class="source-line-no">2164</span><span id="line-2164">        ReplicationPeerConfigUtil.convert(request.getPeerConfig()));</span>
-<span class="source-line-no">2165</span><span id="line-2165">      return UpdateReplicationPeerConfigResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">2166</span><span id="line-2166">    } catch (ReplicationException | IOException e) {</span>
-<span class="source-line-no">2167</span><span id="line-2167">      throw new ServiceException(e);</span>
-<span class="source-line-no">2168</span><span id="line-2168">    }</span>
-<span class="source-line-no">2169</span><span id="line-2169">  }</span>
-<span class="source-line-no">2170</span><span id="line-2170"></span>
-<span class="source-line-no">2171</span><span id="line-2171">  @Override</span>
-<span class="source-line-no">2172</span><span id="line-2172">  public TransitReplicationPeerSyncReplicationStateResponse</span>
-<span class="source-line-no">2173</span><span id="line-2173">    transitReplicationPeerSyncReplicationState(RpcController controller,</span>
-<span class="source-line-no">2174</span><span id="line-2174">      TransitReplicationPeerSyncReplicationStateRequest request) throws ServiceException {</span>
-<span class="source-line-no">2175</span><span id="line-2175">    try {</span>
-<span class="source-line-no">2176</span><span id="line-2176">      long procId = server.transitReplicationPeerSyncReplicationState(request.getPeerId(),</span>
-<span class="source-line-no">2177</span><span id="line-2177">        ReplicationPeerConfigUtil.toSyncReplicationState(request.getSyncReplicationState()));</span>
-<span class="source-line-no">2178</span><span id="line-2178">      return TransitReplicationPeerSyncReplicationStateResponse.newBuilder().setProcId(procId)</span>
-<span class="source-line-no">2179</span><span id="line-2179">        .build();</span>
-<span class="source-line-no">2180</span><span id="line-2180">    } catch (ReplicationException | IOException e) {</span>
-<span class="source-line-no">2181</span><span id="line-2181">      throw new ServiceException(e);</span>
-<span class="source-line-no">2182</span><span id="line-2182">    }</span>
-<span class="source-line-no">2183</span><span id="line-2183">  }</span>
-<span class="source-line-no">2184</span><span id="line-2184"></span>
-<span class="source-line-no">2185</span><span id="line-2185">  @Override</span>
-<span class="source-line-no">2186</span><span id="line-2186">  public ListReplicationPeersResponse listReplicationPeers(RpcController controller,</span>
-<span class="source-line-no">2187</span><span id="line-2187">    ListReplicationPeersRequest request) throws ServiceException {</span>
-<span class="source-line-no">2188</span><span id="line-2188">    ListReplicationPeersResponse.Builder response = ListReplicationPeersResponse.newBuilder();</span>
-<span class="source-line-no">2189</span><span id="line-2189">    try {</span>
-<span class="source-line-no">2190</span><span id="line-2190">      List&lt;ReplicationPeerDescription&gt; peers =</span>
-<span class="source-line-no">2191</span><span id="line-2191">        server.listReplicationPeers(request.hasRegex() ? request.getRegex() : null);</span>
-<span class="source-line-no">2192</span><span id="line-2192">      for (ReplicationPeerDescription peer : peers) {</span>
-<span class="source-line-no">2193</span><span id="line-2193">        response.addPeerDesc(ReplicationPeerConfigUtil.toProtoReplicationPeerDescription(peer));</span>
-<span class="source-line-no">2194</span><span id="line-2194">      }</span>
-<span class="source-line-no">2195</span><span id="line-2195">    } catch (ReplicationException | IOException e) {</span>
-<span class="source-line-no">2196</span><span id="line-2196">      throw new ServiceException(e);</span>
-<span class="source-line-no">2197</span><span id="line-2197">    }</span>
-<span class="source-line-no">2198</span><span id="line-2198">    return response.build();</span>
-<span class="source-line-no">2199</span><span id="line-2199">  }</span>
-<span class="source-line-no">2200</span><span id="line-2200"></span>
-<span class="source-line-no">2201</span><span id="line-2201">  @Override</span>
-<span class="source-line-no">2202</span><span id="line-2202">  public GetReplicationPeerStateResponse isReplicationPeerEnabled(RpcController controller,</span>
-<span class="source-line-no">2203</span><span id="line-2203">    GetReplicationPeerStateRequest request) throws ServiceException {</span>
-<span class="source-line-no">2204</span><span id="line-2204">    boolean isEnabled;</span>
-<span class="source-line-no">2205</span><span id="line-2205">    try {</span>
-<span class="source-line-no">2206</span><span id="line-2206">      isEnabled = server.getReplicationPeerManager().getPeerState(request.getPeerId());</span>
-<span class="source-line-no">2207</span><span id="line-2207">    } catch (ReplicationException ioe) {</span>
-<span class="source-line-no">2208</span><span id="line-2208">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">2209</span><span id="line-2209">    }</span>
-<span class="source-line-no">2210</span><span id="line-2210">    return GetReplicationPeerStateResponse.newBuilder().setIsEnabled(isEnabled).build();</span>
-<span class="source-line-no">2211</span><span id="line-2211">  }</span>
-<span class="source-line-no">2212</span><span id="line-2212"></span>
-<span class="source-line-no">2213</span><span id="line-2213">  @Override</span>
-<span class="source-line-no">2214</span><span id="line-2214">  public ReplicationPeerModificationSwitchResponse replicationPeerModificationSwitch(</span>
-<span class="source-line-no">2215</span><span id="line-2215">    RpcController controller, ReplicationPeerModificationSwitchRequest request)</span>
-<span class="source-line-no">2216</span><span id="line-2216">    throws ServiceException {</span>
-<span class="source-line-no">2217</span><span id="line-2217">    try {</span>
-<span class="source-line-no">2218</span><span id="line-2218">      server.checkInitialized();</span>
-<span class="source-line-no">2219</span><span id="line-2219">      boolean prevValue = server.replicationPeerModificationSwitch(request.getOn());</span>
-<span class="source-line-no">2220</span><span id="line-2220">      return ReplicationPeerModificationSwitchResponse.newBuilder().setPreviousValue(prevValue)</span>
-<span class="source-line-no">2221</span><span id="line-2221">        .build();</span>
-<span class="source-line-no">2222</span><span id="line-2222">    } catch (IOException ioe) {</span>
-<span class="source-line-no">2223</span><span id="line-2223">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">2224</span><span id="line-2224">    }</span>
-<span class="source-line-no">2225</span><span id="line-2225">  }</span>
-<span class="source-line-no">2226</span><span id="line-2226"></span>
-<span class="source-line-no">2227</span><span id="line-2227">  @Override</span>
-<span class="source-line-no">2228</span><span id="line-2228">  public GetReplicationPeerModificationProceduresResponse getReplicationPeerModificationProcedures(</span>
-<span class="source-line-no">2229</span><span id="line-2229">    RpcController controller, GetReplicationPeerModificationProceduresRequest request)</span>
-<span class="source-line-no">2230</span><span id="line-2230">    throws ServiceException {</span>
-<span class="source-line-no">2231</span><span id="line-2231">    try {</span>
-<span class="source-line-no">2232</span><span id="line-2232">      server.checkInitialized();</span>
-<span class="source-line-no">2233</span><span id="line-2233">      GetReplicationPeerModificationProceduresResponse.Builder builder =</span>
-<span class="source-line-no">2234</span><span id="line-2234">        GetReplicationPeerModificationProceduresResponse.newBuilder();</span>
-<span class="source-line-no">2235</span><span id="line-2235">      for (Procedure&lt;?&gt; proc : server.getProcedures()) {</span>
-<span class="source-line-no">2236</span><span id="line-2236">        if (proc.isFinished()) {</span>
-<span class="source-line-no">2237</span><span id="line-2237">          continue;</span>
-<span class="source-line-no">2238</span><span id="line-2238">        }</span>
-<span class="source-line-no">2239</span><span id="line-2239">        if (!(proc instanceof AbstractPeerNoLockProcedure)) {</span>
-<span class="source-line-no">2240</span><span id="line-2240">          continue;</span>
-<span class="source-line-no">2241</span><span id="line-2241">        }</span>
-<span class="source-line-no">2242</span><span id="line-2242">        builder.addProcedure(ProcedureUtil.convertToProtoProcedure(proc));</span>
-<span class="source-line-no">2243</span><span id="line-2243">      }</span>
-<span class="source-line-no">2244</span><span id="line-2244">      return builder.build();</span>
-<span class="source-line-no">2245</span><span id="line-2245">    } catch (IOException ioe) {</span>
-<span class="source-line-no">2246</span><span id="line-2246">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">2247</span><span id="line-2247">    }</span>
-<span class="source-line-no">2248</span><span id="line-2248">  }</span>
-<span class="source-line-no">2249</span><span id="line-2249"></span>
-<span class="source-line-no">2250</span><span id="line-2250">  @Override</span>
-<span class="source-line-no">2251</span><span id="line-2251">  public IsReplicationPeerModificationEnabledResponse isReplicationPeerModificationEnabled(</span>
-<span class="source-line-no">2252</span><span id="line-2252">    RpcController controller, IsReplicationPeerModificationEnabledRequest request)</span>
-<span class="source-line-no">2253</span><span id="line-2253">    throws ServiceException {</span>
-<span class="source-line-no">2254</span><span id="line-2254">    try {</span>
-<span class="source-line-no">2255</span><span id="line-2255">      server.checkInitialized();</span>
-<span class="source-line-no">2256</span><span id="line-2256">      return IsReplicationPeerModificationEnabledResponse.newBuilder()</span>
-<span class="source-line-no">2257</span><span id="line-2257">        .setEnabled(server.isReplicationPeerModificationEnabled()).build();</span>
-<span class="source-line-no">2258</span><span id="line-2258">    } catch (IOException ioe) {</span>
-<span class="source-line-no">2259</span><span id="line-2259">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">2260</span><span id="line-2260">    }</span>
-<span class="source-line-no">2261</span><span id="line-2261">  }</span>
-<span class="source-line-no">2262</span><span id="line-2262"></span>
-<span class="source-line-no">2263</span><span id="line-2263">  @Override</span>
-<span class="source-line-no">2264</span><span id="line-2264">  public ListDecommissionedRegionServersResponse listDecommissionedRegionServers(</span>
-<span class="source-line-no">2265</span><span id="line-2265">    RpcController controller, ListDecommissionedRegionServersRequest request)</span>
-<span class="source-line-no">2266</span><span id="line-2266">    throws ServiceException {</span>
-<span class="source-line-no">2267</span><span id="line-2267">    ListDecommissionedRegionServersResponse.Builder response =</span>
-<span class="source-line-no">2268</span><span id="line-2268">      ListDecommissionedRegionServersResponse.newBuilder();</span>
-<span class="source-line-no">2269</span><span id="line-2269">    try {</span>
-<span class="source-line-no">2270</span><span id="line-2270">      server.checkInitialized();</span>
-<span class="source-line-no">2271</span><span id="line-2271">      if (server.cpHost != null) {</span>
-<span class="source-line-no">2272</span><span id="line-2272">        server.cpHost.preListDecommissionedRegionServers();</span>
-<span class="source-line-no">2273</span><span id="line-2273">      }</span>
-<span class="source-line-no">2274</span><span id="line-2274">      List&lt;ServerName&gt; servers = server.listDecommissionedRegionServers();</span>
-<span class="source-line-no">2275</span><span id="line-2275">      response.addAllServerName((servers.stream().map(server -&gt; ProtobufUtil.toServerName(server)))</span>
-<span class="source-line-no">2276</span><span id="line-2276">        .collect(Collectors.toList()));</span>
-<span class="source-line-no">2277</span><span id="line-2277">      if (server.cpHost != null) {</span>
-<span class="source-line-no">2278</span><span id="line-2278">        server.cpHost.postListDecommissionedRegionServers();</span>
-<span class="source-line-no">2279</span><span id="line-2279">      }</span>
-<span class="source-line-no">2280</span><span id="line-2280">    } catch (IOException io) {</span>
-<span class="source-line-no">2281</span><span id="line-2281">      throw new ServiceException(io);</span>
-<span class="source-line-no">2282</span><span id="line-2282">    }</span>
-<span class="source-line-no">2283</span><span id="line-2283"></span>
-<span class="source-line-no">2284</span><span id="line-2284">    return response.build();</span>
-<span class="source-line-no">2285</span><span id="line-2285">  }</span>
-<span class="source-line-no">2286</span><span id="line-2286"></span>
-<span class="source-line-no">2287</span><span id="line-2287">  @Override</span>
-<span class="source-line-no">2288</span><span id="line-2288">  public DecommissionRegionServersResponse decommissionRegionServers(RpcController controller,</span>
-<span class="source-line-no">2289</span><span id="line-2289">    DecommissionRegionServersRequest request) throws ServiceException {</span>
-<span class="source-line-no">2290</span><span id="line-2290">    try {</span>
-<span class="source-line-no">2291</span><span id="line-2291">      server.checkInitialized();</span>
-<span class="source-line-no">2292</span><span id="line-2292">      List&lt;ServerName&gt; servers = request.getServerNameList().stream()</span>
-<span class="source-line-no">2293</span><span id="line-2293">        .map(pbServer -&gt; ProtobufUtil.toServerName(pbServer)).collect(Collectors.toList());</span>
-<span class="source-line-no">2294</span><span id="line-2294">      boolean offload = request.getOffload();</span>
-<span class="source-line-no">2295</span><span id="line-2295">      if (server.cpHost != null) {</span>
-<span class="source-line-no">2296</span><span id="line-2296">        server.cpHost.preDecommissionRegionServers(servers, offload);</span>
-<span class="source-line-no">2297</span><span id="line-2297">      }</span>
-<span class="source-line-no">2298</span><span id="line-2298">      server.decommissionRegionServers(servers, offload);</span>
-<span class="source-line-no">2299</span><span id="line-2299">      if (server.cpHost != null) {</span>
-<span class="source-line-no">2300</span><span id="line-2300">        server.cpHost.postDecommissionRegionServers(servers, offload);</span>
-<span class="source-line-no">2301</span><span id="line-2301">      }</span>
-<span class="source-line-no">2302</span><span id="line-2302">    } catch (IOException io) {</span>
-<span class="source-line-no">2303</span><span id="line-2303">      throw new ServiceException(io);</span>
-<span class="source-line-no">2304</span><span id="line-2304">    }</span>
-<span class="source-line-no">2305</span><span id="line-2305"></span>
-<span class="source-line-no">2306</span><span id="line-2306">    return DecommissionRegionServersResponse.newBuilder().build();</span>
-<span class="source-line-no">2307</span><span id="line-2307">  }</span>
-<span class="source-line-no">2308</span><span id="line-2308"></span>
-<span class="source-line-no">2309</span><span id="line-2309">  @Override</span>
-<span class="source-line-no">2310</span><span id="line-2310">  public RecommissionRegionServerResponse recommissionRegionServer(RpcController controller,</span>
-<span class="source-line-no">2311</span><span id="line-2311">    RecommissionRegionServerRequest request) throws ServiceException {</span>
-<span class="source-line-no">2312</span><span id="line-2312">    try {</span>
-<span class="source-line-no">2313</span><span id="line-2313">      server.checkInitialized();</span>
-<span class="source-line-no">2314</span><span id="line-2314">      ServerName sn = ProtobufUtil.toServerName(request.getServerName());</span>
-<span class="source-line-no">2315</span><span id="line-2315">      List&lt;byte[]&gt; encodedRegionNames = request.getRegionList().stream()</span>
-<span class="source-line-no">2316</span><span id="line-2316">        .map(regionSpecifier -&gt; regionSpecifier.getValue().toByteArray())</span>
-<span class="source-line-no">2317</span><span id="line-2317">        .collect(Collectors.toList());</span>
-<span class="source-line-no">2318</span><span id="line-2318">      if (server.cpHost != null) {</span>
-<span class="source-line-no">2319</span><span id="line-2319">        server.cpHost.preRecommissionRegionServer(sn, encodedRegionNames);</span>
-<span class="source-line-no">2320</span><span id="line-2320">      }</span>
-<span class="source-line-no">2321</span><span id="line-2321">      server.recommissionRegionServer(sn, encodedRegionNames);</span>
-<span class="source-line-no">2322</span><span id="line-2322">      if (server.cpHost != null) {</span>
-<span class="source-line-no">2323</span><span id="line-2323">        server.cpHost.postRecommissionRegionServer(sn, encodedRegionNames);</span>
-<span class="source-line-no">2324</span><span id="line-2324">      }</span>
-<span class="source-line-no">2325</span><span id="line-2325">    } catch (IOException io) {</span>
-<span class="source-line-no">2326</span><span id="line-2326">      throw new ServiceException(io);</span>
-<span class="source-line-no">2327</span><span id="line-2327">    }</span>
-<span class="source-line-no">2328</span><span id="line-2328"></span>
-<span class="source-line-no">2329</span><span id="line-2329">    return RecommissionRegionServerResponse.newBuilder().build();</span>
-<span class="source-line-no">2330</span><span id="line-2330">  }</span>
-<span class="source-line-no">2331</span><span id="line-2331"></span>
-<span class="source-line-no">2332</span><span id="line-2332">  @Override</span>
-<span class="source-line-no">2333</span><span id="line-2333">  public LockResponse requestLock(RpcController controller, final LockRequest request)</span>
-<span class="source-line-no">2334</span><span id="line-2334">    throws ServiceException {</span>
-<span class="source-line-no">2335</span><span id="line-2335">    try {</span>
-<span class="source-line-no">2336</span><span id="line-2336">      if (request.getDescription().isEmpty()) {</span>
-<span class="source-line-no">2337</span><span id="line-2337">        throw new IllegalArgumentException("Empty description");</span>
-<span class="source-line-no">2338</span><span id="line-2338">      }</span>
-<span class="source-line-no">2339</span><span id="line-2339">      NonceProcedureRunnable npr;</span>
-<span class="source-line-no">2340</span><span id="line-2340">      LockType type = LockType.valueOf(request.getLockType().name());</span>
-<span class="source-line-no">2341</span><span id="line-2341">      if (request.getRegionInfoCount() &gt; 0) {</span>
-<span class="source-line-no">2342</span><span id="line-2342">        final RegionInfo[] regionInfos = new RegionInfo[request.getRegionInfoCount()];</span>
-<span class="source-line-no">2343</span><span id="line-2343">        for (int i = 0; i &lt; request.getRegionInfoCount(); ++i) {</span>
-<span class="source-line-no">2344</span><span id="line-2344">          regionInfos[i] = ProtobufUtil.toRegionInfo(request.getRegionInfo(i));</span>
-<span class="source-line-no">2345</span><span id="line-2345">        }</span>
-<span class="source-line-no">2346</span><span id="line-2346">        npr = new NonceProcedureRunnable(server, request.getNonceGroup(), request.getNonce()) {</span>
-<span class="source-line-no">2347</span><span id="line-2347">          @Override</span>
-<span class="source-line-no">2348</span><span id="line-2348">          protected void run() throws IOException {</span>
-<span class="source-line-no">2349</span><span id="line-2349">            setProcId(server.getLockManager().remoteLocks().requestRegionsLock(regionInfos,</span>
-<span class="source-line-no">2350</span><span id="line-2350">              request.getDescription(), getNonceKey()));</span>
-<span class="source-line-no">2351</span><span id="line-2351">          }</span>
-<span class="source-line-no">2352</span><span id="line-2352"></span>
-<span class="source-line-no">2353</span><span id="line-2353">          @Override</span>
-<span class="source-line-no">2354</span><span id="line-2354">          protected String getDescription() {</span>
-<span class="source-line-no">2355</span><span id="line-2355">            return "RequestLock";</span>
-<span class="source-line-no">2356</span><span id="line-2356">          }</span>
-<span class="source-line-no">2357</span><span id="line-2357">        };</span>
-<span class="source-line-no">2358</span><span id="line-2358">      } else if (request.hasTableName()) {</span>
-<span class="source-line-no">2359</span><span id="line-2359">        final TableName tableName = ProtobufUtil.toTableName(request.getTableName());</span>
-<span class="source-line-no">2360</span><span id="line-2360">        npr = new NonceProcedureRunnable(server, request.getNonceGroup(), request.getNonce()) {</span>
-<span class="source-line-no">2361</span><span id="line-2361">          @Override</span>
-<span class="source-line-no">2362</span><span id="line-2362">          protected void run() throws IOException {</span>
-<span class="source-line-no">2363</span><span id="line-2363">            setProcId(server.getLockManager().remoteLocks().requestTableLock(tableName, type,</span>
-<span class="source-line-no">2364</span><span id="line-2364">              request.getDescription(), getNonceKey()));</span>
-<span class="source-line-no">2365</span><span id="line-2365">          }</span>
-<span class="source-line-no">2366</span><span id="line-2366"></span>
-<span class="source-line-no">2367</span><span id="line-2367">          @Override</span>
-<span class="source-line-no">2368</span><span id="line-2368">          protected String getDescription() {</span>
-<span class="source-line-no">2369</span><span id="line-2369">            return "RequestLock";</span>
-<span class="source-line-no">2370</span><span id="line-2370">          }</span>
-<span class="source-line-no">2371</span><span id="line-2371">        };</span>
-<span class="source-line-no">2372</span><span id="line-2372">      } else if (request.hasNamespace()) {</span>
-<span class="source-line-no">2373</span><span id="line-2373">        npr = new NonceProcedureRunnable(server, request.getNonceGroup(), request.getNonce()) {</span>
-<span class="source-line-no">2374</span><span id="line-2374">          @Override</span>
-<span class="source-line-no">2375</span><span id="line-2375">          protected void run() throws IOException {</span>
-<span class="source-line-no">2376</span><span id="line-2376">            setProcId(server.getLockManager().remoteLocks().requestNamespaceLock(</span>
-<span class="source-line-no">2377</span><span id="line-2377">              request.getNamespace(), type, request.getDescription(), getNonceKey()));</span>
-<span class="source-line-no">2378</span><span id="line-2378">          }</span>
-<span class="source-line-no">2379</span><span id="line-2379"></span>
-<span class="source-line-no">2380</span><span id="line-2380">          @Override</span>
-<span class="source-line-no">2381</span><span id="line-2381">          protected String getDescription() {</span>
-<span class="source-line-no">2382</span><span id="line-2382">            return "RequestLock";</span>
-<span class="source-line-no">2383</span><span id="line-2383">          }</span>
-<span class="source-line-no">2384</span><span id="line-2384">        };</span>
-<span class="source-line-no">2385</span><span id="line-2385">      } else {</span>
-<span class="source-line-no">2386</span><span id="line-2386">        throw new IllegalArgumentException("one of table/namespace/region should be specified");</span>
-<span class="source-line-no">2387</span><span id="line-2387">      }</span>
-<span class="source-line-no">2388</span><span id="line-2388">      long procId = MasterProcedureUtil.submitProcedure(npr);</span>
-<span class="source-line-no">2389</span><span id="line-2389">      return LockResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">2390</span><span id="line-2390">    } catch (IllegalArgumentException e) {</span>
-<span class="source-line-no">2391</span><span id="line-2391">      LOG.warn("Exception when queuing lock", e);</span>
-<span class="source-line-no">2392</span><span id="line-2392">      throw new ServiceException(new DoNotRetryIOException(e));</span>
-<span class="source-line-no">2393</span><span id="line-2393">    } catch (IOException e) {</span>
-<span class="source-line-no">2394</span><span id="line-2394">      LOG.warn("Exception when queuing lock", e);</span>
-<span class="source-line-no">2395</span><span id="line-2395">      throw new ServiceException(e);</span>
-<span class="source-line-no">2396</span><span id="line-2396">    }</span>
-<span class="source-line-no">2397</span><span id="line-2397">  }</span>
-<span class="source-line-no">2398</span><span id="line-2398"></span>
-<span class="source-line-no">2399</span><span id="line-2399">  /**</span>
-<span class="source-line-no">2400</span><span id="line-2400">   * @return LOCKED, if procedure is found and it has the lock; else UNLOCKED.</span>
-<span class="source-line-no">2401</span><span id="line-2401">   * @throws ServiceException if given proc id is found but it is not a LockProcedure.</span>
-<span class="source-line-no">2402</span><span id="line-2402">   */</span>
-<span class="source-line-no">2403</span><span id="line-2403">  @Override</span>
-<span class="source-line-no">2404</span><span id="line-2404">  public LockHeartbeatResponse lockHeartbeat(RpcController controller, LockHeartbeatRequest request)</span>
-<span class="source-line-no">2405</span><span id="line-2405">    throws ServiceException {</span>
-<span class="source-line-no">2406</span><span id="line-2406">    try {</span>
-<span class="source-line-no">2407</span><span id="line-2407">      if (</span>
-<span class="source-line-no">2408</span><span id="line-2408">        server.getLockManager().remoteLocks().lockHeartbeat(request.getProcId(),</span>
-<span class="source-line-no">2409</span><span id="line-2409">          request.getKeepAlive())</span>
-<span class="source-line-no">2410</span><span id="line-2410">      ) {</span>
-<span class="source-line-no">2411</span><span id="line-2411">        return LockHeartbeatResponse.newBuilder()</span>
-<span class="source-line-no">2412</span><span id="line-2412">          .setTimeoutMs(server.getConfiguration().getInt(LockProcedure.REMOTE_LOCKS_TIMEOUT_MS_CONF,</span>
-<span class="source-line-no">2413</span><span id="line-2413">            LockProcedure.DEFAULT_REMOTE_LOCKS_TIMEOUT_MS))</span>
-<span class="source-line-no">2414</span><span id="line-2414">          .setLockStatus(LockHeartbeatResponse.LockStatus.LOCKED).build();</span>
-<span class="source-line-no">2415</span><span id="line-2415">      } else {</span>
-<span class="source-line-no">2416</span><span id="line-2416">        return LockHeartbeatResponse.newBuilder()</span>
-<span class="source-line-no">2417</span><span id="line-2417">          .setLockStatus(LockHeartbeatResponse.LockStatus.UNLOCKED).build();</span>
-<span class="source-line-no">2418</span><span id="line-2418">      }</span>
-<span class="source-line-no">2419</span><span id="line-2419">    } catch (IOException e) {</span>
-<span class="source-line-no">2420</span><span id="line-2420">      throw new ServiceException(e);</span>
-<span class="source-line-no">2421</span><span id="line-2421">    }</span>
-<span class="source-line-no">2422</span><span id="line-2422">  }</span>
-<span class="source-line-no">2423</span><span id="line-2423"></span>
-<span class="source-line-no">2424</span><span id="line-2424">  @Override</span>
-<span class="source-line-no">2425</span><span id="line-2425">  public RegionSpaceUseReportResponse reportRegionSpaceUse(RpcController controller,</span>
-<span class="source-line-no">2426</span><span id="line-2426">    RegionSpaceUseReportRequest request) throws ServiceException {</span>
-<span class="source-line-no">2427</span><span id="line-2427">    try {</span>
-<span class="source-line-no">2428</span><span id="line-2428">      server.checkInitialized();</span>
-<span class="source-line-no">2429</span><span id="line-2429">      if (!QuotaUtil.isQuotaEnabled(server.getConfiguration())) {</span>
-<span class="source-line-no">2430</span><span id="line-2430">        return RegionSpaceUseReportResponse.newBuilder().build();</span>
-<span class="source-line-no">2431</span><span id="line-2431">      }</span>
-<span class="source-line-no">2432</span><span id="line-2432">      MasterQuotaManager quotaManager = this.server.getMasterQuotaManager();</span>
-<span class="source-line-no">2433</span><span id="line-2433">      if (quotaManager != null) {</span>
-<span class="source-line-no">2434</span><span id="line-2434">        final long now = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">2435</span><span id="line-2435">        for (RegionSpaceUse report : request.getSpaceUseList()) {</span>
-<span class="source-line-no">2436</span><span id="line-2436">          quotaManager.addRegionSize(ProtobufUtil.toRegionInfo(report.getRegionInfo()),</span>
-<span class="source-line-no">2437</span><span id="line-2437">            report.getRegionSize(), now);</span>
-<span class="source-line-no">2438</span><span id="line-2438">        }</span>
-<span class="source-line-no">2439</span><span id="line-2439">      } else {</span>
-<span class="source-line-no">2440</span><span id="line-2440">        LOG.debug("Received region space usage report but HMaster is not ready to process it, "</span>
-<span class="source-line-no">2441</span><span id="line-2441">          + "skipping");</span>
-<span class="source-line-no">2442</span><span id="line-2442">      }</span>
-<span class="source-line-no">2443</span><span id="line-2443">      return RegionSpaceUseReportResponse.newBuilder().build();</span>
-<span class="source-line-no">2444</span><span id="line-2444">    } catch (Exception e) {</span>
-<span class="source-line-no">2445</span><span id="line-2445">      throw new ServiceException(e);</span>
-<span class="source-line-no">2446</span><span id="line-2446">    }</span>
-<span class="source-line-no">2447</span><span id="line-2447">  }</span>
-<span class="source-line-no">2448</span><span id="line-2448"></span>
-<span class="source-line-no">2449</span><span id="line-2449">  @Override</span>
-<span class="source-line-no">2450</span><span id="line-2450">  public GetSpaceQuotaRegionSizesResponse getSpaceQuotaRegionSizes(RpcController controller,</span>
-<span class="source-line-no">2451</span><span id="line-2451">    GetSpaceQuotaRegionSizesRequest request) throws ServiceException {</span>
-<span class="source-line-no">2452</span><span id="line-2452">    try {</span>
-<span class="source-line-no">2453</span><span id="line-2453">      server.checkInitialized();</span>
-<span class="source-line-no">2454</span><span id="line-2454">      MasterQuotaManager quotaManager = this.server.getMasterQuotaManager();</span>
-<span class="source-line-no">2455</span><span id="line-2455">      GetSpaceQuotaRegionSizesResponse.Builder builder =</span>
-<span class="source-line-no">2456</span><span id="line-2456">        GetSpaceQuotaRegionSizesResponse.newBuilder();</span>
-<span class="source-line-no">2457</span><span id="line-2457">      if (quotaManager != null) {</span>
-<span class="source-line-no">2458</span><span id="line-2458">        Map&lt;RegionInfo, Long&gt; regionSizes = quotaManager.snapshotRegionSizes();</span>
-<span class="source-line-no">2459</span><span id="line-2459">        Map&lt;TableName, Long&gt; regionSizesByTable = new HashMap&lt;&gt;();</span>
-<span class="source-line-no">2460</span><span id="line-2460">        // Translate hregioninfo+long -&gt; tablename+long</span>
-<span class="source-line-no">2461</span><span id="line-2461">        for (Entry&lt;RegionInfo, Long&gt; entry : regionSizes.entrySet()) {</span>
-<span class="source-line-no">2462</span><span id="line-2462">          final TableName tableName = entry.getKey().getTable();</span>
-<span class="source-line-no">2463</span><span id="line-2463">          Long prevSize = regionSizesByTable.get(tableName);</span>
-<span class="source-line-no">2464</span><span id="line-2464">          if (prevSize == null) {</span>
-<span class="source-line-no">2465</span><span id="line-2465">            prevSize = 0L;</span>
-<span class="source-line-no">2466</span><span id="line-2466">          }</span>
-<span class="source-line-no">2467</span><span id="line-2467">          regionSizesByTable.put(tableName, prevSize + entry.getValue());</span>
-<span class="source-line-no">2468</span><span id="line-2468">        }</span>
-<span class="source-line-no">2469</span><span id="line-2469">        // Serialize them into the protobuf</span>
-<span class="source-line-no">2470</span><span id="line-2470">        for (Entry&lt;TableName, Long&gt; tableSize : regionSizesByTable.entrySet()) {</span>
-<span class="source-line-no">2471</span><span id="line-2471">          builder.addSizes(</span>
-<span class="source-line-no">2472</span><span id="line-2472">            RegionSizes.newBuilder().setTableName(ProtobufUtil.toProtoTableName(tableSize.getKey()))</span>
-<span class="source-line-no">2473</span><span id="line-2473">              .setSize(tableSize.getValue()).build());</span>
-<span class="source-line-no">2474</span><span id="line-2474">        }</span>
-<span class="source-line-no">2475</span><span id="line-2475">        return builder.build();</span>
-<span class="source-line-no">2476</span><span id="line-2476">      } else {</span>
-<span class="source-line-no">2477</span><span id="line-2477">        LOG.debug("Received space quota region size report but HMaster is not ready to process it,"</span>
-<span class="source-line-no">2478</span><span id="line-2478">          + "skipping");</span>
-<span class="source-line-no">2479</span><span id="line-2479">      }</span>
-<span class="source-line-no">2480</span><span id="line-2480">      return builder.build();</span>
-<span class="source-line-no">2481</span><span id="line-2481">    } catch (Exception e) {</span>
-<span class="source-line-no">2482</span><span id="line-2482">      throw new ServiceException(e);</span>
-<span class="source-line-no">2483</span><span id="line-2483">    }</span>
-<span class="source-line-no">2484</span><span id="line-2484">  }</span>
-<span class="source-line-no">2485</span><span id="line-2485"></span>
-<span class="source-line-no">2486</span><span id="line-2486">  @Override</span>
-<span class="source-line-no">2487</span><span id="line-2487">  public GetQuotaStatesResponse getQuotaStates(RpcController controller,</span>
-<span class="source-line-no">2488</span><span id="line-2488">    GetQuotaStatesRequest request) throws ServiceException {</span>
-<span class="source-line-no">2489</span><span id="line-2489">    try {</span>
-<span class="source-line-no">2490</span><span id="line-2490">      server.checkInitialized();</span>
-<span class="source-line-no">2491</span><span id="line-2491">      QuotaObserverChore quotaChore = this.server.getQuotaObserverChore();</span>
-<span class="source-line-no">2492</span><span id="line-2492">      GetQuotaStatesResponse.Builder builder = GetQuotaStatesResponse.newBuilder();</span>
-<span class="source-line-no">2493</span><span id="line-2493">      if (quotaChore != null) {</span>
-<span class="source-line-no">2494</span><span id="line-2494">        // The "current" view of all tables with quotas</span>
-<span class="source-line-no">2495</span><span id="line-2495">        Map&lt;TableName, SpaceQuotaSnapshot&gt; tableSnapshots = quotaChore.getTableQuotaSnapshots();</span>
-<span class="source-line-no">2496</span><span id="line-2496">        for (Entry&lt;TableName, SpaceQuotaSnapshot&gt; entry : tableSnapshots.entrySet()) {</span>
-<span class="source-line-no">2497</span><span id="line-2497">          builder.addTableSnapshots(TableQuotaSnapshot.newBuilder()</span>
-<span class="source-line-no">2498</span><span id="line-2498">            .setTableName(ProtobufUtil.toProtoTableName(entry.getKey()))</span>
-<span class="source-line-no">2499</span><span id="line-2499">            .setSnapshot(SpaceQuotaSnapshot.toProtoSnapshot(entry.getValue())).build());</span>
-<span class="source-line-no">2500</span><span id="line-2500">        }</span>
-<span class="source-line-no">2501</span><span id="line-2501">        // The "current" view of all namespaces with quotas</span>
-<span class="source-line-no">2502</span><span id="line-2502">        Map&lt;String, SpaceQuotaSnapshot&gt; nsSnapshots = quotaChore.getNamespaceQuotaSnapshots();</span>
-<span class="source-line-no">2503</span><span id="line-2503">        for (Entry&lt;String, SpaceQuotaSnapshot&gt; entry : nsSnapshots.entrySet()) {</span>
-<span class="source-line-no">2504</span><span id="line-2504">          builder.addNsSnapshots(NamespaceQuotaSnapshot.newBuilder().setNamespace(entry.getKey())</span>
-<span class="source-line-no">2505</span><span id="line-2505">            .setSnapshot(SpaceQuotaSnapshot.toProtoSnapshot(entry.getValue())).build());</span>
-<span class="source-line-no">2506</span><span id="line-2506">        }</span>
-<span class="source-line-no">2507</span><span id="line-2507">        return builder.build();</span>
-<span class="source-line-no">2508</span><span id="line-2508">      }</span>
-<span class="source-line-no">2509</span><span id="line-2509">      return builder.build();</span>
-<span class="source-line-no">2510</span><span id="line-2510">    } catch (Exception e) {</span>
-<span class="source-line-no">2511</span><span id="line-2511">      throw new ServiceException(e);</span>
-<span class="source-line-no">2512</span><span id="line-2512">    }</span>
-<span class="source-line-no">2513</span><span id="line-2513">  }</span>
-<span class="source-line-no">2514</span><span id="line-2514"></span>
-<span class="source-line-no">2515</span><span id="line-2515">  @Override</span>
-<span class="source-line-no">2516</span><span id="line-2516">  public ClearDeadServersResponse clearDeadServers(RpcController controller,</span>
-<span class="source-line-no">2517</span><span id="line-2517">    ClearDeadServersRequest request) throws ServiceException {</span>
-<span class="source-line-no">2518</span><span id="line-2518">    LOG.debug(server.getClientIdAuditPrefix() + " clear dead region servers.");</span>
-<span class="source-line-no">2519</span><span id="line-2519">    ClearDeadServersResponse.Builder response = ClearDeadServersResponse.newBuilder();</span>
-<span class="source-line-no">2520</span><span id="line-2520">    try {</span>
-<span class="source-line-no">2521</span><span id="line-2521">      server.checkInitialized();</span>
-<span class="source-line-no">2522</span><span id="line-2522">      if (server.cpHost != null) {</span>
-<span class="source-line-no">2523</span><span id="line-2523">        server.cpHost.preClearDeadServers();</span>
-<span class="source-line-no">2524</span><span id="line-2524">      }</span>
-<span class="source-line-no">2525</span><span id="line-2525"></span>
-<span class="source-line-no">2526</span><span id="line-2526">      if (server.getServerManager().areDeadServersInProgress()) {</span>
-<span class="source-line-no">2527</span><span id="line-2527">        LOG.debug("Some dead server is still under processing, won't clear the dead server list");</span>
-<span class="source-line-no">2528</span><span id="line-2528">        response.addAllServerName(request.getServerNameList());</span>
-<span class="source-line-no">2529</span><span id="line-2529">      } else {</span>
-<span class="source-line-no">2530</span><span id="line-2530">        DeadServer deadServer = server.getServerManager().getDeadServers();</span>
-<span class="source-line-no">2531</span><span id="line-2531">        Set&lt;Address&gt; clearedServers = new HashSet&lt;&gt;();</span>
-<span class="source-line-no">2532</span><span id="line-2532">        for (HBaseProtos.ServerName pbServer : request.getServerNameList()) {</span>
-<span class="source-line-no">2533</span><span id="line-2533">          ServerName serverName = ProtobufUtil.toServerName(pbServer);</span>
-<span class="source-line-no">2534</span><span id="line-2534">          final boolean deadInProcess =</span>
-<span class="source-line-no">2535</span><span id="line-2535">            server.getProcedures().stream().anyMatch(p -&gt; (p instanceof ServerCrashProcedure)</span>
-<span class="source-line-no">2536</span><span id="line-2536">              &amp;&amp; ((ServerCrashProcedure) p).getServerName().equals(serverName));</span>
-<span class="source-line-no">2537</span><span id="line-2537">          if (deadInProcess) {</span>
-<span class="source-line-no">2538</span><span id="line-2538">            throw new ServiceException(</span>
-<span class="source-line-no">2539</span><span id="line-2539">              String.format("Dead server '%s' is not 'dead' in fact...", serverName));</span>
-<span class="source-line-no">2540</span><span id="line-2540">          }</span>
-<span class="source-line-no">2541</span><span id="line-2541"></span>
-<span class="source-line-no">2542</span><span id="line-2542">          if (!deadServer.removeDeadServer(serverName)) {</span>
-<span class="source-line-no">2543</span><span id="line-2543">            response.addServerName(pbServer);</span>
-<span class="source-line-no">2544</span><span id="line-2544">          } else {</span>
-<span class="source-line-no">2545</span><span id="line-2545">            clearedServers.add(serverName.getAddress());</span>
-<span class="source-line-no">2546</span><span id="line-2546">          }</span>
-<span class="source-line-no">2547</span><span id="line-2547">        }</span>
-<span class="source-line-no">2548</span><span id="line-2548">        server.getRSGroupInfoManager().removeServers(clearedServers);</span>
-<span class="source-line-no">2549</span><span id="line-2549">        LOG.info("Remove decommissioned servers {} from RSGroup done", clearedServers);</span>
-<span class="source-line-no">2550</span><span id="line-2550">      }</span>
-<span class="source-line-no">2551</span><span id="line-2551"></span>
-<span class="source-line-no">2552</span><span id="line-2552">      if (server.cpHost != null) {</span>
-<span class="source-line-no">2553</span><span id="line-2553">        server.cpHost.postClearDeadServers(</span>
-<span class="source-line-no">2554</span><span id="line-2554">          ProtobufUtil.toServerNameList(request.getServerNameList()),</span>
-<span class="source-line-no">2555</span><span id="line-2555">          ProtobufUtil.toServerNameList(response.getServerNameList()));</span>
-<span class="source-line-no">2556</span><span id="line-2556">      }</span>
-<span class="source-line-no">2557</span><span id="line-2557">    } catch (IOException io) {</span>
-<span class="source-line-no">2558</span><span id="line-2558">      throw new ServiceException(io);</span>
-<span class="source-line-no">2559</span><span id="line-2559">    }</span>
-<span class="source-line-no">2560</span><span id="line-2560">    return response.build();</span>
-<span class="source-line-no">2561</span><span id="line-2561">  }</span>
-<span class="source-line-no">2562</span><span id="line-2562"></span>
-<span class="source-line-no">2563</span><span id="line-2563">  @Override</span>
-<span class="source-line-no">2564</span><span id="line-2564">  public ReportProcedureDoneResponse reportProcedureDone(RpcController controller,</span>
-<span class="source-line-no">2565</span><span id="line-2565">    ReportProcedureDoneRequest request) throws ServiceException {</span>
-<span class="source-line-no">2566</span><span id="line-2566">    // Check Masters is up and ready for duty before progressing. Remote side will keep trying.</span>
-<span class="source-line-no">2567</span><span id="line-2567">    try {</span>
-<span class="source-line-no">2568</span><span id="line-2568">      this.server.checkServiceStarted();</span>
-<span class="source-line-no">2569</span><span id="line-2569">      for (RemoteProcedureResult result : request.getResultList()) {</span>
-<span class="source-line-no">2570</span><span id="line-2570">        // -1 is less than any possible MasterActiveCode</span>
-<span class="source-line-no">2571</span><span id="line-2571">        long initiatingMasterActiveTime =</span>
-<span class="source-line-no">2572</span><span id="line-2572">          result.hasInitiatingMasterActiveTime() ? result.getInitiatingMasterActiveTime() : -1;</span>
-<span class="source-line-no">2573</span><span id="line-2573">        throwOnOldMaster(result.getProcId(), initiatingMasterActiveTime);</span>
-<span class="source-line-no">2574</span><span id="line-2574">      }</span>
-<span class="source-line-no">2575</span><span id="line-2575">    } catch (IOException ioe) {</span>
-<span class="source-line-no">2576</span><span id="line-2576">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">2577</span><span id="line-2577">    }</span>
-<span class="source-line-no">2578</span><span id="line-2578">    request.getResultList().forEach(result -&gt; {</span>
-<span class="source-line-no">2579</span><span id="line-2579">      if (result.getStatus() == RemoteProcedureResult.Status.SUCCESS) {</span>
-<span class="source-line-no">2580</span><span id="line-2580">        byte[] remoteResultData =</span>
-<span class="source-line-no">2581</span><span id="line-2581">          result.hasProcResultData() ? result.getProcResultData().toByteArray() : null;</span>
-<span class="source-line-no">2582</span><span id="line-2582">        server.remoteProcedureCompleted(result.getProcId(), remoteResultData);</span>
-<span class="source-line-no">2583</span><span id="line-2583">      } else {</span>
-<span class="source-line-no">2584</span><span id="line-2584">        server.remoteProcedureFailed(result.getProcId(),</span>
-<span class="source-line-no">2585</span><span id="line-2585">          RemoteProcedureException.fromProto(result.getError()));</span>
-<span class="source-line-no">2586</span><span id="line-2586">      }</span>
-<span class="source-line-no">2587</span><span id="line-2587">    });</span>
-<span class="source-line-no">2588</span><span id="line-2588">    return ReportProcedureDoneResponse.getDefaultInstance();</span>
-<span class="source-line-no">2589</span><span id="line-2589">  }</span>
-<span class="source-line-no">2590</span><span id="line-2590"></span>
-<span class="source-line-no">2591</span><span id="line-2591">  private void throwOnOldMaster(long procId, long initiatingMasterActiveTime)</span>
-<span class="source-line-no">2592</span><span id="line-2592">    throws MasterNotRunningException {</span>
-<span class="source-line-no">2593</span><span id="line-2593">    if (initiatingMasterActiveTime &gt; server.getMasterActiveTime()) {</span>
-<span class="source-line-no">2594</span><span id="line-2594">      // procedure is initiated by new active master but report received on master with older active</span>
-<span class="source-line-no">2595</span><span id="line-2595">      // time</span>
-<span class="source-line-no">2596</span><span id="line-2596">      LOG.warn(</span>
-<span class="source-line-no">2597</span><span id="line-2597">        "Report for procId: {} and initiatingMasterAT {} received on master with activeTime {}",</span>
-<span class="source-line-no">2598</span><span id="line-2598">        procId, initiatingMasterActiveTime, server.getMasterActiveTime());</span>
-<span class="source-line-no">2599</span><span id="line-2599">      throw new MasterNotRunningException("Another master is active");</span>
-<span class="source-line-no">2600</span><span id="line-2600">    }</span>
-<span class="source-line-no">2601</span><span id="line-2601">  }</span>
-<span class="source-line-no">2602</span><span id="line-2602"></span>
-<span class="source-line-no">2603</span><span id="line-2603">  @Override</span>
-<span class="source-line-no">2604</span><span id="line-2604">  public FileArchiveNotificationResponse reportFileArchival(RpcController controller,</span>
-<span class="source-line-no">2605</span><span id="line-2605">    FileArchiveNotificationRequest request) throws ServiceException {</span>
-<span class="source-line-no">2606</span><span id="line-2606">    try {</span>
-<span class="source-line-no">2607</span><span id="line-2607">      server.checkInitialized();</span>
-<span class="source-line-no">2608</span><span id="line-2608">      if (!QuotaUtil.isQuotaEnabled(server.getConfiguration())) {</span>
-<span class="source-line-no">2609</span><span id="line-2609">        return FileArchiveNotificationResponse.newBuilder().build();</span>
-<span class="source-line-no">2610</span><span id="line-2610">      }</span>
-<span class="source-line-no">2611</span><span id="line-2611">      server.getMasterQuotaManager().processFileArchivals(request, server.getConnection(),</span>
-<span class="source-line-no">2612</span><span id="line-2612">        server.getConfiguration(), server.getFileSystem());</span>
-<span class="source-line-no">2613</span><span id="line-2613">      return FileArchiveNotificationResponse.newBuilder().build();</span>
-<span class="source-line-no">2614</span><span id="line-2614">    } catch (Exception e) {</span>
-<span class="source-line-no">2615</span><span id="line-2615">      throw new ServiceException(e);</span>
-<span class="source-line-no">2616</span><span id="line-2616">    }</span>
-<span class="source-line-no">2617</span><span id="line-2617">  }</span>
-<span class="source-line-no">2618</span><span id="line-2618"></span>
-<span class="source-line-no">2619</span><span id="line-2619">  // HBCK Services</span>
-<span class="source-line-no">2620</span><span id="line-2620"></span>
-<span class="source-line-no">2621</span><span id="line-2621">  @Override</span>
-<span class="source-line-no">2622</span><span id="line-2622">  public RunHbckChoreResponse runHbckChore(RpcController c, RunHbckChoreRequest req)</span>
-<span class="source-line-no">2623</span><span id="line-2623">    throws ServiceException {</span>
-<span class="source-line-no">2624</span><span id="line-2624">    rpcPreCheck("runHbckChore");</span>
-<span class="source-line-no">2625</span><span id="line-2625">    LOG.info("{} request HBCK chore to run", server.getClientIdAuditPrefix());</span>
-<span class="source-line-no">2626</span><span id="line-2626">    HbckChore hbckChore = server.getHbckChore();</span>
-<span class="source-line-no">2627</span><span id="line-2627">    boolean ran = hbckChore.runChore();</span>
-<span class="source-line-no">2628</span><span id="line-2628">    return RunHbckChoreResponse.newBuilder().setRan(ran).build();</span>
-<span class="source-line-no">2629</span><span id="line-2629">  }</span>
-<span class="source-line-no">2630</span><span id="line-2630"></span>
-<span class="source-line-no">2631</span><span id="line-2631">  /**</span>
-<span class="source-line-no">2632</span><span id="line-2632">   * Update state of the table in meta only. This is required by hbck in some situations to cleanup</span>
-<span class="source-line-no">2633</span><span id="line-2633">   * stuck assign/ unassign regions procedures for the table.</span>
-<span class="source-line-no">2634</span><span id="line-2634">   * @return previous state of the table</span>
-<span class="source-line-no">2635</span><span id="line-2635">   */</span>
-<span class="source-line-no">2636</span><span id="line-2636">  @Override</span>
-<span class="source-line-no">2637</span><span id="line-2637">  public GetTableStateResponse setTableStateInMeta(RpcController controller,</span>
-<span class="source-line-no">2638</span><span id="line-2638">    SetTableStateInMetaRequest request) throws ServiceException {</span>
-<span class="source-line-no">2639</span><span id="line-2639">    rpcPreCheck("setTableStateInMeta");</span>
-<span class="source-line-no">2640</span><span id="line-2640">    TableName tn = ProtobufUtil.toTableName(request.getTableName());</span>
-<span class="source-line-no">2641</span><span id="line-2641">    try {</span>
-<span class="source-line-no">2642</span><span id="line-2642">      TableState prevState = this.server.getTableStateManager().getTableState(tn);</span>
-<span class="source-line-no">2643</span><span id="line-2643">      TableState newState = TableState.convert(tn, request.getTableState());</span>
-<span class="source-line-no">2644</span><span id="line-2644">      LOG.info("{} set table={} state from {} to {}", server.getClientIdAuditPrefix(), tn,</span>
-<span class="source-line-no">2645</span><span id="line-2645">        prevState.getState(), newState.getState());</span>
-<span class="source-line-no">2646</span><span id="line-2646">      this.server.getTableStateManager().setTableState(tn, newState.getState());</span>
-<span class="source-line-no">2647</span><span id="line-2647">      return GetTableStateResponse.newBuilder().setTableState(prevState.convert()).build();</span>
-<span class="source-line-no">2648</span><span id="line-2648">    } catch (Exception e) {</span>
-<span class="source-line-no">2649</span><span id="line-2649">      throw new ServiceException(e);</span>
-<span class="source-line-no">2650</span><span id="line-2650">    }</span>
-<span class="source-line-no">2651</span><span id="line-2651">  }</span>
-<span class="source-line-no">2652</span><span id="line-2652"></span>
-<span class="source-line-no">2653</span><span id="line-2653">  /**</span>
-<span class="source-line-no">2654</span><span id="line-2654">   * Update state of the region in meta only. This is required by hbck in some situations to cleanup</span>
-<span class="source-line-no">2655</span><span id="line-2655">   * stuck assign/ unassign regions procedures for the table.</span>
-<span class="source-line-no">2656</span><span id="line-2656">   * @return previous states of the regions</span>
-<span class="source-line-no">2657</span><span id="line-2657">   */</span>
-<span class="source-line-no">2658</span><span id="line-2658">  @Override</span>
-<span class="source-line-no">2659</span><span id="line-2659">  public SetRegionStateInMetaResponse setRegionStateInMeta(RpcController controller,</span>
-<span class="source-line-no">2660</span><span id="line-2660">    SetRegionStateInMetaRequest request) throws ServiceException {</span>
-<span class="source-line-no">2661</span><span id="line-2661">    rpcPreCheck("setRegionStateInMeta");</span>
-<span class="source-line-no">2662</span><span id="line-2662">    SetRegionStateInMetaResponse.Builder builder = SetRegionStateInMetaResponse.newBuilder();</span>
-<span class="source-line-no">2663</span><span id="line-2663">    final AssignmentManager am = server.getAssignmentManager();</span>
-<span class="source-line-no">2664</span><span id="line-2664">    try {</span>
-<span class="source-line-no">2665</span><span id="line-2665">      for (RegionSpecifierAndState s : request.getStatesList()) {</span>
-<span class="source-line-no">2666</span><span id="line-2666">        final RegionSpecifier spec = s.getRegionSpecifier();</span>
-<span class="source-line-no">2667</span><span id="line-2667">        final RegionInfo targetRegionInfo = getRegionInfo(spec);</span>
-<span class="source-line-no">2668</span><span id="line-2668">        final RegionState.State targetState = RegionState.State.convert(s.getState());</span>
-<span class="source-line-no">2669</span><span id="line-2669">        final RegionState.State currentState = Optional.ofNullable(targetRegionInfo)</span>
-<span class="source-line-no">2670</span><span id="line-2670">          .map(info -&gt; am.getRegionStates().getRegionState(info)).map(RegionState::getState)</span>
-<span class="source-line-no">2671</span><span id="line-2671">          .orElseThrow(</span>
-<span class="source-line-no">2672</span><span id="line-2672">            () -&gt; new ServiceException("No existing state known for region '" + spec + "'."));</span>
-<span class="source-line-no">2673</span><span id="line-2673">        LOG.info("{} set region={} state from {} to {}", server.getClientIdAuditPrefix(),</span>
-<span class="source-line-no">2674</span><span id="line-2674">          targetRegionInfo, currentState, targetState);</span>
-<span class="source-line-no">2675</span><span id="line-2675">        if (currentState == targetState) {</span>
-<span class="source-line-no">2676</span><span id="line-2676">          LOG.debug("Proposed state matches current state. {}, {}", targetRegionInfo, currentState);</span>
-<span class="source-line-no">2677</span><span id="line-2677">          continue;</span>
-<span class="source-line-no">2678</span><span id="line-2678">        }</span>
-<span class="source-line-no">2679</span><span id="line-2679">        MetaTableAccessor.updateRegionState(server.getConnection(), targetRegionInfo, targetState);</span>
-<span class="source-line-no">2680</span><span id="line-2680">        // Loads from meta again to refresh AM cache with the new region state</span>
-<span class="source-line-no">2681</span><span id="line-2681">        am.populateRegionStatesFromMeta(targetRegionInfo);</span>
-<span class="source-line-no">2682</span><span id="line-2682">        builder.addStates(RegionSpecifierAndState.newBuilder().setRegionSpecifier(spec)</span>
-<span class="source-line-no">2683</span><span id="line-2683">          .setState(currentState.convert()));</span>
-<span class="source-line-no">2684</span><span id="line-2684">      }</span>
-<span class="source-line-no">2685</span><span id="line-2685">    } catch (IOException e) {</span>
-<span class="source-line-no">2686</span><span id="line-2686">      throw new ServiceException(e);</span>
-<span class="source-line-no">2687</span><span id="line-2687">    }</span>
-<span class="source-line-no">2688</span><span id="line-2688">    return builder.build();</span>
-<span class="source-line-no">2689</span><span id="line-2689">  }</span>
-<span class="source-line-no">2690</span><span id="line-2690"></span>
-<span class="source-line-no">2691</span><span id="line-2691">  /**</span>
-<span class="source-line-no">2692</span><span id="line-2692">   * Get {@link RegionInfo} from Master using content of {@link RegionSpecifier} as key.</span>
-<span class="source-line-no">2693</span><span id="line-2693">   * @return {@link RegionInfo} found by decoding {@code rs} or {@code null} if {@code rs} is</span>
-<span class="source-line-no">2694</span><span id="line-2694">   *         unknown to the master.</span>
-<span class="source-line-no">2695</span><span id="line-2695">   * @throws ServiceException If some error occurs while querying META or parsing results.</span>
-<span class="source-line-no">2696</span><span id="line-2696">   */</span>
-<span class="source-line-no">2697</span><span id="line-2697">  private RegionInfo getRegionInfo(HBaseProtos.RegionSpecifier rs) throws ServiceException {</span>
-<span class="source-line-no">2698</span><span id="line-2698">    // TODO: this doesn't handle MOB regions. Should it? See the public method #getRegionInfo</span>
-<span class="source-line-no">2699</span><span id="line-2699">    final AssignmentManager am = server.getAssignmentManager();</span>
-<span class="source-line-no">2700</span><span id="line-2700">    final String encodedRegionName;</span>
-<span class="source-line-no">2701</span><span id="line-2701">    final RegionInfo info;</span>
-<span class="source-line-no">2702</span><span id="line-2702">    // first try resolving from the AM's caches.</span>
-<span class="source-line-no">2703</span><span id="line-2703">    switch (rs.getType()) {</span>
-<span class="source-line-no">2704</span><span id="line-2704">      case REGION_NAME:</span>
-<span class="source-line-no">2705</span><span id="line-2705">        final byte[] regionName = rs.getValue().toByteArray();</span>
-<span class="source-line-no">2706</span><span id="line-2706">        encodedRegionName = RegionInfo.encodeRegionName(regionName);</span>
-<span class="source-line-no">2707</span><span id="line-2707">        info = am.getRegionInfo(regionName);</span>
-<span class="source-line-no">2708</span><span id="line-2708">        break;</span>
-<span class="source-line-no">2709</span><span id="line-2709">      case ENCODED_REGION_NAME:</span>
-<span class="source-line-no">2710</span><span id="line-2710">        encodedRegionName = rs.getValue().toStringUtf8();</span>
-<span class="source-line-no">2711</span><span id="line-2711">        info = am.getRegionInfo(encodedRegionName);</span>
-<span class="source-line-no">2712</span><span id="line-2712">        break;</span>
-<span class="source-line-no">2713</span><span id="line-2713">      default:</span>
-<span class="source-line-no">2714</span><span id="line-2714">        throw new IllegalArgumentException("Unrecognized RegionSpecifierType " + rs.getType());</span>
-<span class="source-line-no">2715</span><span id="line-2715">    }</span>
-<span class="source-line-no">2716</span><span id="line-2716">    if (info != null) {</span>
-<span class="source-line-no">2717</span><span id="line-2717">      return info;</span>
-<span class="source-line-no">2718</span><span id="line-2718">    }</span>
-<span class="source-line-no">2719</span><span id="line-2719">    // fall back to a meta scan and check the cache again.</span>
-<span class="source-line-no">2720</span><span id="line-2720">    try {</span>
-<span class="source-line-no">2721</span><span id="line-2721">      am.populateRegionStatesFromMeta(encodedRegionName);</span>
-<span class="source-line-no">2722</span><span id="line-2722">    } catch (IOException e) {</span>
-<span class="source-line-no">2723</span><span id="line-2723">      throw new ServiceException(e);</span>
-<span class="source-line-no">2724</span><span id="line-2724">    }</span>
-<span class="source-line-no">2725</span><span id="line-2725">    return am.getRegionInfo(encodedRegionName);</span>
-<span class="source-line-no">2726</span><span id="line-2726">  }</span>
-<span class="source-line-no">2727</span><span id="line-2727"></span>
-<span class="source-line-no">2728</span><span id="line-2728">  /**</span>
-<span class="source-line-no">2729</span><span id="line-2729">   * @throws ServiceException If no MasterProcedureExecutor</span>
-<span class="source-line-no">2730</span><span id="line-2730">   */</span>
-<span class="source-line-no">2731</span><span id="line-2731">  private void checkMasterProcedureExecutor() throws ServiceException {</span>
-<span class="source-line-no">2732</span><span id="line-2732">    if (this.server.getMasterProcedureExecutor() == null) {</span>
-<span class="source-line-no">2733</span><span id="line-2733">      throw new ServiceException("Master's ProcedureExecutor not initialized; retry later");</span>
-<span class="source-line-no">2734</span><span id="line-2734">    }</span>
-<span class="source-line-no">2735</span><span id="line-2735">  }</span>
-<span class="source-line-no">2736</span><span id="line-2736"></span>
-<span class="source-line-no">2737</span><span id="line-2737">  /**</span>
-<span class="source-line-no">2738</span><span id="line-2738">   * A 'raw' version of assign that does bulk and can skirt Master state checks if override is set;</span>
-<span class="source-line-no">2739</span><span id="line-2739">   * i.e. assigns can be forced during Master startup or if RegionState is unclean. Used by HBCK2.</span>
-<span class="source-line-no">2740</span><span id="line-2740">   */</span>
-<span class="source-line-no">2741</span><span id="line-2741">  @Override</span>
-<span class="source-line-no">2742</span><span id="line-2742">  public MasterProtos.AssignsResponse assigns(RpcController controller,</span>
-<span class="source-line-no">2743</span><span id="line-2743">    MasterProtos.AssignsRequest request) throws ServiceException {</span>
-<span class="source-line-no">2744</span><span id="line-2744">    checkMasterProcedureExecutor();</span>
-<span class="source-line-no">2745</span><span id="line-2745">    final ProcedureExecutor&lt;MasterProcedureEnv&gt; pe = server.getMasterProcedureExecutor();</span>
-<span class="source-line-no">2746</span><span id="line-2746">    final AssignmentManager am = server.getAssignmentManager();</span>
-<span class="source-line-no">2747</span><span id="line-2747">    MasterProtos.AssignsResponse.Builder responseBuilder =</span>
-<span class="source-line-no">2748</span><span id="line-2748">      MasterProtos.AssignsResponse.newBuilder();</span>
-<span class="source-line-no">2749</span><span id="line-2749">    final boolean override = request.getOverride();</span>
-<span class="source-line-no">2750</span><span id="line-2750">    final boolean force = request.getForce();</span>
-<span class="source-line-no">2751</span><span id="line-2751">    LOG.info("{} assigns, override={}", server.getClientIdAuditPrefix(), override);</span>
-<span class="source-line-no">2752</span><span id="line-2752">    for (HBaseProtos.RegionSpecifier rs : request.getRegionList()) {</span>
-<span class="source-line-no">2753</span><span id="line-2753">      final RegionInfo info = getRegionInfo(rs);</span>
-<span class="source-line-no">2754</span><span id="line-2754">      if (info == null) {</span>
-<span class="source-line-no">2755</span><span id="line-2755">        LOG.info("Unknown region {}", rs);</span>
-<span class="source-line-no">2756</span><span id="line-2756">        continue;</span>
-<span class="source-line-no">2757</span><span id="line-2757">      }</span>
-<span class="source-line-no">2758</span><span id="line-2758">      responseBuilder.addPid(Optional.ofNullable(am.createOneAssignProcedure(info, override, force))</span>
-<span class="source-line-no">2759</span><span id="line-2759">        .map(pe::submitProcedure).orElse(Procedure.NO_PROC_ID));</span>
-<span class="source-line-no">2760</span><span id="line-2760">    }</span>
-<span class="source-line-no">2761</span><span id="line-2761">    return responseBuilder.build();</span>
-<span class="source-line-no">2762</span><span id="line-2762">  }</span>
-<span class="source-line-no">2763</span><span id="line-2763"></span>
-<span class="source-line-no">2764</span><span id="line-2764">  /**</span>
-<span class="source-line-no">2765</span><span id="line-2765">   * A 'raw' version of unassign that does bulk and can skirt Master state checks if override is</span>
-<span class="source-line-no">2766</span><span id="line-2766">   * set; i.e. unassigns can be forced during Master startup or if RegionState is unclean. Used by</span>
-<span class="source-line-no">2767</span><span id="line-2767">   * HBCK2.</span>
-<span class="source-line-no">2768</span><span id="line-2768">   */</span>
-<span class="source-line-no">2769</span><span id="line-2769">  @Override</span>
-<span class="source-line-no">2770</span><span id="line-2770">  public MasterProtos.UnassignsResponse unassigns(RpcController controller,</span>
-<span class="source-line-no">2771</span><span id="line-2771">    MasterProtos.UnassignsRequest request) throws ServiceException {</span>
-<span class="source-line-no">2772</span><span id="line-2772">    checkMasterProcedureExecutor();</span>
-<span class="source-line-no">2773</span><span id="line-2773">    final ProcedureExecutor&lt;MasterProcedureEnv&gt; pe = server.getMasterProcedureExecutor();</span>
-<span class="source-line-no">2774</span><span id="line-2774">    final AssignmentManager am = server.getAssignmentManager();</span>
-<span class="source-line-no">2775</span><span id="line-2775">    MasterProtos.UnassignsResponse.Builder responseBuilder =</span>
-<span class="source-line-no">2776</span><span id="line-2776">      MasterProtos.UnassignsResponse.newBuilder();</span>
-<span class="source-line-no">2777</span><span id="line-2777">    final boolean override = request.getOverride();</span>
-<span class="source-line-no">2778</span><span id="line-2778">    final boolean force = request.getForce();</span>
-<span class="source-line-no">2779</span><span id="line-2779">    LOG.info("{} unassigns, override={}", server.getClientIdAuditPrefix(), override);</span>
-<span class="source-line-no">2780</span><span id="line-2780">    for (HBaseProtos.RegionSpecifier rs : request.getRegionList()) {</span>
-<span class="source-line-no">2781</span><span id="line-2781">      final RegionInfo info = getRegionInfo(rs);</span>
-<span class="source-line-no">2782</span><span id="line-2782">      if (info == null) {</span>
-<span class="source-line-no">2783</span><span id="line-2783">        LOG.info("Unknown region {}", rs);</span>
-<span class="source-line-no">2784</span><span id="line-2784">        continue;</span>
-<span class="source-line-no">2785</span><span id="line-2785">      }</span>
-<span class="source-line-no">2786</span><span id="line-2786">      responseBuilder</span>
-<span class="source-line-no">2787</span><span id="line-2787">        .addPid(Optional.ofNullable(am.createOneUnassignProcedure(info, override, force))</span>
-<span class="source-line-no">2788</span><span id="line-2788">          .map(pe::submitProcedure).orElse(Procedure.NO_PROC_ID));</span>
-<span class="source-line-no">2789</span><span id="line-2789">    }</span>
-<span class="source-line-no">2790</span><span id="line-2790">    return responseBuilder.build();</span>
-<span class="source-line-no">2791</span><span id="line-2791">  }</span>
-<span class="source-line-no">2792</span><span id="line-2792"></span>
-<span class="source-line-no">2793</span><span id="line-2793">  /**</span>
-<span class="source-line-no">2794</span><span id="line-2794">   * Bypass specified procedure to completion. Procedure is marked completed but no actual work is</span>
-<span class="source-line-no">2795</span><span id="line-2795">   * done from the current state/ step onwards. Parents of the procedure are also marked for bypass.</span>
-<span class="source-line-no">2796</span><span id="line-2796">   * NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may leave</span>
-<span class="source-line-no">2797</span><span id="line-2797">   * system in incoherent state. This may need to be followed by some cleanup steps/ actions by</span>
-<span class="source-line-no">2798</span><span id="line-2798">   * operator.</span>
-<span class="source-line-no">2799</span><span id="line-2799">   * @return BypassProcedureToCompletionResponse indicating success or failure</span>
-<span class="source-line-no">2800</span><span id="line-2800">   */</span>
-<span class="source-line-no">2801</span><span id="line-2801">  @Override</span>
-<span class="source-line-no">2802</span><span id="line-2802">  public MasterProtos.BypassProcedureResponse bypassProcedure(RpcController controller,</span>
-<span class="source-line-no">2803</span><span id="line-2803">    MasterProtos.BypassProcedureRequest request) throws ServiceException {</span>
-<span class="source-line-no">2804</span><span id="line-2804">    try {</span>
-<span class="source-line-no">2805</span><span id="line-2805">      LOG.info("{} bypass procedures={}, waitTime={}, override={}, recursive={}",</span>
-<span class="source-line-no">2806</span><span id="line-2806">        server.getClientIdAuditPrefix(), request.getProcIdList(), request.getWaitTime(),</span>
-<span class="source-line-no">2807</span><span id="line-2807">        request.getOverride(), request.getRecursive());</span>
-<span class="source-line-no">2808</span><span id="line-2808">      List&lt;Boolean&gt; ret =</span>
-<span class="source-line-no">2809</span><span id="line-2809">        server.getMasterProcedureExecutor().bypassProcedure(request.getProcIdList(),</span>
-<span class="source-line-no">2810</span><span id="line-2810">          request.getWaitTime(), request.getOverride(), request.getRecursive());</span>
-<span class="source-line-no">2811</span><span id="line-2811">      return MasterProtos.BypassProcedureResponse.newBuilder().addAllBypassed(ret).build();</span>
-<span class="source-line-no">2812</span><span id="line-2812">    } catch (IOException e) {</span>
-<span class="source-line-no">2813</span><span id="line-2813">      throw new ServiceException(e);</span>
-<span class="source-line-no">2814</span><span id="line-2814">    }</span>
-<span class="source-line-no">2815</span><span id="line-2815">  }</span>
-<span class="source-line-no">2816</span><span id="line-2816"></span>
-<span class="source-line-no">2817</span><span id="line-2817">  @Override</span>
-<span class="source-line-no">2818</span><span id="line-2818">  public MasterProtos.ScheduleServerCrashProcedureResponse scheduleServerCrashProcedure(</span>
-<span class="source-line-no">2819</span><span id="line-2819">    RpcController controller, MasterProtos.ScheduleServerCrashProcedureRequest request)</span>
-<span class="source-line-no">2820</span><span id="line-2820">    throws ServiceException {</span>
-<span class="source-line-no">2821</span><span id="line-2821">    List&lt;Long&gt; pids = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">2822</span><span id="line-2822">    for (HBaseProtos.ServerName sn : request.getServerNameList()) {</span>
-<span class="source-line-no">2823</span><span id="line-2823">      ServerName serverName = ProtobufUtil.toServerName(sn);</span>
-<span class="source-line-no">2824</span><span id="line-2824">      LOG.info("{} schedule ServerCrashProcedure for {}", this.server.getClientIdAuditPrefix(),</span>
-<span class="source-line-no">2825</span><span id="line-2825">        serverName);</span>
-<span class="source-line-no">2826</span><span id="line-2826">      if (shouldSubmitSCP(serverName)) {</span>
-<span class="source-line-no">2827</span><span id="line-2827">        pids.add(this.server.getServerManager().expireServer(serverName, true));</span>
-<span class="source-line-no">2828</span><span id="line-2828">      } else {</span>
-<span class="source-line-no">2829</span><span id="line-2829">        pids.add(Procedure.NO_PROC_ID);</span>
-<span class="source-line-no">2830</span><span id="line-2830">      }</span>
-<span class="source-line-no">2831</span><span id="line-2831">    }</span>
-<span class="source-line-no">2832</span><span id="line-2832">    return MasterProtos.ScheduleServerCrashProcedureResponse.newBuilder().addAllPid(pids).build();</span>
-<span class="source-line-no">2833</span><span id="line-2833">  }</span>
-<span class="source-line-no">2834</span><span id="line-2834"></span>
-<span class="source-line-no">2835</span><span id="line-2835">  @Override</span>
-<span class="source-line-no">2836</span><span id="line-2836">  public MasterProtos.ScheduleSCPsForUnknownServersResponse scheduleSCPsForUnknownServers(</span>
-<span class="source-line-no">2837</span><span id="line-2837">    RpcController controller, MasterProtos.ScheduleSCPsForUnknownServersRequest request)</span>
-<span class="source-line-no">2838</span><span id="line-2838">    throws ServiceException {</span>
-<span class="source-line-no">2839</span><span id="line-2839">    List&lt;Long&gt; pids = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">2840</span><span id="line-2840">    final Set&lt;ServerName&gt; serverNames = server.getAssignmentManager().getRegionStates()</span>
-<span class="source-line-no">2841</span><span id="line-2841">      .getRegionStates().stream().map(RegionState::getServerName).collect(Collectors.toSet());</span>
-<span class="source-line-no">2842</span><span id="line-2842"></span>
-<span class="source-line-no">2843</span><span id="line-2843">    final Set&lt;ServerName&gt; unknownServerNames = serverNames.stream()</span>
-<span class="source-line-no">2844</span><span id="line-2844">      .filter(sn -&gt; server.getServerManager().isServerUnknown(sn)).collect(Collectors.toSet());</span>
-<span class="source-line-no">2845</span><span id="line-2845"></span>
-<span class="source-line-no">2846</span><span id="line-2846">    for (ServerName sn : unknownServerNames) {</span>
-<span class="source-line-no">2847</span><span id="line-2847">      LOG.info("{} schedule ServerCrashProcedure for unknown {}",</span>
-<span class="source-line-no">2848</span><span id="line-2848">        this.server.getClientIdAuditPrefix(), sn);</span>
-<span class="source-line-no">2849</span><span id="line-2849">      if (shouldSubmitSCP(sn)) {</span>
-<span class="source-line-no">2850</span><span id="line-2850">        pids.add(this.server.getServerManager().expireServer(sn, true));</span>
-<span class="source-line-no">2851</span><span id="line-2851">      } else {</span>
-<span class="source-line-no">2852</span><span id="line-2852">        pids.add(Procedure.NO_PROC_ID);</span>
-<span class="source-line-no">2853</span><span id="line-2853">      }</span>
-<span class="source-line-no">2854</span><span id="line-2854">    }</span>
-<span class="source-line-no">2855</span><span id="line-2855">    return MasterProtos.ScheduleSCPsForUnknownServersResponse.newBuilder().addAllPid(pids).build();</span>
-<span class="source-line-no">2856</span><span id="line-2856">  }</span>
-<span class="source-line-no">2857</span><span id="line-2857"></span>
-<span class="source-line-no">2858</span><span id="line-2858">  @Override</span>
-<span class="source-line-no">2859</span><span id="line-2859">  public FixMetaResponse fixMeta(RpcController controller, FixMetaRequest request)</span>
-<span class="source-line-no">2860</span><span id="line-2860">    throws ServiceException {</span>
-<span class="source-line-no">2861</span><span id="line-2861">    rpcPreCheck("fixMeta");</span>
-<span class="source-line-no">2862</span><span id="line-2862">    try {</span>
-<span class="source-line-no">2863</span><span id="line-2863">      MetaFixer mf = new MetaFixer(this.server);</span>
-<span class="source-line-no">2864</span><span id="line-2864">      mf.fix();</span>
-<span class="source-line-no">2865</span><span id="line-2865">      return FixMetaResponse.newBuilder().build();</span>
-<span class="source-line-no">2866</span><span id="line-2866">    } catch (IOException ioe) {</span>
-<span class="source-line-no">2867</span><span id="line-2867">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">2868</span><span id="line-2868">    }</span>
-<span class="source-line-no">2869</span><span id="line-2869">  }</span>
-<span class="source-line-no">2870</span><span id="line-2870"></span>
-<span class="source-line-no">2871</span><span id="line-2871">  @Override</span>
-<span class="source-line-no">2872</span><span id="line-2872">  public SwitchRpcThrottleResponse switchRpcThrottle(RpcController controller,</span>
-<span class="source-line-no">2873</span><span id="line-2873">    SwitchRpcThrottleRequest request) throws ServiceException {</span>
-<span class="source-line-no">2874</span><span id="line-2874">    try {</span>
-<span class="source-line-no">2875</span><span id="line-2875">      server.checkInitialized();</span>
-<span class="source-line-no">2876</span><span id="line-2876">      return server.getMasterQuotaManager().switchRpcThrottle(request);</span>
-<span class="source-line-no">2877</span><span id="line-2877">    } catch (Exception e) {</span>
-<span class="source-line-no">2878</span><span id="line-2878">      throw new ServiceException(e);</span>
-<span class="source-line-no">2879</span><span id="line-2879">    }</span>
-<span class="source-line-no">2880</span><span id="line-2880">  }</span>
-<span class="source-line-no">2881</span><span id="line-2881"></span>
-<span class="source-line-no">2882</span><span id="line-2882">  @Override</span>
-<span class="source-line-no">2883</span><span id="line-2883">  public MasterProtos.IsRpcThrottleEnabledResponse isRpcThrottleEnabled(RpcController controller,</span>
-<span class="source-line-no">2884</span><span id="line-2884">    MasterProtos.IsRpcThrottleEnabledRequest request) throws ServiceException {</span>
-<span class="source-line-no">2885</span><span id="line-2885">    try {</span>
-<span class="source-line-no">2886</span><span id="line-2886">      server.checkInitialized();</span>
-<span class="source-line-no">2887</span><span id="line-2887">      return server.getMasterQuotaManager().isRpcThrottleEnabled(request);</span>
-<span class="source-line-no">2888</span><span id="line-2888">    } catch (Exception e) {</span>
-<span class="source-line-no">2889</span><span id="line-2889">      throw new ServiceException(e);</span>
-<span class="source-line-no">2890</span><span id="line-2890">    }</span>
-<span class="source-line-no">2891</span><span id="line-2891">  }</span>
-<span class="source-line-no">2892</span><span id="line-2892"></span>
-<span class="source-line-no">2893</span><span id="line-2893">  @Override</span>
-<span class="source-line-no">2894</span><span id="line-2894">  public SwitchExceedThrottleQuotaResponse switchExceedThrottleQuota(RpcController controller,</span>
-<span class="source-line-no">2895</span><span id="line-2895">    SwitchExceedThrottleQuotaRequest request) throws ServiceException {</span>
-<span class="source-line-no">2896</span><span id="line-2896">    try {</span>
-<span class="source-line-no">2897</span><span id="line-2897">      server.checkInitialized();</span>
-<span class="source-line-no">2898</span><span id="line-2898">      return server.getMasterQuotaManager().switchExceedThrottleQuota(request);</span>
-<span class="source-line-no">2899</span><span id="line-2899">    } catch (Exception e) {</span>
-<span class="source-line-no">2900</span><span id="line-2900">      throw new ServiceException(e);</span>
-<span class="source-line-no">2901</span><span id="line-2901">    }</span>
-<span class="source-line-no">2902</span><span id="line-2902">  }</span>
-<span class="source-line-no">2903</span><span id="line-2903"></span>
-<span class="source-line-no">2904</span><span id="line-2904">  @Override</span>
-<span class="source-line-no">2905</span><span id="line-2905">  public GrantResponse grant(RpcController controller, GrantRequest request)</span>
-<span class="source-line-no">2906</span><span id="line-2906">    throws ServiceException {</span>
-<span class="source-line-no">2907</span><span id="line-2907">    try {</span>
-<span class="source-line-no">2908</span><span id="line-2908">      server.checkInitialized();</span>
-<span class="source-line-no">2909</span><span id="line-2909">      if (server.cpHost != null &amp;&amp; hasAccessControlServiceCoprocessor(server.cpHost)) {</span>
-<span class="source-line-no">2910</span><span id="line-2910">        final UserPermission perm =</span>
-<span class="source-line-no">2911</span><span id="line-2911">          ShadedAccessControlUtil.toUserPermission(request.getUserPermission());</span>
-<span class="source-line-no">2912</span><span id="line-2912">        boolean mergeExistingPermissions = request.getMergeExistingPermissions();</span>
-<span class="source-line-no">2913</span><span id="line-2913">        server.cpHost.preGrant(perm, mergeExistingPermissions);</span>
-<span class="source-line-no">2914</span><span id="line-2914">        try (Table table = server.getConnection().getTable(PermissionStorage.ACL_TABLE_NAME)) {</span>
-<span class="source-line-no">2915</span><span id="line-2915">          PermissionStorage.addUserPermission(getConfiguration(), perm, table,</span>
-<span class="source-line-no">2916</span><span id="line-2916">            mergeExistingPermissions);</span>
-<span class="source-line-no">2917</span><span id="line-2917">        }</span>
-<span class="source-line-no">2918</span><span id="line-2918">        server.cpHost.postGrant(perm, mergeExistingPermissions);</span>
-<span class="source-line-no">2919</span><span id="line-2919">        return GrantResponse.getDefaultInstance();</span>
-<span class="source-line-no">2920</span><span id="line-2920">      } else {</span>
-<span class="source-line-no">2921</span><span id="line-2921">        throw new DoNotRetryIOException(</span>
-<span class="source-line-no">2922</span><span id="line-2922">          new UnsupportedOperationException(AccessController.class.getName() + " is not loaded"));</span>
-<span class="source-line-no">2923</span><span id="line-2923">      }</span>
-<span class="source-line-no">2924</span><span id="line-2924">    } catch (IOException ioe) {</span>
-<span class="source-line-no">2925</span><span id="line-2925">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">2926</span><span id="line-2926">    }</span>
-<span class="source-line-no">2927</span><span id="line-2927">  }</span>
-<span class="source-line-no">2928</span><span id="line-2928"></span>
-<span class="source-line-no">2929</span><span id="line-2929">  @Override</span>
-<span class="source-line-no">2930</span><span id="line-2930">  public RevokeResponse revoke(RpcController controller, RevokeRequest request)</span>
-<span class="source-line-no">2931</span><span id="line-2931">    throws ServiceException {</span>
-<span class="source-line-no">2932</span><span id="line-2932">    try {</span>
-<span class="source-line-no">2933</span><span id="line-2933">      server.checkInitialized();</span>
-<span class="source-line-no">2934</span><span id="line-2934">      if (server.cpHost != null &amp;&amp; hasAccessControlServiceCoprocessor(server.cpHost)) {</span>
-<span class="source-line-no">2935</span><span id="line-2935">        final UserPermission userPermission =</span>
-<span class="source-line-no">2936</span><span id="line-2936">          ShadedAccessControlUtil.toUserPermission(request.getUserPermission());</span>
-<span class="source-line-no">2937</span><span id="line-2937">        server.cpHost.preRevoke(userPermission);</span>
-<span class="source-line-no">2938</span><span id="line-2938">        try (Table table = server.getConnection().getTable(PermissionStorage.ACL_TABLE_NAME)) {</span>
-<span class="source-line-no">2939</span><span id="line-2939">          PermissionStorage.removeUserPermission(server.getConfiguration(), userPermission, table);</span>
-<span class="source-line-no">2940</span><span id="line-2940">        }</span>
-<span class="source-line-no">2941</span><span id="line-2941">        server.cpHost.postRevoke(userPermission);</span>
-<span class="source-line-no">2942</span><span id="line-2942">        return RevokeResponse.getDefaultInstance();</span>
-<span class="source-line-no">2943</span><span id="line-2943">      } else {</span>
-<span class="source-line-no">2944</span><span id="line-2944">        throw new DoNotRetryIOException(</span>
-<span class="source-line-no">2945</span><span id="line-2945">          new UnsupportedOperationException(AccessController.class.getName() + " is not loaded"));</span>
-<span class="source-line-no">2946</span><span id="line-2946">      }</span>
-<span class="source-line-no">2947</span><span id="line-2947">    } catch (IOException ioe) {</span>
-<span class="source-line-no">2948</span><span id="line-2948">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">2949</span><span id="line-2949">    }</span>
-<span class="source-line-no">2950</span><span id="line-2950">  }</span>
-<span class="source-line-no">2951</span><span id="line-2951"></span>
-<span class="source-line-no">2952</span><span id="line-2952">  @Override</span>
-<span class="source-line-no">2953</span><span id="line-2953">  public GetUserPermissionsResponse getUserPermissions(RpcController controller,</span>
-<span class="source-line-no">2954</span><span id="line-2954">    GetUserPermissionsRequest request) throws ServiceException {</span>
-<span class="source-line-no">2955</span><span id="line-2955">    try {</span>
-<span class="source-line-no">2956</span><span id="line-2956">      server.checkInitialized();</span>
-<span class="source-line-no">2957</span><span id="line-2957">      if (server.cpHost != null &amp;&amp; hasAccessControlServiceCoprocessor(server.cpHost)) {</span>
-<span class="source-line-no">2958</span><span id="line-2958">        final String userName = request.hasUserName() ? request.getUserName().toStringUtf8() : null;</span>
-<span class="source-line-no">2959</span><span id="line-2959">        String namespace =</span>
-<span class="source-line-no">2960</span><span id="line-2960">          request.hasNamespaceName() ? request.getNamespaceName().toStringUtf8() : null;</span>
-<span class="source-line-no">2961</span><span id="line-2961">        TableName table =</span>
-<span class="source-line-no">2962</span><span id="line-2962">          request.hasTableName() ? ProtobufUtil.toTableName(request.getTableName()) : null;</span>
-<span class="source-line-no">2963</span><span id="line-2963">        byte[] cf = request.hasColumnFamily() ? request.getColumnFamily().toByteArray() : null;</span>
-<span class="source-line-no">2964</span><span id="line-2964">        byte[] cq =</span>
-<span class="source-line-no">2965</span><span id="line-2965">          request.hasColumnQualifier() ? request.getColumnQualifier().toByteArray() : null;</span>
-<span class="source-line-no">2966</span><span id="line-2966">        Type permissionType = request.hasType() ? request.getType() : null;</span>
-<span class="source-line-no">2967</span><span id="line-2967">        server.getMasterCoprocessorHost().preGetUserPermissions(userName, namespace, table, cf, cq);</span>
-<span class="source-line-no">2968</span><span id="line-2968"></span>
-<span class="source-line-no">2969</span><span id="line-2969">        List&lt;UserPermission&gt; perms = null;</span>
-<span class="source-line-no">2970</span><span id="line-2970">        if (permissionType == Type.Table) {</span>
-<span class="source-line-no">2971</span><span id="line-2971">          boolean filter = (cf != null || userName != null) ? true : false;</span>
-<span class="source-line-no">2972</span><span id="line-2972">          perms = PermissionStorage.getUserTablePermissions(server.getConfiguration(), table, cf,</span>
-<span class="source-line-no">2973</span><span id="line-2973">            cq, userName, filter);</span>
-<span class="source-line-no">2974</span><span id="line-2974">        } else if (permissionType == Type.Namespace) {</span>
-<span class="source-line-no">2975</span><span id="line-2975">          perms = PermissionStorage.getUserNamespacePermissions(server.getConfiguration(),</span>
-<span class="source-line-no">2976</span><span id="line-2976">            namespace, userName, userName != null ? true : false);</span>
-<span class="source-line-no">2977</span><span id="line-2977">        } else {</span>
-<span class="source-line-no">2978</span><span id="line-2978">          perms = PermissionStorage.getUserPermissions(server.getConfiguration(), null, null, null,</span>
-<span class="source-line-no">2979</span><span id="line-2979">            userName, userName != null ? true : false);</span>
-<span class="source-line-no">2980</span><span id="line-2980">          // Skip super users when filter user is specified</span>
-<span class="source-line-no">2981</span><span id="line-2981">          if (userName == null) {</span>
-<span class="source-line-no">2982</span><span id="line-2982">            // Adding superusers explicitly to the result set as PermissionStorage do not store</span>
-<span class="source-line-no">2983</span><span id="line-2983">            // them. Also using acl as table name to be inline with the results of global admin and</span>
-<span class="source-line-no">2984</span><span id="line-2984">            // will help in avoiding any leakage of information about being superusers.</span>
-<span class="source-line-no">2985</span><span id="line-2985">            for (String user : Superusers.getSuperUsers()) {</span>
-<span class="source-line-no">2986</span><span id="line-2986">              perms.add(new UserPermission(user,</span>
-<span class="source-line-no">2987</span><span id="line-2987">                Permission.newBuilder().withActions(Action.values()).build()));</span>
-<span class="source-line-no">2988</span><span id="line-2988">            }</span>
-<span class="source-line-no">2989</span><span id="line-2989">          }</span>
-<span class="source-line-no">2990</span><span id="line-2990">        }</span>
-<span class="source-line-no">2991</span><span id="line-2991"></span>
-<span class="source-line-no">2992</span><span id="line-2992">        server.getMasterCoprocessorHost().postGetUserPermissions(userName, namespace, table, cf,</span>
-<span class="source-line-no">2993</span><span id="line-2993">          cq);</span>
-<span class="source-line-no">2994</span><span id="line-2994">        AccessControlProtos.GetUserPermissionsResponse response =</span>
-<span class="source-line-no">2995</span><span id="line-2995">          ShadedAccessControlUtil.buildGetUserPermissionsResponse(perms);</span>
-<span class="source-line-no">2996</span><span id="line-2996">        return response;</span>
-<span class="source-line-no">2997</span><span id="line-2997">      } else {</span>
-<span class="source-line-no">2998</span><span id="line-2998">        throw new DoNotRetryIOException(</span>
-<span class="source-line-no">2999</span><span id="line-2999">          new UnsupportedOperationException(AccessController.class.getName() + " is not loaded"));</span>
-<span class="source-line-no">3000</span><span id="line-3000">      }</span>
-<span class="source-line-no">3001</span><span id="line-3001">    } catch (IOException ioe) {</span>
-<span class="source-line-no">3002</span><span id="line-3002">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">3003</span><span id="line-3003">    }</span>
-<span class="source-line-no">3004</span><span id="line-3004">  }</span>
-<span class="source-line-no">3005</span><span id="line-3005"></span>
-<span class="source-line-no">3006</span><span id="line-3006">  @Override</span>
-<span class="source-line-no">3007</span><span id="line-3007">  public HasUserPermissionsResponse hasUserPermissions(RpcController controller,</span>
-<span class="source-line-no">3008</span><span id="line-3008">    HasUserPermissionsRequest request) throws ServiceException {</span>
-<span class="source-line-no">3009</span><span id="line-3009">    try {</span>
-<span class="source-line-no">3010</span><span id="line-3010">      server.checkInitialized();</span>
-<span class="source-line-no">3011</span><span id="line-3011">      if (server.cpHost != null &amp;&amp; hasAccessControlServiceCoprocessor(server.cpHost)) {</span>
-<span class="source-line-no">3012</span><span id="line-3012">        User caller = RpcServer.getRequestUser().orElse(null);</span>
-<span class="source-line-no">3013</span><span id="line-3013">        String userName =</span>
-<span class="source-line-no">3014</span><span id="line-3014">          request.hasUserName() ? request.getUserName().toStringUtf8() : caller.getShortName();</span>
-<span class="source-line-no">3015</span><span id="line-3015">        List&lt;Permission&gt; permissions = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">3016</span><span id="line-3016">        for (int i = 0; i &lt; request.getPermissionCount(); i++) {</span>
-<span class="source-line-no">3017</span><span id="line-3017">          permissions.add(ShadedAccessControlUtil.toPermission(request.getPermission(i)));</span>
-<span class="source-line-no">3018</span><span id="line-3018">        }</span>
-<span class="source-line-no">3019</span><span id="line-3019">        server.getMasterCoprocessorHost().preHasUserPermissions(userName, permissions);</span>
-<span class="source-line-no">3020</span><span id="line-3020">        if (!caller.getShortName().equals(userName)) {</span>
-<span class="source-line-no">3021</span><span id="line-3021">          List&lt;String&gt; groups = AccessChecker.getUserGroups(userName);</span>
-<span class="source-line-no">3022</span><span id="line-3022">          caller = new InputUser(userName, groups.toArray(new String[groups.size()]));</span>
-<span class="source-line-no">3023</span><span id="line-3023">        }</span>
-<span class="source-line-no">3024</span><span id="line-3024">        List&lt;Boolean&gt; hasUserPermissions = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">3025</span><span id="line-3025">        if (getAccessChecker() != null) {</span>
-<span class="source-line-no">3026</span><span id="line-3026">          for (Permission permission : permissions) {</span>
-<span class="source-line-no">3027</span><span id="line-3027">            boolean hasUserPermission =</span>
-<span class="source-line-no">3028</span><span id="line-3028">              getAccessChecker().hasUserPermission(caller, "hasUserPermissions", permission);</span>
-<span class="source-line-no">3029</span><span id="line-3029">            hasUserPermissions.add(hasUserPermission);</span>
-<span class="source-line-no">3030</span><span id="line-3030">          }</span>
-<span class="source-line-no">3031</span><span id="line-3031">        } else {</span>
-<span class="source-line-no">3032</span><span id="line-3032">          for (int i = 0; i &lt; permissions.size(); i++) {</span>
-<span class="source-line-no">3033</span><span id="line-3033">            hasUserPermissions.add(true);</span>
-<span class="source-line-no">3034</span><span id="line-3034">          }</span>
-<span class="source-line-no">3035</span><span id="line-3035">        }</span>
-<span class="source-line-no">3036</span><span id="line-3036">        server.getMasterCoprocessorHost().postHasUserPermissions(userName, permissions);</span>
-<span class="source-line-no">3037</span><span id="line-3037">        HasUserPermissionsResponse.Builder builder =</span>
-<span class="source-line-no">3038</span><span id="line-3038">          HasUserPermissionsResponse.newBuilder().addAllHasUserPermission(hasUserPermissions);</span>
-<span class="source-line-no">3039</span><span id="line-3039">        return builder.build();</span>
-<span class="source-line-no">3040</span><span id="line-3040">      } else {</span>
-<span class="source-line-no">3041</span><span id="line-3041">        throw new DoNotRetryIOException(</span>
-<span class="source-line-no">3042</span><span id="line-3042">          new UnsupportedOperationException(AccessController.class.getName() + " is not loaded"));</span>
-<span class="source-line-no">3043</span><span id="line-3043">      }</span>
-<span class="source-line-no">3044</span><span id="line-3044">    } catch (IOException ioe) {</span>
-<span class="source-line-no">3045</span><span id="line-3045">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">3046</span><span id="line-3046">    }</span>
-<span class="source-line-no">3047</span><span id="line-3047">  }</span>
-<span class="source-line-no">3048</span><span id="line-3048"></span>
-<span class="source-line-no">3049</span><span id="line-3049">  private boolean shouldSubmitSCP(ServerName serverName) {</span>
-<span class="source-line-no">3050</span><span id="line-3050">    // check if there is already a SCP of this server running</span>
-<span class="source-line-no">3051</span><span id="line-3051">    List&lt;Procedure&lt;MasterProcedureEnv&gt;&gt; procedures =</span>
-<span class="source-line-no">3052</span><span id="line-3052">      server.getMasterProcedureExecutor().getProcedures();</span>
-<span class="source-line-no">3053</span><span id="line-3053">    for (Procedure&lt;MasterProcedureEnv&gt; procedure : procedures) {</span>
-<span class="source-line-no">3054</span><span id="line-3054">      if (procedure instanceof ServerCrashProcedure) {</span>
-<span class="source-line-no">3055</span><span id="line-3055">        if (</span>
-<span class="source-line-no">3056</span><span id="line-3056">          serverName.compareTo(((ServerCrashProcedure) procedure).getServerName()) == 0</span>
-<span class="source-line-no">3057</span><span id="line-3057">            &amp;&amp; !procedure.isFinished()</span>
-<span class="source-line-no">3058</span><span id="line-3058">        ) {</span>
-<span class="source-line-no">3059</span><span id="line-3059">          LOG.info("there is already a SCP of this server {} running, pid {}", serverName,</span>
-<span class="source-line-no">3060</span><span id="line-3060">            procedure.getProcId());</span>
-<span class="source-line-no">3061</span><span id="line-3061">          return false;</span>
-<span class="source-line-no">3062</span><span id="line-3062">        }</span>
-<span class="source-line-no">3063</span><span id="line-3063">      }</span>
-<span class="source-line-no">3064</span><span id="line-3064">    }</span>
-<span class="source-line-no">3065</span><span id="line-3065">    return true;</span>
-<span class="source-line-no">3066</span><span id="line-3066">  }</span>
-<span class="source-line-no">3067</span><span id="line-3067"></span>
-<span class="source-line-no">3068</span><span id="line-3068">  @Override</span>
-<span class="source-line-no">3069</span><span id="line-3069">  public GetRSGroupInfoResponse getRSGroupInfo(RpcController controller,</span>
-<span class="source-line-no">3070</span><span id="line-3070">    GetRSGroupInfoRequest request) throws ServiceException {</span>
-<span class="source-line-no">3071</span><span id="line-3071">    String groupName = request.getRSGroupName();</span>
-<span class="source-line-no">3072</span><span id="line-3072">    LOG.info(</span>
-<span class="source-line-no">3073</span><span id="line-3073">      server.getClientIdAuditPrefix() + " initiates rsgroup info retrieval, group=" + groupName);</span>
-<span class="source-line-no">3074</span><span id="line-3074">    try {</span>
-<span class="source-line-no">3075</span><span id="line-3075">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3076</span><span id="line-3076">        server.getMasterCoprocessorHost().preGetRSGroupInfo(groupName);</span>
-<span class="source-line-no">3077</span><span id="line-3077">      }</span>
-<span class="source-line-no">3078</span><span id="line-3078">      RSGroupInfo rsGroupInfo = server.getRSGroupInfoManager().getRSGroup(groupName);</span>
-<span class="source-line-no">3079</span><span id="line-3079">      GetRSGroupInfoResponse resp;</span>
-<span class="source-line-no">3080</span><span id="line-3080">      if (rsGroupInfo != null) {</span>
-<span class="source-line-no">3081</span><span id="line-3081">        resp = GetRSGroupInfoResponse.newBuilder()</span>
-<span class="source-line-no">3082</span><span id="line-3082">          .setRSGroupInfo(ProtobufUtil.toProtoGroupInfo(rsGroupInfo)).build();</span>
-<span class="source-line-no">3083</span><span id="line-3083">      } else {</span>
-<span class="source-line-no">3084</span><span id="line-3084">        resp = GetRSGroupInfoResponse.getDefaultInstance();</span>
-<span class="source-line-no">3085</span><span id="line-3085">      }</span>
-<span class="source-line-no">3086</span><span id="line-3086">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3087</span><span id="line-3087">        server.getMasterCoprocessorHost().postGetRSGroupInfo(groupName);</span>
-<span class="source-line-no">3088</span><span id="line-3088">      }</span>
-<span class="source-line-no">3089</span><span id="line-3089">      return resp;</span>
-<span class="source-line-no">3090</span><span id="line-3090">    } catch (IOException e) {</span>
-<span class="source-line-no">3091</span><span id="line-3091">      throw new ServiceException(e);</span>
-<span class="source-line-no">3092</span><span id="line-3092">    }</span>
-<span class="source-line-no">3093</span><span id="line-3093">  }</span>
-<span class="source-line-no">3094</span><span id="line-3094"></span>
-<span class="source-line-no">3095</span><span id="line-3095">  @Override</span>
-<span class="source-line-no">3096</span><span id="line-3096">  public GetRSGroupInfoOfTableResponse getRSGroupInfoOfTable(RpcController controller,</span>
-<span class="source-line-no">3097</span><span id="line-3097">    GetRSGroupInfoOfTableRequest request) throws ServiceException {</span>
-<span class="source-line-no">3098</span><span id="line-3098">    TableName tableName = ProtobufUtil.toTableName(request.getTableName());</span>
-<span class="source-line-no">3099</span><span id="line-3099">    LOG.info(</span>
-<span class="source-line-no">3100</span><span id="line-3100">      server.getClientIdAuditPrefix() + " initiates rsgroup info retrieval, table=" + tableName);</span>
-<span class="source-line-no">3101</span><span id="line-3101">    try {</span>
-<span class="source-line-no">3102</span><span id="line-3102">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3103</span><span id="line-3103">        server.getMasterCoprocessorHost().preGetRSGroupInfoOfTable(tableName);</span>
-<span class="source-line-no">3104</span><span id="line-3104">      }</span>
-<span class="source-line-no">3105</span><span id="line-3105">      GetRSGroupInfoOfTableResponse resp;</span>
-<span class="source-line-no">3106</span><span id="line-3106">      TableDescriptor td = server.getTableDescriptors().get(tableName);</span>
-<span class="source-line-no">3107</span><span id="line-3107">      if (td == null) {</span>
-<span class="source-line-no">3108</span><span id="line-3108">        resp = GetRSGroupInfoOfTableResponse.getDefaultInstance();</span>
-<span class="source-line-no">3109</span><span id="line-3109">      } else {</span>
-<span class="source-line-no">3110</span><span id="line-3110">        RSGroupInfo rsGroupInfo =</span>
-<span class="source-line-no">3111</span><span id="line-3111">          RSGroupUtil.getRSGroupInfo(server, server.getRSGroupInfoManager(), tableName)</span>
-<span class="source-line-no">3112</span><span id="line-3112">            .orElse(server.getRSGroupInfoManager().getRSGroup(RSGroupInfo.DEFAULT_GROUP));</span>
-<span class="source-line-no">3113</span><span id="line-3113">        resp = GetRSGroupInfoOfTableResponse.newBuilder()</span>
-<span class="source-line-no">3114</span><span id="line-3114">          .setRSGroupInfo(ProtobufUtil.toProtoGroupInfo(rsGroupInfo)).build();</span>
-<span class="source-line-no">3115</span><span id="line-3115">      }</span>
-<span class="source-line-no">3116</span><span id="line-3116">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3117</span><span id="line-3117">        server.getMasterCoprocessorHost().postGetRSGroupInfoOfTable(tableName);</span>
-<span class="source-line-no">3118</span><span id="line-3118">      }</span>
-<span class="source-line-no">3119</span><span id="line-3119">      return resp;</span>
-<span class="source-line-no">3120</span><span id="line-3120">    } catch (IOException e) {</span>
-<span class="source-line-no">3121</span><span id="line-3121">      throw new ServiceException(e);</span>
-<span class="source-line-no">3122</span><span id="line-3122">    }</span>
-<span class="source-line-no">3123</span><span id="line-3123">  }</span>
-<span class="source-line-no">3124</span><span id="line-3124"></span>
-<span class="source-line-no">3125</span><span id="line-3125">  @Override</span>
-<span class="source-line-no">3126</span><span id="line-3126">  public GetRSGroupInfoOfServerResponse getRSGroupInfoOfServer(RpcController controller,</span>
-<span class="source-line-no">3127</span><span id="line-3127">    GetRSGroupInfoOfServerRequest request) throws ServiceException {</span>
-<span class="source-line-no">3128</span><span id="line-3128">    Address hp =</span>
-<span class="source-line-no">3129</span><span id="line-3129">      Address.fromParts(request.getServer().getHostName(), request.getServer().getPort());</span>
-<span class="source-line-no">3130</span><span id="line-3130">    LOG.info(server.getClientIdAuditPrefix() + " initiates rsgroup info retrieval, server=" + hp);</span>
-<span class="source-line-no">3131</span><span id="line-3131">    try {</span>
-<span class="source-line-no">3132</span><span id="line-3132">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3133</span><span id="line-3133">        server.getMasterCoprocessorHost().preGetRSGroupInfoOfServer(hp);</span>
-<span class="source-line-no">3134</span><span id="line-3134">      }</span>
-<span class="source-line-no">3135</span><span id="line-3135">      RSGroupInfo rsGroupInfo = server.getRSGroupInfoManager().getRSGroupOfServer(hp);</span>
-<span class="source-line-no">3136</span><span id="line-3136">      GetRSGroupInfoOfServerResponse resp;</span>
-<span class="source-line-no">3137</span><span id="line-3137">      if (rsGroupInfo != null) {</span>
-<span class="source-line-no">3138</span><span id="line-3138">        resp = GetRSGroupInfoOfServerResponse.newBuilder()</span>
-<span class="source-line-no">3139</span><span id="line-3139">          .setRSGroupInfo(ProtobufUtil.toProtoGroupInfo(rsGroupInfo)).build();</span>
-<span class="source-line-no">3140</span><span id="line-3140">      } else {</span>
-<span class="source-line-no">3141</span><span id="line-3141">        resp = GetRSGroupInfoOfServerResponse.getDefaultInstance();</span>
-<span class="source-line-no">3142</span><span id="line-3142">      }</span>
-<span class="source-line-no">3143</span><span id="line-3143">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3144</span><span id="line-3144">        server.getMasterCoprocessorHost().postGetRSGroupInfoOfServer(hp);</span>
-<span class="source-line-no">3145</span><span id="line-3145">      }</span>
-<span class="source-line-no">3146</span><span id="line-3146">      return resp;</span>
-<span class="source-line-no">3147</span><span id="line-3147">    } catch (IOException e) {</span>
-<span class="source-line-no">3148</span><span id="line-3148">      throw new ServiceException(e);</span>
-<span class="source-line-no">3149</span><span id="line-3149">    }</span>
-<span class="source-line-no">3150</span><span id="line-3150">  }</span>
-<span class="source-line-no">3151</span><span id="line-3151"></span>
-<span class="source-line-no">3152</span><span id="line-3152">  @Override</span>
-<span class="source-line-no">3153</span><span id="line-3153">  public MoveServersResponse moveServers(RpcController controller, MoveServersRequest request)</span>
-<span class="source-line-no">3154</span><span id="line-3154">    throws ServiceException {</span>
-<span class="source-line-no">3155</span><span id="line-3155">    Set&lt;Address&gt; hostPorts = Sets.newHashSet();</span>
-<span class="source-line-no">3156</span><span id="line-3156">    MoveServersResponse.Builder builder = MoveServersResponse.newBuilder();</span>
-<span class="source-line-no">3157</span><span id="line-3157">    for (HBaseProtos.ServerName el : request.getServersList()) {</span>
-<span class="source-line-no">3158</span><span id="line-3158">      hostPorts.add(Address.fromParts(el.getHostName(), el.getPort()));</span>
-<span class="source-line-no">3159</span><span id="line-3159">    }</span>
-<span class="source-line-no">3160</span><span id="line-3160">    LOG.info(server.getClientIdAuditPrefix() + " move servers " + hostPorts + " to rsgroup "</span>
-<span class="source-line-no">3161</span><span id="line-3161">      + request.getTargetGroup());</span>
-<span class="source-line-no">3162</span><span id="line-3162">    try {</span>
-<span class="source-line-no">3163</span><span id="line-3163">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3164</span><span id="line-3164">        server.getMasterCoprocessorHost().preMoveServers(hostPorts, request.getTargetGroup());</span>
-<span class="source-line-no">3165</span><span id="line-3165">      }</span>
-<span class="source-line-no">3166</span><span id="line-3166">      server.getRSGroupInfoManager().moveServers(hostPorts, request.getTargetGroup());</span>
-<span class="source-line-no">3167</span><span id="line-3167">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3168</span><span id="line-3168">        server.getMasterCoprocessorHost().postMoveServers(hostPorts, request.getTargetGroup());</span>
-<span class="source-line-no">3169</span><span id="line-3169">      }</span>
-<span class="source-line-no">3170</span><span id="line-3170">    } catch (IOException e) {</span>
-<span class="source-line-no">3171</span><span id="line-3171">      throw new ServiceException(e);</span>
-<span class="source-line-no">3172</span><span id="line-3172">    }</span>
-<span class="source-line-no">3173</span><span id="line-3173">    return builder.build();</span>
-<span class="source-line-no">3174</span><span id="line-3174">  }</span>
-<span class="source-line-no">3175</span><span id="line-3175"></span>
-<span class="source-line-no">3176</span><span id="line-3176">  @Override</span>
-<span class="source-line-no">3177</span><span id="line-3177">  public AddRSGroupResponse addRSGroup(RpcController controller, AddRSGroupRequest request)</span>
-<span class="source-line-no">3178</span><span id="line-3178">    throws ServiceException {</span>
-<span class="source-line-no">3179</span><span id="line-3179">    AddRSGroupResponse.Builder builder = AddRSGroupResponse.newBuilder();</span>
-<span class="source-line-no">3180</span><span id="line-3180">    LOG.info(server.getClientIdAuditPrefix() + " add rsgroup " + request.getRSGroupName());</span>
-<span class="source-line-no">3181</span><span id="line-3181">    try {</span>
-<span class="source-line-no">3182</span><span id="line-3182">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3183</span><span id="line-3183">        server.getMasterCoprocessorHost().preAddRSGroup(request.getRSGroupName());</span>
-<span class="source-line-no">3184</span><span id="line-3184">      }</span>
-<span class="source-line-no">3185</span><span id="line-3185">      server.getRSGroupInfoManager().addRSGroup(new RSGroupInfo(request.getRSGroupName()));</span>
-<span class="source-line-no">3186</span><span id="line-3186">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3187</span><span id="line-3187">        server.getMasterCoprocessorHost().postAddRSGroup(request.getRSGroupName());</span>
-<span class="source-line-no">3188</span><span id="line-3188">      }</span>
-<span class="source-line-no">3189</span><span id="line-3189">    } catch (IOException e) {</span>
-<span class="source-line-no">3190</span><span id="line-3190">      throw new ServiceException(e);</span>
-<span class="source-line-no">3191</span><span id="line-3191">    }</span>
-<span class="source-line-no">3192</span><span id="line-3192">    return builder.build();</span>
-<span class="source-line-no">3193</span><span id="line-3193">  }</span>
-<span class="source-line-no">3194</span><span id="line-3194"></span>
-<span class="source-line-no">3195</span><span id="line-3195">  @Override</span>
-<span class="source-line-no">3196</span><span id="line-3196">  public RemoveRSGroupResponse removeRSGroup(RpcController controller, RemoveRSGroupRequest request)</span>
-<span class="source-line-no">3197</span><span id="line-3197">    throws ServiceException {</span>
-<span class="source-line-no">3198</span><span id="line-3198">    RemoveRSGroupResponse.Builder builder = RemoveRSGroupResponse.newBuilder();</span>
-<span class="source-line-no">3199</span><span id="line-3199">    LOG.info(server.getClientIdAuditPrefix() + " remove rsgroup " + request.getRSGroupName());</span>
-<span class="source-line-no">3200</span><span id="line-3200">    try {</span>
-<span class="source-line-no">3201</span><span id="line-3201">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3202</span><span id="line-3202">        server.getMasterCoprocessorHost().preRemoveRSGroup(request.getRSGroupName());</span>
-<span class="source-line-no">3203</span><span id="line-3203">      }</span>
-<span class="source-line-no">3204</span><span id="line-3204">      server.getRSGroupInfoManager().removeRSGroup(request.getRSGroupName());</span>
-<span class="source-line-no">3205</span><span id="line-3205">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3206</span><span id="line-3206">        server.getMasterCoprocessorHost().postRemoveRSGroup(request.getRSGroupName());</span>
-<span class="source-line-no">3207</span><span id="line-3207">      }</span>
-<span class="source-line-no">3208</span><span id="line-3208">    } catch (IOException e) {</span>
-<span class="source-line-no">3209</span><span id="line-3209">      throw new ServiceException(e);</span>
-<span class="source-line-no">3210</span><span id="line-3210">    }</span>
-<span class="source-line-no">3211</span><span id="line-3211">    return builder.build();</span>
-<span class="source-line-no">3212</span><span id="line-3212">  }</span>
-<span class="source-line-no">3213</span><span id="line-3213"></span>
-<span class="source-line-no">3214</span><span id="line-3214">  @Override</span>
-<span class="source-line-no">3215</span><span id="line-3215">  public BalanceRSGroupResponse balanceRSGroup(RpcController controller,</span>
-<span class="source-line-no">3216</span><span id="line-3216">    BalanceRSGroupRequest request) throws ServiceException {</span>
-<span class="source-line-no">3217</span><span id="line-3217">    BalanceRequest balanceRequest = ProtobufUtil.toBalanceRequest(request);</span>
-<span class="source-line-no">3218</span><span id="line-3218"></span>
-<span class="source-line-no">3219</span><span id="line-3219">    BalanceRSGroupResponse.Builder builder =</span>
-<span class="source-line-no">3220</span><span id="line-3220">      BalanceRSGroupResponse.newBuilder().setBalanceRan(false);</span>
-<span class="source-line-no">3221</span><span id="line-3221"></span>
-<span class="source-line-no">3222</span><span id="line-3222">    LOG.info(</span>
-<span class="source-line-no">3223</span><span id="line-3223">      server.getClientIdAuditPrefix() + " balance rsgroup, group=" + request.getRSGroupName());</span>
-<span class="source-line-no">3224</span><span id="line-3224">    try {</span>
-<span class="source-line-no">3225</span><span id="line-3225">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3226</span><span id="line-3226">        server.getMasterCoprocessorHost().preBalanceRSGroup(request.getRSGroupName(),</span>
-<span class="source-line-no">3227</span><span id="line-3227">          balanceRequest);</span>
-<span class="source-line-no">3228</span><span id="line-3228">      }</span>
-<span class="source-line-no">3229</span><span id="line-3229">      BalanceResponse response =</span>
-<span class="source-line-no">3230</span><span id="line-3230">        server.getRSGroupInfoManager().balanceRSGroup(request.getRSGroupName(), balanceRequest);</span>
-<span class="source-line-no">3231</span><span id="line-3231">      ProtobufUtil.populateBalanceRSGroupResponse(builder, response);</span>
-<span class="source-line-no">3232</span><span id="line-3232">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3233</span><span id="line-3233">        server.getMasterCoprocessorHost().postBalanceRSGroup(request.getRSGroupName(),</span>
-<span class="source-line-no">3234</span><span id="line-3234">          balanceRequest, response);</span>
-<span class="source-line-no">3235</span><span id="line-3235">      }</span>
-<span class="source-line-no">3236</span><span id="line-3236">    } catch (IOException e) {</span>
-<span class="source-line-no">3237</span><span id="line-3237">      throw new ServiceException(e);</span>
-<span class="source-line-no">3238</span><span id="line-3238">    }</span>
-<span class="source-line-no">3239</span><span id="line-3239">    return builder.build();</span>
-<span class="source-line-no">3240</span><span id="line-3240">  }</span>
-<span class="source-line-no">3241</span><span id="line-3241"></span>
-<span class="source-line-no">3242</span><span id="line-3242">  @Override</span>
-<span class="source-line-no">3243</span><span id="line-3243">  public ListRSGroupInfosResponse listRSGroupInfos(RpcController controller,</span>
-<span class="source-line-no">3244</span><span id="line-3244">    ListRSGroupInfosRequest request) throws ServiceException {</span>
-<span class="source-line-no">3245</span><span id="line-3245">    ListRSGroupInfosResponse.Builder builder = ListRSGroupInfosResponse.newBuilder();</span>
-<span class="source-line-no">3246</span><span id="line-3246">    LOG.info(server.getClientIdAuditPrefix() + " list rsgroup");</span>
-<span class="source-line-no">3247</span><span id="line-3247">    try {</span>
-<span class="source-line-no">3248</span><span id="line-3248">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3249</span><span id="line-3249">        server.getMasterCoprocessorHost().preListRSGroups();</span>
-<span class="source-line-no">3250</span><span id="line-3250">      }</span>
-<span class="source-line-no">3251</span><span id="line-3251">      List&lt;RSGroupInfo&gt; rsGroupInfos = server.getRSGroupInfoManager().listRSGroups().stream()</span>
-<span class="source-line-no">3252</span><span id="line-3252">        .map(RSGroupInfo::new).collect(Collectors.toList());</span>
-<span class="source-line-no">3253</span><span id="line-3253">      Map&lt;String, RSGroupInfo&gt; name2Info = new HashMap&lt;&gt;();</span>
-<span class="source-line-no">3254</span><span id="line-3254">      List&lt;TableDescriptor&gt; needToFill =</span>
-<span class="source-line-no">3255</span><span id="line-3255">        new ArrayList&lt;&gt;(server.getTableDescriptors().getAll().values());</span>
-<span class="source-line-no">3256</span><span id="line-3256">      for (RSGroupInfo rsGroupInfo : rsGroupInfos) {</span>
-<span class="source-line-no">3257</span><span id="line-3257">        name2Info.put(rsGroupInfo.getName(), rsGroupInfo);</span>
-<span class="source-line-no">3258</span><span id="line-3258">        for (TableDescriptor td : server.getTableDescriptors().getAll().values()) {</span>
-<span class="source-line-no">3259</span><span id="line-3259">          if (rsGroupInfo.containsTable(td.getTableName())) {</span>
-<span class="source-line-no">3260</span><span id="line-3260">            needToFill.remove(td);</span>
-<span class="source-line-no">3261</span><span id="line-3261">          }</span>
-<span class="source-line-no">3262</span><span id="line-3262">        }</span>
-<span class="source-line-no">3263</span><span id="line-3263">      }</span>
-<span class="source-line-no">3264</span><span id="line-3264">      for (TableDescriptor td : needToFill) {</span>
-<span class="source-line-no">3265</span><span id="line-3265">        String groupName = td.getRegionServerGroup().orElse(RSGroupInfo.DEFAULT_GROUP);</span>
-<span class="source-line-no">3266</span><span id="line-3266">        RSGroupInfo rsGroupInfo = name2Info.get(groupName);</span>
-<span class="source-line-no">3267</span><span id="line-3267">        if (rsGroupInfo != null) {</span>
-<span class="source-line-no">3268</span><span id="line-3268">          rsGroupInfo.addTable(td.getTableName());</span>
-<span class="source-line-no">3269</span><span id="line-3269">        }</span>
-<span class="source-line-no">3270</span><span id="line-3270">      }</span>
-<span class="source-line-no">3271</span><span id="line-3271">      for (RSGroupInfo rsGroupInfo : rsGroupInfos) {</span>
-<span class="source-line-no">3272</span><span id="line-3272">        // TODO: this can be done at once outside this loop, do not need to scan all every time.</span>
-<span class="source-line-no">3273</span><span id="line-3273">        builder.addRSGroupInfo(ProtobufUtil.toProtoGroupInfo(rsGroupInfo));</span>
-<span class="source-line-no">3274</span><span id="line-3274">      }</span>
-<span class="source-line-no">3275</span><span id="line-3275">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3276</span><span id="line-3276">        server.getMasterCoprocessorHost().postListRSGroups();</span>
-<span class="source-line-no">3277</span><span id="line-3277">      }</span>
-<span class="source-line-no">3278</span><span id="line-3278">    } catch (IOException e) {</span>
-<span class="source-line-no">3279</span><span id="line-3279">      throw new ServiceException(e);</span>
-<span class="source-line-no">3280</span><span id="line-3280">    }</span>
-<span class="source-line-no">3281</span><span id="line-3281">    return builder.build();</span>
-<span class="source-line-no">3282</span><span id="line-3282">  }</span>
-<span class="source-line-no">3283</span><span id="line-3283"></span>
-<span class="source-line-no">3284</span><span id="line-3284">  @Override</span>
-<span class="source-line-no">3285</span><span id="line-3285">  public RemoveServersResponse removeServers(RpcController controller, RemoveServersRequest request)</span>
-<span class="source-line-no">3286</span><span id="line-3286">    throws ServiceException {</span>
-<span class="source-line-no">3287</span><span id="line-3287">    RemoveServersResponse.Builder builder = RemoveServersResponse.newBuilder();</span>
-<span class="source-line-no">3288</span><span id="line-3288">    Set&lt;Address&gt; servers = Sets.newHashSet();</span>
-<span class="source-line-no">3289</span><span id="line-3289">    for (HBaseProtos.ServerName el : request.getServersList()) {</span>
-<span class="source-line-no">3290</span><span id="line-3290">      servers.add(Address.fromParts(el.getHostName(), el.getPort()));</span>
-<span class="source-line-no">3291</span><span id="line-3291">    }</span>
-<span class="source-line-no">3292</span><span id="line-3292">    LOG.info(</span>
-<span class="source-line-no">3293</span><span id="line-3293">      server.getClientIdAuditPrefix() + " remove decommissioned servers from rsgroup: " + servers);</span>
-<span class="source-line-no">3294</span><span id="line-3294">    try {</span>
-<span class="source-line-no">3295</span><span id="line-3295">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3296</span><span id="line-3296">        server.getMasterCoprocessorHost().preRemoveServers(servers);</span>
-<span class="source-line-no">3297</span><span id="line-3297">      }</span>
-<span class="source-line-no">3298</span><span id="line-3298">      server.getRSGroupInfoManager().removeServers(servers);</span>
-<span class="source-line-no">3299</span><span id="line-3299">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3300</span><span id="line-3300">        server.getMasterCoprocessorHost().postRemoveServers(servers);</span>
-<span class="source-line-no">3301</span><span id="line-3301">      }</span>
-<span class="source-line-no">3302</span><span id="line-3302">    } catch (IOException e) {</span>
-<span class="source-line-no">3303</span><span id="line-3303">      throw new ServiceException(e);</span>
-<span class="source-line-no">3304</span><span id="line-3304">    }</span>
-<span class="source-line-no">3305</span><span id="line-3305">    return builder.build();</span>
-<span class="source-line-no">3306</span><span id="line-3306">  }</span>
-<span class="source-line-no">3307</span><span id="line-3307"></span>
-<span class="source-line-no">3308</span><span id="line-3308">  @Override</span>
-<span class="source-line-no">3309</span><span id="line-3309">  public ListTablesInRSGroupResponse listTablesInRSGroup(RpcController controller,</span>
-<span class="source-line-no">3310</span><span id="line-3310">    ListTablesInRSGroupRequest request) throws ServiceException {</span>
-<span class="source-line-no">3311</span><span id="line-3311">    ListTablesInRSGroupResponse.Builder builder = ListTablesInRSGroupResponse.newBuilder();</span>
-<span class="source-line-no">3312</span><span id="line-3312">    String groupName = request.getGroupName();</span>
-<span class="source-line-no">3313</span><span id="line-3313">    LOG.info(server.getClientIdAuditPrefix() + " list tables in rsgroup " + groupName);</span>
-<span class="source-line-no">3314</span><span id="line-3314">    try {</span>
-<span class="source-line-no">3315</span><span id="line-3315">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3316</span><span id="line-3316">        server.getMasterCoprocessorHost().preListTablesInRSGroup(groupName);</span>
-<span class="source-line-no">3317</span><span id="line-3317">      }</span>
-<span class="source-line-no">3318</span><span id="line-3318">      RSGroupUtil.listTablesInRSGroup(server, groupName).stream()</span>
-<span class="source-line-no">3319</span><span id="line-3319">        .map(ProtobufUtil::toProtoTableName).forEach(builder::addTableName);</span>
-<span class="source-line-no">3320</span><span id="line-3320">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3321</span><span id="line-3321">        server.getMasterCoprocessorHost().postListTablesInRSGroup(groupName);</span>
-<span class="source-line-no">3322</span><span id="line-3322">      }</span>
-<span class="source-line-no">3323</span><span id="line-3323">    } catch (IOException e) {</span>
-<span class="source-line-no">3324</span><span id="line-3324">      throw new ServiceException(e);</span>
-<span class="source-line-no">3325</span><span id="line-3325">    }</span>
-<span class="source-line-no">3326</span><span id="line-3326">    return builder.build();</span>
-<span class="source-line-no">3327</span><span id="line-3327">  }</span>
-<span class="source-line-no">3328</span><span id="line-3328"></span>
-<span class="source-line-no">3329</span><span id="line-3329">  @Override</span>
-<span class="source-line-no">3330</span><span id="line-3330">  public GetConfiguredNamespacesAndTablesInRSGroupResponse</span>
-<span class="source-line-no">3331</span><span id="line-3331">    getConfiguredNamespacesAndTablesInRSGroup(RpcController controller,</span>
-<span class="source-line-no">3332</span><span id="line-3332">      GetConfiguredNamespacesAndTablesInRSGroupRequest request) throws ServiceException {</span>
-<span class="source-line-no">3333</span><span id="line-3333">    GetConfiguredNamespacesAndTablesInRSGroupResponse.Builder builder =</span>
-<span class="source-line-no">3334</span><span id="line-3334">      GetConfiguredNamespacesAndTablesInRSGroupResponse.newBuilder();</span>
-<span class="source-line-no">3335</span><span id="line-3335">    String groupName = request.getGroupName();</span>
-<span class="source-line-no">3336</span><span id="line-3336">    LOG.info(server.getClientIdAuditPrefix() + " get configured namespaces and tables in rsgroup "</span>
-<span class="source-line-no">3337</span><span id="line-3337">      + groupName);</span>
-<span class="source-line-no">3338</span><span id="line-3338">    try {</span>
-<span class="source-line-no">3339</span><span id="line-3339">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3340</span><span id="line-3340">        server.getMasterCoprocessorHost().preGetConfiguredNamespacesAndTablesInRSGroup(groupName);</span>
-<span class="source-line-no">3341</span><span id="line-3341">      }</span>
-<span class="source-line-no">3342</span><span id="line-3342">      for (NamespaceDescriptor nd : server.getClusterSchema().getNamespaces()) {</span>
-<span class="source-line-no">3343</span><span id="line-3343">        if (groupName.equals(nd.getConfigurationValue(RSGroupInfo.NAMESPACE_DESC_PROP_GROUP))) {</span>
-<span class="source-line-no">3344</span><span id="line-3344">          builder.addNamespace(nd.getName());</span>
-<span class="source-line-no">3345</span><span id="line-3345">        }</span>
-<span class="source-line-no">3346</span><span id="line-3346">      }</span>
-<span class="source-line-no">3347</span><span id="line-3347">      for (TableDescriptor td : server.getTableDescriptors().getAll().values()) {</span>
-<span class="source-line-no">3348</span><span id="line-3348">        if (td.getRegionServerGroup().map(g -&gt; g.equals(groupName)).orElse(false)) {</span>
-<span class="source-line-no">3349</span><span id="line-3349">          builder.addTableName(ProtobufUtil.toProtoTableName(td.getTableName()));</span>
-<span class="source-line-no">3350</span><span id="line-3350">        }</span>
-<span class="source-line-no">3351</span><span id="line-3351">      }</span>
-<span class="source-line-no">3352</span><span id="line-3352">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3353</span><span id="line-3353">        server.getMasterCoprocessorHost().postGetConfiguredNamespacesAndTablesInRSGroup(groupName);</span>
-<span class="source-line-no">3354</span><span id="line-3354">      }</span>
-<span class="source-line-no">3355</span><span id="line-3355">    } catch (IOException e) {</span>
-<span class="source-line-no">3356</span><span id="line-3356">      throw new ServiceException(e);</span>
-<span class="source-line-no">3357</span><span id="line-3357">    }</span>
-<span class="source-line-no">3358</span><span id="line-3358">    return builder.build();</span>
-<span class="source-line-no">3359</span><span id="line-3359">  }</span>
-<span class="source-line-no">3360</span><span id="line-3360"></span>
-<span class="source-line-no">3361</span><span id="line-3361">  @Override</span>
-<span class="source-line-no">3362</span><span id="line-3362">  public RenameRSGroupResponse renameRSGroup(RpcController controller, RenameRSGroupRequest request)</span>
-<span class="source-line-no">3363</span><span id="line-3363">    throws ServiceException {</span>
-<span class="source-line-no">3364</span><span id="line-3364">    RenameRSGroupResponse.Builder builder = RenameRSGroupResponse.newBuilder();</span>
-<span class="source-line-no">3365</span><span id="line-3365">    String oldRSGroup = request.getOldRsgroupName();</span>
-<span class="source-line-no">3366</span><span id="line-3366">    String newRSGroup = request.getNewRsgroupName();</span>
-<span class="source-line-no">3367</span><span id="line-3367">    LOG.info("{} rename rsgroup from {} to {} ", server.getClientIdAuditPrefix(), oldRSGroup,</span>
-<span class="source-line-no">3368</span><span id="line-3368">      newRSGroup);</span>
-<span class="source-line-no">3369</span><span id="line-3369">    try {</span>
-<span class="source-line-no">3370</span><span id="line-3370">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3371</span><span id="line-3371">        server.getMasterCoprocessorHost().preRenameRSGroup(oldRSGroup, newRSGroup);</span>
-<span class="source-line-no">3372</span><span id="line-3372">      }</span>
-<span class="source-line-no">3373</span><span id="line-3373">      server.getRSGroupInfoManager().renameRSGroup(oldRSGroup, newRSGroup);</span>
-<span class="source-line-no">3374</span><span id="line-3374">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3375</span><span id="line-3375">        server.getMasterCoprocessorHost().postRenameRSGroup(oldRSGroup, newRSGroup);</span>
-<span class="source-line-no">3376</span><span id="line-3376">      }</span>
-<span class="source-line-no">3377</span><span id="line-3377">    } catch (IOException e) {</span>
-<span class="source-line-no">3378</span><span id="line-3378">      throw new ServiceException(e);</span>
-<span class="source-line-no">3379</span><span id="line-3379">    }</span>
-<span class="source-line-no">3380</span><span id="line-3380">    return builder.build();</span>
-<span class="source-line-no">3381</span><span id="line-3381">  }</span>
-<span class="source-line-no">3382</span><span id="line-3382"></span>
-<span class="source-line-no">3383</span><span id="line-3383">  @Override</span>
-<span class="source-line-no">3384</span><span id="line-3384">  public UpdateRSGroupConfigResponse updateRSGroupConfig(RpcController controller,</span>
-<span class="source-line-no">3385</span><span id="line-3385">    UpdateRSGroupConfigRequest request) throws ServiceException {</span>
-<span class="source-line-no">3386</span><span id="line-3386">    UpdateRSGroupConfigResponse.Builder builder = UpdateRSGroupConfigResponse.newBuilder();</span>
-<span class="source-line-no">3387</span><span id="line-3387">    String groupName = request.getGroupName();</span>
-<span class="source-line-no">3388</span><span id="line-3388">    Map&lt;String, String&gt; configuration = new HashMap&lt;&gt;();</span>
-<span class="source-line-no">3389</span><span id="line-3389">    request.getConfigurationList().forEach(p -&gt; configuration.put(p.getName(), p.getValue()));</span>
-<span class="source-line-no">3390</span><span id="line-3390">    LOG.info("{} update rsgroup {} configuration {}", server.getClientIdAuditPrefix(), groupName,</span>
-<span class="source-line-no">3391</span><span id="line-3391">      configuration);</span>
-<span class="source-line-no">3392</span><span id="line-3392">    try {</span>
-<span class="source-line-no">3393</span><span id="line-3393">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3394</span><span id="line-3394">        server.getMasterCoprocessorHost().preUpdateRSGroupConfig(groupName, configuration);</span>
-<span class="source-line-no">3395</span><span id="line-3395">      }</span>
-<span class="source-line-no">3396</span><span id="line-3396">      server.getRSGroupInfoManager().updateRSGroupConfig(groupName, configuration);</span>
-<span class="source-line-no">3397</span><span id="line-3397">      if (server.getMasterCoprocessorHost() != null) {</span>
-<span class="source-line-no">3398</span><span id="line-3398">        server.getMasterCoprocessorHost().postUpdateRSGroupConfig(groupName, configuration);</span>
-<span class="source-line-no">3399</span><span id="line-3399">      }</span>
-<span class="source-line-no">3400</span><span id="line-3400">    } catch (IOException e) {</span>
-<span class="source-line-no">3401</span><span id="line-3401">      throw new ServiceException(e);</span>
-<span class="source-line-no">3402</span><span id="line-3402">    }</span>
-<span class="source-line-no">3403</span><span id="line-3403">    return builder.build();</span>
-<span class="source-line-no">3404</span><span id="line-3404">  }</span>
-<span class="source-line-no">3405</span><span id="line-3405"></span>
-<span class="source-line-no">3406</span><span id="line-3406">  @Override</span>
-<span class="source-line-no">3407</span><span id="line-3407">  public HBaseProtos.LogEntry getLogEntries(RpcController controller,</span>
-<span class="source-line-no">3408</span><span id="line-3408">    HBaseProtos.LogRequest request) throws ServiceException {</span>
-<span class="source-line-no">3409</span><span id="line-3409">    try {</span>
-<span class="source-line-no">3410</span><span id="line-3410">      final String logClassName = request.getLogClassName();</span>
-<span class="source-line-no">3411</span><span id="line-3411">      Class&lt;?&gt; logClass = Class.forName(logClassName).asSubclass(Message.class);</span>
-<span class="source-line-no">3412</span><span id="line-3412">      Method method = logClass.getMethod("parseFrom", ByteString.class);</span>
-<span class="source-line-no">3413</span><span id="line-3413">      if (logClassName.contains("BalancerDecisionsRequest")) {</span>
-<span class="source-line-no">3414</span><span id="line-3414">        MasterProtos.BalancerDecisionsRequest balancerDecisionsRequest =</span>
-<span class="source-line-no">3415</span><span id="line-3415">          (MasterProtos.BalancerDecisionsRequest) method.invoke(null, request.getLogMessage());</span>
-<span class="source-line-no">3416</span><span id="line-3416">        MasterProtos.BalancerDecisionsResponse balancerDecisionsResponse =</span>
-<span class="source-line-no">3417</span><span id="line-3417">          getBalancerDecisions(balancerDecisionsRequest);</span>
-<span class="source-line-no">3418</span><span id="line-3418">        return HBaseProtos.LogEntry.newBuilder()</span>
-<span class="source-line-no">3419</span><span id="line-3419">          .setLogClassName(balancerDecisionsResponse.getClass().getName())</span>
-<span class="source-line-no">3420</span><span id="line-3420">          .setLogMessage(balancerDecisionsResponse.toByteString()).build();</span>
-<span class="source-line-no">3421</span><span id="line-3421">      } else if (logClassName.contains("BalancerRejectionsRequest")) {</span>
-<span class="source-line-no">3422</span><span id="line-3422">        MasterProtos.BalancerRejectionsRequest balancerRejectionsRequest =</span>
-<span class="source-line-no">3423</span><span id="line-3423">          (MasterProtos.BalancerRejectionsRequest) method.invoke(null, request.getLogMessage());</span>
-<span class="source-line-no">3424</span><span id="line-3424">        MasterProtos.BalancerRejectionsResponse balancerRejectionsResponse =</span>
-<span class="source-line-no">3425</span><span id="line-3425">          getBalancerRejections(balancerRejectionsRequest);</span>
-<span class="source-line-no">3426</span><span id="line-3426">        return HBaseProtos.LogEntry.newBuilder()</span>
-<span class="source-line-no">3427</span><span id="line-3427">          .setLogClassName(balancerRejectionsResponse.getClass().getName())</span>
-<span class="source-line-no">3428</span><span id="line-3428">          .setLogMessage(balancerRejectionsResponse.toByteString()).build();</span>
-<span class="source-line-no">3429</span><span id="line-3429">      }</span>
-<span class="source-line-no">3430</span><span id="line-3430">    } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException</span>
-<span class="source-line-no">3431</span><span id="line-3431">      | InvocationTargetException e) {</span>
-<span class="source-line-no">3432</span><span id="line-3432">      LOG.error("Error while retrieving log entries.", e);</span>
-<span class="source-line-no">3433</span><span id="line-3433">      throw new ServiceException(e);</span>
-<span class="source-line-no">3434</span><span id="line-3434">    }</span>
-<span class="source-line-no">3435</span><span id="line-3435">    throw new ServiceException("Invalid request params");</span>
-<span class="source-line-no">3436</span><span id="line-3436">  }</span>
-<span class="source-line-no">3437</span><span id="line-3437"></span>
-<span class="source-line-no">3438</span><span id="line-3438">  private MasterProtos.BalancerDecisionsResponse</span>
-<span class="source-line-no">3439</span><span id="line-3439">    getBalancerDecisions(MasterProtos.BalancerDecisionsRequest request) {</span>
-<span class="source-line-no">3440</span><span id="line-3440">    final NamedQueueRecorder namedQueueRecorder = this.server.getNamedQueueRecorder();</span>
-<span class="source-line-no">3441</span><span id="line-3441">    if (namedQueueRecorder == null) {</span>
-<span class="source-line-no">3442</span><span id="line-3442">      return MasterProtos.BalancerDecisionsResponse.newBuilder()</span>
-<span class="source-line-no">3443</span><span id="line-3443">        .addAllBalancerDecision(Collections.emptyList()).build();</span>
-<span class="source-line-no">3444</span><span id="line-3444">    }</span>
-<span class="source-line-no">3445</span><span id="line-3445">    final NamedQueueGetRequest namedQueueGetRequest = new NamedQueueGetRequest();</span>
-<span class="source-line-no">3446</span><span id="line-3446">    namedQueueGetRequest.setNamedQueueEvent(BalancerDecisionDetails.BALANCER_DECISION_EVENT);</span>
-<span class="source-line-no">3447</span><span id="line-3447">    namedQueueGetRequest.setBalancerDecisionsRequest(request);</span>
-<span class="source-line-no">3448</span><span id="line-3448">    NamedQueueGetResponse namedQueueGetResponse =</span>
-<span class="source-line-no">3449</span><span id="line-3449">      namedQueueRecorder.getNamedQueueRecords(namedQueueGetRequest);</span>
-<span class="source-line-no">3450</span><span id="line-3450">    List&lt;RecentLogs.BalancerDecision&gt; balancerDecisions = namedQueueGetResponse != null</span>
-<span class="source-line-no">3451</span><span id="line-3451">      ? namedQueueGetResponse.getBalancerDecisions()</span>
-<span class="source-line-no">3452</span><span id="line-3452">      : Collections.emptyList();</span>
-<span class="source-line-no">3453</span><span id="line-3453">    return MasterProtos.BalancerDecisionsResponse.newBuilder()</span>
-<span class="source-line-no">3454</span><span id="line-3454">      .addAllBalancerDecision(balancerDecisions).build();</span>
-<span class="source-line-no">3455</span><span id="line-3455">  }</span>
-<span class="source-line-no">3456</span><span id="line-3456"></span>
-<span class="source-line-no">3457</span><span id="line-3457">  private MasterProtos.BalancerRejectionsResponse</span>
-<span class="source-line-no">3458</span><span id="line-3458">    getBalancerRejections(MasterProtos.BalancerRejectionsRequest request) {</span>
-<span class="source-line-no">3459</span><span id="line-3459">    final NamedQueueRecorder namedQueueRecorder = this.server.getNamedQueueRecorder();</span>
-<span class="source-line-no">3460</span><span id="line-3460">    if (namedQueueRecorder == null) {</span>
-<span class="source-line-no">3461</span><span id="line-3461">      return MasterProtos.BalancerRejectionsResponse.newBuilder()</span>
-<span class="source-line-no">3462</span><span id="line-3462">        .addAllBalancerRejection(Collections.emptyList()).build();</span>
-<span class="source-line-no">3463</span><span id="line-3463">    }</span>
-<span class="source-line-no">3464</span><span id="line-3464">    final NamedQueueGetRequest namedQueueGetRequest = new NamedQueueGetRequest();</span>
-<span class="source-line-no">3465</span><span id="line-3465">    namedQueueGetRequest.setNamedQueueEvent(BalancerRejectionDetails.BALANCER_REJECTION_EVENT);</span>
-<span class="source-line-no">3466</span><span id="line-3466">    namedQueueGetRequest.setBalancerRejectionsRequest(request);</span>
-<span class="source-line-no">3467</span><span id="line-3467">    NamedQueueGetResponse namedQueueGetResponse =</span>
-<span class="source-line-no">3468</span><span id="line-3468">      namedQueueRecorder.getNamedQueueRecords(namedQueueGetRequest);</span>
-<span class="source-line-no">3469</span><span id="line-3469">    List&lt;RecentLogs.BalancerRejection&gt; balancerRejections = namedQueueGetResponse != null</span>
-<span class="source-line-no">3470</span><span id="line-3470">      ? namedQueueGetResponse.getBalancerRejections()</span>
-<span class="source-line-no">3471</span><span id="line-3471">      : Collections.emptyList();</span>
-<span class="source-line-no">3472</span><span id="line-3472">    return MasterProtos.BalancerRejectionsResponse.newBuilder()</span>
-<span class="source-line-no">3473</span><span id="line-3473">      .addAllBalancerRejection(balancerRejections).build();</span>
-<span class="source-line-no">3474</span><span id="line-3474">  }</span>
-<span class="source-line-no">3475</span><span id="line-3475"></span>
-<span class="source-line-no">3476</span><span id="line-3476">  @Override</span>
-<span class="source-line-no">3477</span><span id="line-3477">  @QosPriority(priority = HConstants.ADMIN_QOS)</span>
-<span class="source-line-no">3478</span><span id="line-3478">  public GetRegionInfoResponse getRegionInfo(final RpcController controller,</span>
-<span class="source-line-no">3479</span><span id="line-3479">    final GetRegionInfoRequest request) throws ServiceException {</span>
-<span class="source-line-no">3480</span><span id="line-3480">    final GetRegionInfoResponse.Builder builder = GetRegionInfoResponse.newBuilder();</span>
-<span class="source-line-no">3481</span><span id="line-3481">    final RegionInfo info = getRegionInfo(request.getRegion());</span>
-<span class="source-line-no">3482</span><span id="line-3482">    if (info != null) {</span>
-<span class="source-line-no">3483</span><span id="line-3483">      builder.setRegionInfo(ProtobufUtil.toRegionInfo(info));</span>
-<span class="source-line-no">3484</span><span id="line-3484">    } else {</span>
-<span class="source-line-no">3485</span><span id="line-3485">      // Is it a MOB name? These work differently.</span>
-<span class="source-line-no">3486</span><span id="line-3486">      byte[] regionName = request.getRegion().getValue().toByteArray();</span>
-<span class="source-line-no">3487</span><span id="line-3487">      TableName tableName = RegionInfo.getTable(regionName);</span>
-<span class="source-line-no">3488</span><span id="line-3488">      if (MobUtils.isMobRegionName(tableName, regionName)) {</span>
-<span class="source-line-no">3489</span><span id="line-3489">        // a dummy region info contains the compaction state.</span>
-<span class="source-line-no">3490</span><span id="line-3490">        RegionInfo mobRegionInfo = MobUtils.getMobRegionInfo(tableName);</span>
-<span class="source-line-no">3491</span><span id="line-3491">        builder.setRegionInfo(ProtobufUtil.toRegionInfo(mobRegionInfo));</span>
-<span class="source-line-no">3492</span><span id="line-3492">        if (request.hasCompactionState() &amp;&amp; request.getCompactionState()) {</span>
-<span class="source-line-no">3493</span><span id="line-3493">          builder.setCompactionState(server.getMobCompactionState(tableName));</span>
-<span class="source-line-no">3494</span><span id="line-3494">        }</span>
-<span class="source-line-no">3495</span><span id="line-3495">      } else {</span>
-<span class="source-line-no">3496</span><span id="line-3496">        // If unknown RegionInfo and not a MOB region, it is unknown.</span>
-<span class="source-line-no">3497</span><span id="line-3497">        throw new ServiceException(new UnknownRegionException(Bytes.toString(regionName)));</span>
-<span class="source-line-no">3498</span><span id="line-3498">      }</span>
-<span class="source-line-no">3499</span><span id="line-3499">    }</span>
-<span class="source-line-no">3500</span><span id="line-3500">    return builder.build();</span>
-<span class="source-line-no">3501</span><span id="line-3501">  }</span>
-<span class="source-line-no">3502</span><span id="line-3502"></span>
-<span class="source-line-no">3503</span><span id="line-3503">  @Override</span>
-<span class="source-line-no">3504</span><span id="line-3504">  public GetStoreFileResponse getStoreFile(RpcController controller, GetStoreFileRequest request)</span>
-<span class="source-line-no">3505</span><span id="line-3505">    throws ServiceException {</span>
-<span class="source-line-no">3506</span><span id="line-3506">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3507</span><span id="line-3507">  }</span>
-<span class="source-line-no">3508</span><span id="line-3508"></span>
-<span class="source-line-no">3509</span><span id="line-3509">  @Override</span>
-<span class="source-line-no">3510</span><span id="line-3510">  public GetOnlineRegionResponse getOnlineRegion(RpcController controller,</span>
-<span class="source-line-no">3511</span><span id="line-3511">    GetOnlineRegionRequest request) throws ServiceException {</span>
-<span class="source-line-no">3512</span><span id="line-3512">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3513</span><span id="line-3513">  }</span>
-<span class="source-line-no">3514</span><span id="line-3514"></span>
-<span class="source-line-no">3515</span><span id="line-3515">  @Override</span>
-<span class="source-line-no">3516</span><span id="line-3516">  public OpenRegionResponse openRegion(RpcController controller, OpenRegionRequest request)</span>
-<span class="source-line-no">3517</span><span id="line-3517">    throws ServiceException {</span>
-<span class="source-line-no">3518</span><span id="line-3518">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3519</span><span id="line-3519">  }</span>
-<span class="source-line-no">3520</span><span id="line-3520"></span>
-<span class="source-line-no">3521</span><span id="line-3521">  @Override</span>
-<span class="source-line-no">3522</span><span id="line-3522">  public WarmupRegionResponse warmupRegion(RpcController controller, WarmupRegionRequest request)</span>
-<span class="source-line-no">3523</span><span id="line-3523">    throws ServiceException {</span>
-<span class="source-line-no">3524</span><span id="line-3524">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3525</span><span id="line-3525">  }</span>
-<span class="source-line-no">3526</span><span id="line-3526"></span>
-<span class="source-line-no">3527</span><span id="line-3527">  @Override</span>
-<span class="source-line-no">3528</span><span id="line-3528">  public CloseRegionResponse closeRegion(RpcController controller, CloseRegionRequest request)</span>
-<span class="source-line-no">3529</span><span id="line-3529">    throws ServiceException {</span>
-<span class="source-line-no">3530</span><span id="line-3530">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3531</span><span id="line-3531">  }</span>
-<span class="source-line-no">3532</span><span id="line-3532"></span>
-<span class="source-line-no">3533</span><span id="line-3533">  @Override</span>
-<span class="source-line-no">3534</span><span id="line-3534">  public FlushRegionResponse flushRegion(RpcController controller, FlushRegionRequest request)</span>
-<span class="source-line-no">3535</span><span id="line-3535">    throws ServiceException {</span>
-<span class="source-line-no">3536</span><span id="line-3536">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3537</span><span id="line-3537">  }</span>
-<span class="source-line-no">3538</span><span id="line-3538"></span>
-<span class="source-line-no">3539</span><span id="line-3539">  @Override</span>
-<span class="source-line-no">3540</span><span id="line-3540">  public CompactionSwitchResponse compactionSwitch(RpcController controller,</span>
-<span class="source-line-no">3541</span><span id="line-3541">    CompactionSwitchRequest request) throws ServiceException {</span>
-<span class="source-line-no">3542</span><span id="line-3542">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3543</span><span id="line-3543">  }</span>
-<span class="source-line-no">3544</span><span id="line-3544"></span>
-<span class="source-line-no">3545</span><span id="line-3545">  @Override</span>
-<span class="source-line-no">3546</span><span id="line-3546">  public CompactRegionResponse compactRegion(RpcController controller, CompactRegionRequest request)</span>
-<span class="source-line-no">3547</span><span id="line-3547">    throws ServiceException {</span>
-<span class="source-line-no">3548</span><span id="line-3548">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3549</span><span id="line-3549">  }</span>
-<span class="source-line-no">3550</span><span id="line-3550"></span>
-<span class="source-line-no">3551</span><span id="line-3551">  @Override</span>
-<span class="source-line-no">3552</span><span id="line-3552">  public ReplicateWALEntryResponse replicateWALEntry(RpcController controller,</span>
-<span class="source-line-no">3553</span><span id="line-3553">    ReplicateWALEntryRequest request) throws ServiceException {</span>
-<span class="source-line-no">3554</span><span id="line-3554">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3555</span><span id="line-3555">  }</span>
-<span class="source-line-no">3556</span><span id="line-3556"></span>
-<span class="source-line-no">3557</span><span id="line-3557">  @Override</span>
-<span class="source-line-no">3558</span><span id="line-3558">  public ReplicateWALEntryResponse replay(RpcController controller,</span>
-<span class="source-line-no">3559</span><span id="line-3559">    ReplicateWALEntryRequest request) throws ServiceException {</span>
-<span class="source-line-no">3560</span><span id="line-3560">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3561</span><span id="line-3561">  }</span>
-<span class="source-line-no">3562</span><span id="line-3562"></span>
-<span class="source-line-no">3563</span><span id="line-3563">  @Override</span>
-<span class="source-line-no">3564</span><span id="line-3564">  public RollWALWriterResponse rollWALWriter(RpcController controller, RollWALWriterRequest request)</span>
-<span class="source-line-no">3565</span><span id="line-3565">    throws ServiceException {</span>
-<span class="source-line-no">3566</span><span id="line-3566">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3567</span><span id="line-3567">  }</span>
-<span class="source-line-no">3568</span><span id="line-3568"></span>
-<span class="source-line-no">3569</span><span id="line-3569">  @Override</span>
-<span class="source-line-no">3570</span><span id="line-3570">  public GetServerInfoResponse getServerInfo(RpcController controller, GetServerInfoRequest request)</span>
-<span class="source-line-no">3571</span><span id="line-3571">    throws ServiceException {</span>
-<span class="source-line-no">3572</span><span id="line-3572">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3573</span><span id="line-3573">  }</span>
-<span class="source-line-no">3574</span><span id="line-3574"></span>
-<span class="source-line-no">3575</span><span id="line-3575">  @Override</span>
-<span class="source-line-no">3576</span><span id="line-3576">  public StopServerResponse stopServer(RpcController controller, StopServerRequest request)</span>
-<span class="source-line-no">3577</span><span id="line-3577">    throws ServiceException {</span>
-<span class="source-line-no">3578</span><span id="line-3578">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3579</span><span id="line-3579">  }</span>
-<span class="source-line-no">3580</span><span id="line-3580"></span>
-<span class="source-line-no">3581</span><span id="line-3581">  @Override</span>
-<span class="source-line-no">3582</span><span id="line-3582">  public UpdateFavoredNodesResponse updateFavoredNodes(RpcController controller,</span>
-<span class="source-line-no">3583</span><span id="line-3583">    UpdateFavoredNodesRequest request) throws ServiceException {</span>
-<span class="source-line-no">3584</span><span id="line-3584">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3585</span><span id="line-3585">  }</span>
-<span class="source-line-no">3586</span><span id="line-3586"></span>
-<span class="source-line-no">3587</span><span id="line-3587">  @Override</span>
-<span class="source-line-no">3588</span><span id="line-3588">  public GetRegionLoadResponse getRegionLoad(RpcController controller, GetRegionLoadRequest request)</span>
-<span class="source-line-no">3589</span><span id="line-3589">    throws ServiceException {</span>
-<span class="source-line-no">3590</span><span id="line-3590">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3591</span><span id="line-3591">  }</span>
-<span class="source-line-no">3592</span><span id="line-3592"></span>
-<span class="source-line-no">3593</span><span id="line-3593">  @Override</span>
-<span class="source-line-no">3594</span><span id="line-3594">  public ClearCompactionQueuesResponse clearCompactionQueues(RpcController controller,</span>
-<span class="source-line-no">3595</span><span id="line-3595">    ClearCompactionQueuesRequest request) throws ServiceException {</span>
-<span class="source-line-no">3596</span><span id="line-3596">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3597</span><span id="line-3597">  }</span>
-<span class="source-line-no">3598</span><span id="line-3598"></span>
-<span class="source-line-no">3599</span><span id="line-3599">  @Override</span>
-<span class="source-line-no">3600</span><span id="line-3600">  public ClearRegionBlockCacheResponse clearRegionBlockCache(RpcController controller,</span>
-<span class="source-line-no">3601</span><span id="line-3601">    ClearRegionBlockCacheRequest request) throws ServiceException {</span>
-<span class="source-line-no">3602</span><span id="line-3602">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3603</span><span id="line-3603">  }</span>
-<span class="source-line-no">3604</span><span id="line-3604"></span>
-<span class="source-line-no">3605</span><span id="line-3605">  @Override</span>
-<span class="source-line-no">3606</span><span id="line-3606">  public GetSpaceQuotaSnapshotsResponse getSpaceQuotaSnapshots(RpcController controller,</span>
-<span class="source-line-no">3607</span><span id="line-3607">    GetSpaceQuotaSnapshotsRequest request) throws ServiceException {</span>
-<span class="source-line-no">3608</span><span id="line-3608">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3609</span><span id="line-3609">  }</span>
-<span class="source-line-no">3610</span><span id="line-3610"></span>
-<span class="source-line-no">3611</span><span id="line-3611">  @Override</span>
-<span class="source-line-no">3612</span><span id="line-3612">  public ExecuteProceduresResponse executeProcedures(RpcController controller,</span>
-<span class="source-line-no">3613</span><span id="line-3613">    ExecuteProceduresRequest request) throws ServiceException {</span>
-<span class="source-line-no">3614</span><span id="line-3614">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3615</span><span id="line-3615">  }</span>
-<span class="source-line-no">3616</span><span id="line-3616"></span>
-<span class="source-line-no">3617</span><span id="line-3617">  @Override</span>
-<span class="source-line-no">3618</span><span id="line-3618">  public GetCachedFilesListResponse getCachedFilesList(RpcController controller,</span>
-<span class="source-line-no">3619</span><span id="line-3619">    GetCachedFilesListRequest request) throws ServiceException {</span>
-<span class="source-line-no">3620</span><span id="line-3620">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3621</span><span id="line-3621">  }</span>
-<span class="source-line-no">3622</span><span id="line-3622"></span>
-<span class="source-line-no">3623</span><span id="line-3623">  @Override</span>
-<span class="source-line-no">3624</span><span id="line-3624">  public GetLiveRegionServersResponse getLiveRegionServers(RpcController controller,</span>
-<span class="source-line-no">3625</span><span id="line-3625">    GetLiveRegionServersRequest request) throws ServiceException {</span>
-<span class="source-line-no">3626</span><span id="line-3626">    List&lt;ServerName&gt; regionServers = new ArrayList&lt;&gt;(server.getLiveRegionServers());</span>
-<span class="source-line-no">3627</span><span id="line-3627">    Collections.shuffle(regionServers, ThreadLocalRandom.current());</span>
-<span class="source-line-no">3628</span><span id="line-3628">    GetLiveRegionServersResponse.Builder builder =</span>
-<span class="source-line-no">3629</span><span id="line-3629">      GetLiveRegionServersResponse.newBuilder().setTotal(regionServers.size());</span>
-<span class="source-line-no">3630</span><span id="line-3630">    regionServers.stream().limit(request.getCount()).map(ProtobufUtil::toServerName)</span>
-<span class="source-line-no">3631</span><span id="line-3631">      .forEach(builder::addServer);</span>
-<span class="source-line-no">3632</span><span id="line-3632">    return builder.build();</span>
-<span class="source-line-no">3633</span><span id="line-3633">  }</span>
-<span class="source-line-no">3634</span><span id="line-3634"></span>
-<span class="source-line-no">3635</span><span id="line-3635">  @Override</span>
-<span class="source-line-no">3636</span><span id="line-3636">  public ReplicateWALEntryResponse replicateToReplica(RpcController controller,</span>
-<span class="source-line-no">3637</span><span id="line-3637">    ReplicateWALEntryRequest request) throws ServiceException {</span>
-<span class="source-line-no">3638</span><span id="line-3638">    throw new ServiceException(new DoNotRetryIOException("Unsupported method on master"));</span>
-<span class="source-line-no">3639</span><span id="line-3639">  }</span>
-<span class="source-line-no">3640</span><span id="line-3640"></span>
-<span class="source-line-no">3641</span><span id="line-3641">  @Override</span>
-<span class="source-line-no">3642</span><span id="line-3642">  public FlushMasterStoreResponse flushMasterStore(RpcController controller,</span>
-<span class="source-line-no">3643</span><span id="line-3643">    FlushMasterStoreRequest request) throws ServiceException {</span>
-<span class="source-line-no">3644</span><span id="line-3644">    rpcPreCheck("flushMasterStore");</span>
-<span class="source-line-no">3645</span><span id="line-3645">    try {</span>
-<span class="source-line-no">3646</span><span id="line-3646">      server.flushMasterStore();</span>
-<span class="source-line-no">3647</span><span id="line-3647">    } catch (IOException ioe) {</span>
-<span class="source-line-no">3648</span><span id="line-3648">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">3649</span><span id="line-3649">    }</span>
-<span class="source-line-no">3650</span><span id="line-3650">    return FlushMasterStoreResponse.newBuilder().build();</span>
-<span class="source-line-no">3651</span><span id="line-3651">  }</span>
-<span class="source-line-no">3652</span><span id="line-3652"></span>
-<span class="source-line-no">3653</span><span id="line-3653">  @Override</span>
-<span class="source-line-no">3654</span><span id="line-3654">  public FlushTableResponse flushTable(RpcController controller, FlushTableRequest req)</span>
-<span class="source-line-no">3655</span><span id="line-3655">    throws ServiceException {</span>
-<span class="source-line-no">3656</span><span id="line-3656">    TableName tableName = ProtobufUtil.toTableName(req.getTableName());</span>
-<span class="source-line-no">3657</span><span id="line-3657">    List&lt;byte[]&gt; columnFamilies = req.getColumnFamilyCount() &gt; 0</span>
-<span class="source-line-no">3658</span><span id="line-3658">      ? req.getColumnFamilyList().stream().filter(cf -&gt; !cf.isEmpty()).map(ByteString::toByteArray)</span>
-<span class="source-line-no">3659</span><span id="line-3659">        .collect(Collectors.toList())</span>
-<span class="source-line-no">3660</span><span id="line-3660">      : null;</span>
-<span class="source-line-no">3661</span><span id="line-3661">    try {</span>
-<span class="source-line-no">3662</span><span id="line-3662">      long procId =</span>
-<span class="source-line-no">3663</span><span id="line-3663">        server.flushTable(tableName, columnFamilies, req.getNonceGroup(), req.getNonce());</span>
-<span class="source-line-no">3664</span><span id="line-3664">      return FlushTableResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">3665</span><span id="line-3665">    } catch (IOException ioe) {</span>
-<span class="source-line-no">3666</span><span id="line-3666">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">3667</span><span id="line-3667">    }</span>
-<span class="source-line-no">3668</span><span id="line-3668">  }</span>
-<span class="source-line-no">3669</span><span id="line-3669"></span>
-<span class="source-line-no">3670</span><span id="line-3670">  @Override</span>
-<span class="source-line-no">3671</span><span id="line-3671">  public RollAllWALWritersResponse rollAllWALWriters(RpcController rpcController,</span>
-<span class="source-line-no">3672</span><span id="line-3672">    RollAllWALWritersRequest request) throws ServiceException {</span>
-<span class="source-line-no">3673</span><span id="line-3673">    try {</span>
-<span class="source-line-no">3674</span><span id="line-3674">      long procId = server.rollAllWALWriters(request.getNonceGroup(), request.getNonce());</span>
-<span class="source-line-no">3675</span><span id="line-3675">      return RollAllWALWritersResponse.newBuilder().setProcId(procId).build();</span>
-<span class="source-line-no">3676</span><span id="line-3676">    } catch (IOException ioe) {</span>
-<span class="source-line-no">3677</span><span id="line-3677">      throw new ServiceException(ioe);</span>
-<span class="source-line-no">3678</span><span id="line-3678">    }</span>
-<span class="source-line-no">3679</span><span id="line-3679">  }</span>
-<span class="source-line-no">3680</span><span id="line-3680">}</span>
+<span class="source-line-no">079</span><span id="line-79">import org.apache.hadoop.hbase.master.procedure.RestoreBackupSystemTableProcedure;</span>
+<span class="source-line-no">080</span><span id="line-80">import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;</span>
+<span class="source-line-no">081</span><span id="line-81">import org.apache.hadoop.hbase.master.replication.AbstractPeerNoLockProcedure;</span>
+<span class="source-line-no">082</span><span id="line-82">import org.apache.hadoop.hbase.mob.MobUtils;</span>
+<span class="source-line-no">083</span><span id="line-83">import org.apache.hadoop.hbase.namequeues.BalancerDecisionDetails;</span>
+<span class="source-line-no">084</span><span id="line-84">import org.apache.hadoop.hbase.namequeues.BalancerRejectionDetails;</span>
+<span class="source-line-no">085</span><span id="line-85">import org.apache.hadoop.hbase.namequeues.NamedQueueRecorder;</span>
+<span class="source-line-no">086</span><span id="line-86">import org.apache.hadoop.hbase.namequeues.request.NamedQueueGetRequest;</span>
+<span class="source-line-no">087</span><span id="line-87">import org.apache.hadoop.hbase.namequeues.response.NamedQueueGetResponse;</span>
+<span class="source-line-no">088</span><span id="line-88">import org.apache.hadoop.hbase.net.Address;</span>
+<span class="source-line-no">089</span><span id="line-89">import org.apache.hadoop.hbase.procedure.MasterProcedureManager;</span>
+<span class="source-line-no">090</span><span id="line-90">import org.apache.hadoop.hbase.procedure2.LockType;</span>
+<span class="source-line-no">091</span><span id="line-91">import org.apache.hadoop.hbase.procedure2.LockedResource;</span>
+<span class="source-line-no">092</span><span id="line-92">import org.apache.hadoop.hbase.procedure2.Procedure;</span>
+<span class="source-line-no">093</span><span id="line-93">import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;</span>
+<span class="source-line-no">094</span><span id="line-94">import org.apache.hadoop.hbase.procedure2.ProcedureUtil;</span>
+<span class="source-line-no">095</span><span id="line-95">import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;</span>
+<span class="source-line-no">096</span><span id="line-96">import org.apache.hadoop.hbase.quotas.MasterQuotaManager;</span>
+<span class="source-line-no">097</span><span id="line-97">import org.apache.hadoop.hbase.quotas.QuotaObserverChore;</span>
+<span class="source-line-no">098</span><span id="line-98">import org.apache.hadoop.hbase.quotas.QuotaUtil;</span>
+<span class="source-line-no">099</span><span id="line-99">import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;</span>
+<span class="source-line-no">100</span><span id="line-100">import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;</span>
+<span class="source-line-no">101</span><span id="line-101">import org.apache.hadoop.hbase.replication.ReplicationException;</span>
+<span class="source-line-no">102</span><span id="line-102">import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;</span>
+<span class="source-line-no">103</span><span id="line-103">import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;</span>
+<span class="source-line-no">104</span><span id="line-104">import org.apache.hadoop.hbase.rsgroup.RSGroupInfo;</span>
+<span class="source-line-no">105</span><span id="line-105">import org.apache.hadoop.hbase.rsgroup.RSGroupUtil;</span>
+<span class="source-line-no">106</span><span id="line-106">import org.apache.hadoop.hbase.security.Superusers;</span>
+<span class="source-line-no">107</span><span id="line-107">import org.apache.hadoop.hbase.security.User;</span>
+<span class="source-line-no">108</span><span id="line-108">import org.apache.hadoop.hbase.security.access.AccessChecker;</span>
+<span class="source-line-no">109</span><span id="line-109">import org.apache.hadoop.hbase.security.access.AccessChecker.InputUser;</span>
+<span class="source-line-no">110</span><span id="line-110">import org.apache.hadoop.hbase.security.access.AccessController;</span>
+<span class="source-line-no">111</span><span id="line-111">import org.apache.hadoop.hbase.security.access.Permission;</span>
+<span class="source-line-no">112</span><span id="line-112">import org.apache.hadoop.hbase.security.access.Permission.Action;</span>
+<span class="source-line-no">113</span><span id="line-113">import org.apache.hadoop.hbase.security.access.PermissionStorage;</span>
+<span class="source-line-no">114</span><span id="line-114">import org.apache.hadoop.hbase.security.access.ShadedAccessControlUtil;</span>
+<span class="source-line-no">115</span><span id="line-115">import org.apache.hadoop.hbase.security.access.UserPermission;</span>
+<span class="source-line-no">116</span><span id="line-116">import org.apache.hadoop.hbase.security.visibility.VisibilityController;</span>
+<span class="source-line-no">117</span><span id="line-117">import org.apache.hadoop.hbase.snapshot.ClientSnapshotDescriptionUtils;</span>
+<span class="source-line-no">118</span><span id="line-118">import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;</span>
+<span class="source-line-no">119</span><span id="line-119">import org.apache.hadoop.hbase.util.Bytes;</span>
+<span class="source-line-no">120</span><span id="line-120">import org.apache.hadoop.hbase.util.DNS;</span>
+<span class="source-line-no">121</span><span id="line-121">import org.apache.hadoop.hbase.util.DNS.ServerType;</span>
+<span class="source-line-no">122</span><span id="line-122">import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;</span>
+<span class="source-line-no">123</span><span id="line-123">import org.apache.hadoop.hbase.util.ForeignExceptionUtil;</span>
+<span class="source-line-no">124</span><span id="line-124">import org.apache.hadoop.hbase.util.Pair;</span>
+<span class="source-line-no">125</span><span id="line-125">import org.apache.hadoop.hbase.zookeeper.ZKWatcher;</span>
+<span class="source-line-no">126</span><span id="line-126">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">127</span><span id="line-127">import org.slf4j.Logger;</span>
+<span class="source-line-no">128</span><span id="line-128">import org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">129</span><span id="line-129"></span>
+<span class="source-line-no">130</span><span id="line-130">import org.apache.hbase.thirdparty.com.google.common.collect.Sets;</span>
+<span class="source-line-no">131</span><span id="line-131">import org.apache.hbase.thirdparty.com.google.protobuf.ByteString;</span>
+<span class="source-line-no">132</span><span id="line-132">import org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor;</span>
+<span class="source-line-no">133</span><span id="line-133">import org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.ServiceDescriptor;</span>
+<span class="source-line-no">134</span><span id="line-134">import org.apache.hbase.thirdparty.com.google.protobuf.Message;</span>
+<span class="source-line-no">135</span><span id="line-135">import org.apache.hbase.thirdparty.com.google.protobuf.RpcController;</span>
+<span class="source-line-no">136</span><span id="line-136">import org.apache.hbase.thirdparty.com.google.protobuf.Service;</span>
+<span class="source-line-no">137</span><span id="line-137">import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException;</span>
+<span class="source-line-no">138</span><span id="line-138">import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;</span>
+<span class="source-line-no">139</span><span id="line-139"></span>
+<span class="source-line-no">140</span><span id="line-140">import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;</span>
+<span class="source-line-no">141</span><span id="line-141">import org.apache.hadoop.hbase.shaded.protobuf.ResponseConverter;</span>
+<span class="source-line-no">142</span><span id="line-142">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos;</span>
+<span class="source-line-no">143</span><span id="line-143">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.AccessControlService;</span>
+<span class="source-line-no">144</span><span id="line-144">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.GetUserPermissionsRequest;</span>
+<span class="source-line-no">145</span><span id="line-145">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.GetUserPermissionsResponse;</span>
+<span class="source-line-no">146</span><span id="line-146">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.GrantRequest;</span>
+<span class="source-line-no">147</span><span id="line-147">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.GrantResponse;</span>
+<span class="source-line-no">148</span><span id="line-148">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.HasUserPermissionsRequest;</span>
+<span class="source-line-no">149</span><span id="line-149">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.HasUserPermissionsResponse;</span>
+<span class="source-line-no">150</span><span id="line-150">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.Permission.Type;</span>
+<span class="source-line-no">151</span><span id="line-151">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.RevokeRequest;</span>
+<span class="source-line-no">152</span><span id="line-152">import org.apache.hadoop.hbase.shaded.protobuf.generated.AccessControlProtos.RevokeResponse;</span>
+<span class="source-line-no">153</span><span id="line-153">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService;</span>
+<span class="source-line-no">154</span><span id="line-154">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest;</span>
+<span class="source-line-no">155</span><span id="line-155">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse;</span>
+<span class="source-line-no">156</span><span id="line-156">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearRegionBlockCacheRequest;</span>
+<span class="source-line-no">157</span><span id="line-157">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearRegionBlockCacheResponse;</span>
+<span class="source-line-no">158</span><span id="line-158">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionRequest;</span>
+<span class="source-line-no">159</span><span id="line-159">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionResponse;</span>
+<span class="source-line-no">160</span><span id="line-160">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest;</span>
+<span class="source-line-no">161</span><span id="line-161">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse;</span>
+<span class="source-line-no">162</span><span id="line-162">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactionSwitchRequest;</span>
+<span class="source-line-no">163</span><span id="line-163">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactionSwitchResponse;</span>
+<span class="source-line-no">164</span><span id="line-164">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresRequest;</span>
+<span class="source-line-no">165</span><span id="line-165">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresResponse;</span>
+<span class="source-line-no">166</span><span id="line-166">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionRequest;</span>
+<span class="source-line-no">167</span><span id="line-167">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionResponse;</span>
+<span class="source-line-no">168</span><span id="line-168">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetCachedFilesListRequest;</span>
+<span class="source-line-no">169</span><span id="line-169">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetCachedFilesListResponse;</span>
+<span class="source-line-no">170</span><span id="line-170">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionRequest;</span>
+<span class="source-line-no">171</span><span id="line-171">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionResponse;</span>
+<span class="source-line-no">172</span><span id="line-172">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoRequest;</span>
+<span class="source-line-no">173</span><span id="line-173">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse;</span>
+<span class="source-line-no">174</span><span id="line-174">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadRequest;</span>
+<span class="source-line-no">175</span><span id="line-175">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadResponse;</span>
+<span class="source-line-no">176</span><span id="line-176">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoRequest;</span>
+<span class="source-line-no">177</span><span id="line-177">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoResponse;</span>
+<span class="source-line-no">178</span><span id="line-178">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileRequest;</span>
+<span class="source-line-no">179</span><span id="line-179">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileResponse;</span>
+<span class="source-line-no">180</span><span id="line-180">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest;</span>
+<span class="source-line-no">181</span><span id="line-181">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionResponse;</span>
+<span class="source-line-no">182</span><span id="line-182">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryRequest;</span>
+<span class="source-line-no">183</span><span id="line-183">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryResponse;</span>
+<span class="source-line-no">184</span><span id="line-184">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterRequest;</span>
+<span class="source-line-no">185</span><span id="line-185">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterResponse;</span>
+<span class="source-line-no">186</span><span id="line-186">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerRequest;</span>
+<span class="source-line-no">187</span><span id="line-187">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerResponse;</span>
+<span class="source-line-no">188</span><span id="line-188">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest;</span>
+<span class="source-line-no">189</span><span id="line-189">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesResponse;</span>
+<span class="source-line-no">190</span><span id="line-190">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionRequest;</span>
+<span class="source-line-no">191</span><span id="line-191">import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionResponse;</span>
+<span class="source-line-no">192</span><span id="line-192">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos;</span>
+<span class="source-line-no">193</span><span id="line-193">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos;</span>
+<span class="source-line-no">194</span><span id="line-194">import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds;</span>
+<span class="source-line-no">195</span><span id="line-195">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;</span>
+<span class="source-line-no">196</span><span id="line-196">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.NameStringPair;</span>
+<span class="source-line-no">197</span><span id="line-197">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ProcedureDescription;</span>
+<span class="source-line-no">198</span><span id="line-198">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier;</span>
+<span class="source-line-no">199</span><span id="line-199">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;</span>
+<span class="source-line-no">200</span><span id="line-200">import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.VersionInfo;</span>
+<span class="source-line-no">201</span><span id="line-201">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockHeartbeatRequest;</span>
+<span class="source-line-no">202</span><span id="line-202">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockHeartbeatResponse;</span>
+<span class="source-line-no">203</span><span id="line-203">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockRequest;</span>
+<span class="source-line-no">204</span><span id="line-204">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockResponse;</span>
+<span class="source-line-no">205</span><span id="line-205">import org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService;</span>
+<span class="source-line-no">206</span><span id="line-206">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos;</span>
+<span class="source-line-no">207</span><span id="line-207">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureRequest;</span>
+<span class="source-line-no">208</span><span id="line-208">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureResponse;</span>
+<span class="source-line-no">209</span><span id="line-209">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnRequest;</span>
+<span class="source-line-no">210</span><span id="line-210">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnResponse;</span>
+<span class="source-line-no">211</span><span id="line-211">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionRequest;</span>
+<span class="source-line-no">212</span><span id="line-212">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionResponse;</span>
+<span class="source-line-no">213</span><span id="line-213">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ClearDeadServersRequest;</span>
+<span class="source-line-no">214</span><span id="line-214">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ClearDeadServersResponse;</span>
+<span class="source-line-no">215</span><span id="line-215">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceRequest;</span>
+<span class="source-line-no">216</span><span id="line-216">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceResponse;</span>
+<span class="source-line-no">217</span><span id="line-217">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableRequest;</span>
+<span class="source-line-no">218</span><span id="line-218">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableResponse;</span>
+<span class="source-line-no">219</span><span id="line-219">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DecommissionRegionServersRequest;</span>
+<span class="source-line-no">220</span><span id="line-220">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DecommissionRegionServersResponse;</span>
+<span class="source-line-no">221</span><span id="line-221">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnRequest;</span>
+<span class="source-line-no">222</span><span id="line-222">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnResponse;</span>
+<span class="source-line-no">223</span><span id="line-223">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceRequest;</span>
+<span class="source-line-no">224</span><span id="line-224">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceResponse;</span>
+<span class="source-line-no">225</span><span id="line-225">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotRequest;</span>
+<span class="source-line-no">226</span><span id="line-226">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotResponse;</span>
+<span class="source-line-no">227</span><span id="line-227">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableRequest;</span>
+<span class="source-line-no">228</span><span id="line-228">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableResponse;</span>
+<span class="source-line-no">229</span><span id="line-229">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableRequest;</span>
+<span class="source-line-no">230</span><span id="line-230">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableResponse;</span>
+<span class="source-line-no">231</span><span id="line-231">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorRequest;</span>
+<span class="source-line-no">232</span><span id="line-232">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorResponse;</span>
+<span class="source-line-no">233</span><span id="line-233">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableRequest;</span>
+<span class="source-line-no">234</span><span id="line-234">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableResponse;</span>
+<span class="source-line-no">235</span><span id="line-235">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureRequest;</span>
+<span class="source-line-no">236</span><span id="line-236">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureResponse;</span>
+<span class="source-line-no">237</span><span id="line-237">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FixMetaRequest;</span>
+<span class="source-line-no">238</span><span id="line-238">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FixMetaResponse;</span>
+<span class="source-line-no">239</span><span id="line-239">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FlushMasterStoreRequest;</span>
+<span class="source-line-no">240</span><span id="line-240">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FlushMasterStoreResponse;</span>
+<span class="source-line-no">241</span><span id="line-241">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FlushTableRequest;</span>
+<span class="source-line-no">242</span><span id="line-242">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.FlushTableResponse;</span>
+<span class="source-line-no">243</span><span id="line-243">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusRequest;</span>
+<span class="source-line-no">244</span><span id="line-244">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusResponse;</span>
+<span class="source-line-no">245</span><span id="line-245">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsRequest;</span>
+<span class="source-line-no">246</span><span id="line-246">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsResponse;</span>
+<span class="source-line-no">247</span><span id="line-247">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetLocksRequest;</span>
+<span class="source-line-no">248</span><span id="line-248">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetLocksResponse;</span>
+<span class="source-line-no">249</span><span id="line-249">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorRequest;</span>
+<span class="source-line-no">250</span><span id="line-250">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorResponse;</span>
+<span class="source-line-no">251</span><span id="line-251">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultRequest;</span>
+<span class="source-line-no">252</span><span id="line-252">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultResponse;</span>
+<span class="source-line-no">253</span><span id="line-253">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProceduresRequest;</span>
+<span class="source-line-no">254</span><span id="line-254">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProceduresResponse;</span>
+<span class="source-line-no">255</span><span id="line-255">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusRequest;</span>
+<span class="source-line-no">256</span><span id="line-256">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusResponse;</span>
+<span class="source-line-no">257</span><span id="line-257">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsRequest;</span>
+<span class="source-line-no">258</span><span id="line-258">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsResponse;</span>
+<span class="source-line-no">259</span><span id="line-259">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesRequest;</span>
+<span class="source-line-no">260</span><span id="line-260">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesResponse;</span>
+<span class="source-line-no">261</span><span id="line-261">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableStateRequest;</span>
+<span class="source-line-no">262</span><span id="line-262">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableStateResponse;</span>
+<span class="source-line-no">263</span><span id="line-263">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.HbckService;</span>
+<span class="source-line-no">264</span><span id="line-264">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledRequest;</span>
+<span class="source-line-no">265</span><span id="line-265">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledResponse;</span>
+<span class="source-line-no">266</span><span id="line-266">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledRequest;</span>
+<span class="source-line-no">267</span><span id="line-267">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledResponse;</span>
+<span class="source-line-no">268</span><span id="line-268">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledRequest;</span>
+<span class="source-line-no">269</span><span id="line-269">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledResponse;</span>
+<span class="source-line-no">270</span><span id="line-270">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeRequest;</span>
+<span class="source-line-no">271</span><span id="line-271">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeResponse;</span>
+<span class="source-line-no">272</span><span id="line-272">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsMasterRunningRequest;</span>
+<span class="source-line-no">273</span><span id="line-273">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsMasterRunningResponse;</span>
+<span class="source-line-no">274</span><span id="line-274">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledRequest;</span>
+<span class="source-line-no">275</span><span id="line-275">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledResponse;</span>
+<span class="source-line-no">276</span><span id="line-276">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneRequest;</span>
+<span class="source-line-no">277</span><span id="line-277">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneResponse;</span>
+<span class="source-line-no">278</span><span id="line-278">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotCleanupEnabledRequest;</span>
+<span class="source-line-no">279</span><span id="line-279">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotCleanupEnabledResponse;</span>
+<span class="source-line-no">280</span><span id="line-280">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneRequest;</span>
+<span class="source-line-no">281</span><span id="line-281">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneResponse;</span>
+<span class="source-line-no">282</span><span id="line-282">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledRequest;</span>
+<span class="source-line-no">283</span><span id="line-283">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledResponse;</span>
+<span class="source-line-no">284</span><span id="line-284">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDecommissionedRegionServersRequest;</span>
+<span class="source-line-no">285</span><span id="line-285">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListDecommissionedRegionServersResponse;</span>
+<span class="source-line-no">286</span><span id="line-286">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsRequest;</span>
+<span class="source-line-no">287</span><span id="line-287">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsResponse;</span>
+<span class="source-line-no">288</span><span id="line-288">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespacesRequest;</span>
+<span class="source-line-no">289</span><span id="line-289">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespacesResponse;</span>
+<span class="source-line-no">290</span><span id="line-290">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceRequest;</span>
+<span class="source-line-no">291</span><span id="line-291">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceResponse;</span>
+<span class="source-line-no">292</span><span id="line-292">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByStateRequest;</span>
+<span class="source-line-no">293</span><span id="line-293">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByStateResponse;</span>
+<span class="source-line-no">294</span><span id="line-294">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByNamespaceRequest;</span>
+<span class="source-line-no">295</span><span id="line-295">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByNamespaceResponse;</span>
+<span class="source-line-no">296</span><span id="line-296">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByStateRequest;</span>
+<span class="source-line-no">297</span><span id="line-297">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByStateResponse;</span>
+<span class="source-line-no">298</span><span id="line-298">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampForRegionRequest;</span>
+<span class="source-line-no">299</span><span id="line-299">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampRequest;</span>
+<span class="source-line-no">300</span><span id="line-300">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampResponse;</span>
+<span class="source-line-no">301</span><span id="line-301">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService;</span>
+<span class="source-line-no">302</span><span id="line-302">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsRequest;</span>
+<span class="source-line-no">303</span><span id="line-303">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsResponse;</span>
+<span class="source-line-no">304</span><span id="line-304">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnRequest;</span>
+<span class="source-line-no">305</span><span id="line-305">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnResponse;</span>
+<span class="source-line-no">306</span><span id="line-306">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnStoreFileTrackerRequest;</span>
+<span class="source-line-no">307</span><span id="line-307">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnStoreFileTrackerResponse;</span>
+<span class="source-line-no">308</span><span id="line-308">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceRequest;</span>
+<span class="source-line-no">309</span><span id="line-309">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceResponse;</span>
+<span class="source-line-no">310</span><span id="line-310">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableRequest;</span>
+<span class="source-line-no">311</span><span id="line-311">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableResponse;</span>
+<span class="source-line-no">312</span><span id="line-312">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableStoreFileTrackerRequest;</span>
+<span class="source-line-no">313</span><span id="line-313">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableStoreFileTrackerResponse;</span>
+<span class="source-line-no">314</span><span id="line-314">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionRequest;</span>
+<span class="source-line-no">315</span><span id="line-315">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionResponse;</span>
+<span class="source-line-no">316</span><span id="line-316">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeRequest;</span>
+<span class="source-line-no">317</span><span id="line-317">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeResponse;</span>
+<span class="source-line-no">318</span><span id="line-318">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionRequest;</span>
+<span class="source-line-no">319</span><span id="line-319">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionResponse;</span>
+<span class="source-line-no">320</span><span id="line-320">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RecommissionRegionServerRequest;</span>
+<span class="source-line-no">321</span><span id="line-321">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RecommissionRegionServerResponse;</span>
+<span class="source-line-no">322</span><span id="line-322">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RegionSpecifierAndState;</span>
+<span class="source-line-no">323</span><span id="line-323">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotRequest;</span>
+<span class="source-line-no">324</span><span id="line-324">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotResponse;</span>
+<span class="source-line-no">325</span><span id="line-325">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RollAllWALWritersRequest;</span>
+<span class="source-line-no">326</span><span id="line-326">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RollAllWALWritersResponse;</span>
+<span class="source-line-no">327</span><span id="line-327">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanRequest;</span>
+<span class="source-line-no">328</span><span id="line-328">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanResponse;</span>
+<span class="source-line-no">329</span><span id="line-329">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreRequest;</span>
+<span class="source-line-no">330</span><span id="line-330">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreResponse;</span>
+<span class="source-line-no">331</span><span id="line-331">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunHbckChoreRequest;</span>
+<span class="source-line-no">332</span><span id="line-332">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunHbckChoreResponse;</span>
+<span class="source-line-no">333</span><span id="line-333">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesRequest;</span>
+<span class="source-line-no">334</span><span id="line-334">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesResponse;</span>
+<span class="source-line-no">335</span><span id="line-335">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningRequest;</span>
+<span class="source-line-no">336</span><span id="line-336">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningResponse;</span>
+<span class="source-line-no">337</span><span id="line-337">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningRequest;</span>
+<span class="source-line-no">338</span><span id="line-338">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningResponse;</span>
+<span class="source-line-no">339</span><span id="line-339">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningRequest;</span>
+<span class="source-line-no">340</span><span id="line-340">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningResponse;</span>
+<span class="source-line-no">341</span><span id="line-341">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaRequest;</span>
+<span class="source-line-no">342</span><span id="line-342">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaResponse;</span>
+<span class="source-line-no">343</span><span id="line-343">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetRegionStateInMetaRequest;</span>
+<span class="source-line-no">344</span><span id="line-344">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetRegionStateInMetaResponse;</span>
+<span class="source-line-no">345</span><span id="line-345">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSnapshotCleanupRequest;</span>
+<span class="source-line-no">346</span><span id="line-346">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSnapshotCleanupResponse;</span>
+<span class="source-line-no">347</span><span id="line-347">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledRequest;</span>
+<span class="source-line-no">348</span><span id="line-348">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledResponse;</span>
+<span class="source-line-no">349</span><span id="line-349">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetTableStateInMetaRequest;</span>
+<span class="source-line-no">350</span><span id="line-350">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownRequest;</span>
+<span class="source-line-no">351</span><span id="line-351">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownResponse;</span>
+<span class="source-line-no">352</span><span id="line-352">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotRequest;</span>
+<span class="source-line-no">353</span><span id="line-353">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotResponse;</span>
+<span class="source-line-no">354</span><span id="line-354">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionRequest;</span>
+<span class="source-line-no">355</span><span id="line-355">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionResponse;</span>
+<span class="source-line-no">356</span><span id="line-356">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterRequest;</span>
+<span class="source-line-no">357</span><span id="line-357">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterResponse;</span>
+<span class="source-line-no">358</span><span id="line-358">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SwitchExceedThrottleQuotaRequest;</span>
+<span class="source-line-no">359</span><span id="line-359">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SwitchExceedThrottleQuotaResponse;</span>
+<span class="source-line-no">360</span><span id="line-360">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SwitchRpcThrottleRequest;</span>
+<span class="source-line-no">361</span><span id="line-361">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SwitchRpcThrottleResponse;</span>
+<span class="source-line-no">362</span><span id="line-362">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableRequest;</span>
+<span class="source-line-no">363</span><span id="line-363">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableResponse;</span>
+<span class="source-line-no">364</span><span id="line-364">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionRequest;</span>
+<span class="source-line-no">365</span><span id="line-365">import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionResponse;</span>
+<span class="source-line-no">366</span><span id="line-366">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetQuotaStatesRequest;</span>
+<span class="source-line-no">367</span><span id="line-367">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetQuotaStatesResponse;</span>
+<span class="source-line-no">368</span><span id="line-368">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetQuotaStatesResponse.NamespaceQuotaSnapshot;</span>
+<span class="source-line-no">369</span><span id="line-369">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetQuotaStatesResponse.TableQuotaSnapshot;</span>
+<span class="source-line-no">370</span><span id="line-370">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaRegionSizesRequest;</span>
+<span class="source-line-no">371</span><span id="line-371">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaRegionSizesResponse;</span>
+<span class="source-line-no">372</span><span id="line-372">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaRegionSizesResponse.RegionSizes;</span>
+<span class="source-line-no">373</span><span id="line-373">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsRequest;</span>
+<span class="source-line-no">374</span><span id="line-374">import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsResponse;</span>
+<span class="source-line-no">375</span><span id="line-375">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.AddRSGroupRequest;</span>
+<span class="source-line-no">376</span><span id="line-376">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.AddRSGroupResponse;</span>
+<span class="source-line-no">377</span><span id="line-377">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.BalanceRSGroupRequest;</span>
+<span class="source-line-no">378</span><span id="line-378">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.BalanceRSGroupResponse;</span>
+<span class="source-line-no">379</span><span id="line-379">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetConfiguredNamespacesAndTablesInRSGroupRequest;</span>
+<span class="source-line-no">380</span><span id="line-380">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetConfiguredNamespacesAndTablesInRSGroupResponse;</span>
+<span class="source-line-no">381</span><span id="line-381">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoOfServerRequest;</span>
+<span class="source-line-no">382</span><span id="line-382">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoOfServerResponse;</span>
+<span class="source-line-no">383</span><span id="line-383">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoOfTableRequest;</span>
+<span class="source-line-no">384</span><span id="line-384">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoOfTableResponse;</span>
+<span class="source-line-no">385</span><span id="line-385">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoRequest;</span>
+<span class="source-line-no">386</span><span id="line-386">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.GetRSGroupInfoResponse;</span>
+<span class="source-line-no">387</span><span id="line-387">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.ListRSGroupInfosRequest;</span>
+<span class="source-line-no">388</span><span id="line-388">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.ListRSGroupInfosResponse;</span>
+<span class="source-line-no">389</span><span id="line-389">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.ListTablesInRSGroupRequest;</span>
+<span class="source-line-no">390</span><span id="line-390">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.ListTablesInRSGroupResponse;</span>
+<span class="source-line-no">391</span><span id="line-391">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.MoveServersRequest;</span>
+<span class="source-line-no">392</span><span id="line-392">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.MoveServersResponse;</span>
+<span class="source-line-no">393</span><span id="line-393">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RemoveRSGroupRequest;</span>
+<span class="source-line-no">394</span><span id="line-394">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RemoveRSGroupResponse;</span>
+<span class="source-line-no">395</span><span id="line-395">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RemoveServersRequest;</span>
+<span class="source-line-no">396</span><span id="line-396">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RemoveServersResponse;</span>
+<span class="source-line-no">397</span><span id="line-397">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RenameRSGroupRequest;</span>
+<span class="source-line-no">398</span><span id="line-398">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.RenameRSGroupResponse;</span>
+<span class="source-line-no">399</span><span id="line-399">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.UpdateRSGroupConfigRequest;</span>
+<span class="source-line-no">400</span><span id="line-400">import org.apache.hadoop.hbase.shaded.protobuf.generated.RSGroupAdminProtos.UpdateRSGroupConfigResponse;</span>
+<span class="source-line-no">401</span><span id="line-401">import org.apache.hadoop.hbase.shaded.protobuf.generated.RecentLogs;</span>
+<span class="source-line-no">402</span><span id="line-402">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos;</span>
+<span class="source-line-no">403</span><span id="line-403">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.FileArchiveNotificationRequest;</span>
+<span class="source-line-no">404</span><span id="line-404">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.FileArchiveNotificationResponse;</span>
+<span class="source-line-no">405</span><span id="line-405">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLastFlushedSequenceIdRequest;</span>
+<span class="source-line-no">406</span><span id="line-406">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLastFlushedSequenceIdResponse;</span>
+<span class="source-line-no">407</span><span id="line-407">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLiveRegionServersRequest;</span>
+<span class="source-line-no">408</span><span id="line-408">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLiveRegionServersResponse;</span>
+<span class="source-line-no">409</span><span id="line-409">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerReportRequest;</span>
+<span class="source-line-no">410</span><span id="line-410">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerReportResponse;</span>
+<span class="source-line-no">411</span><span id="line-411">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupRequest;</span>
+<span class="source-line-no">412</span><span id="line-412">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse;</span>
+<span class="source-line-no">413</span><span id="line-413">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService;</span>
+<span class="source-line-no">414</span><span id="line-414">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUse;</span>
+<span class="source-line-no">415</span><span id="line-415">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUseReportRequest;</span>
+<span class="source-line-no">416</span><span id="line-416">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionSpaceUseReportResponse;</span>
+<span class="source-line-no">417</span><span id="line-417">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RemoteProcedureResult;</span>
+<span class="source-line-no">418</span><span id="line-418">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneRequest;</span>
+<span class="source-line-no">419</span><span id="line-419">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneResponse;</span>
+<span class="source-line-no">420</span><span id="line-420">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRSFatalErrorRequest;</span>
+<span class="source-line-no">421</span><span id="line-421">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRSFatalErrorResponse;</span>
+<span class="source-line-no">422</span><span id="line-422">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest;</span>
+<span class="source-line-no">423</span><span id="line-423">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse;</span>
+<span class="source-line-no">424</span><span id="line-424">import org.apache.hadoop.hbase.shaded.protobuf.generated.RegistryProtos.ClientMetaService;</span>
+<span class="source-line-no">425</span><span id="line-425">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerRequest;</span>
+<span class="source-line-no">426</span><span id="line-426">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerResponse;</span>
+<span class="source-line-no">427</span><span id="line-427">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerRequest;</span>
+<span class="source-line-no">428</span><span id="line-428">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.DisableReplicationPeerResponse;</span>
+<span class="source-line-no">429</span><span id="line-429">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerRequest;</span>
+<span class="source-line-no">430</span><span id="line-430">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerResponse;</span>
+<span class="source-line-no">431</span><span id="line-431">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigRequest;</span>
+<span class="source-line-no">432</span><span id="line-432">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerConfigResponse;</span>
+<span class="source-line-no">433</span><span id="line-433">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerModificationProceduresRequest;</span>
+<span class="source-line-no">434</span><span id="line-434">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerModificationProceduresResponse;</span>
+<span class="source-line-no">435</span><span id="line-435">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerStateRequest;</span>
+<span class="source-line-no">436</span><span id="line-436">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.GetReplicationPeerStateResponse;</span>
+<span class="source-line-no">437</span><span id="line-437">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.IsReplicationPeerModificationEnabledRequest;</span>
+<span class="source-line-no">438</span><span id="line-438">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.IsReplicationPeerModificationEnabledResponse;</span>
+<span class="source-line-no">439</span><span id="line-439">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersRequest;</span>
+<span class="source-line-no">440</span><span id="line-440">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ListReplicationPeersResponse;</span>
+<span class="source-line-no">441</span><span id="line-441">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerRequest;</span>
+<span class="source-line-no">442</span><span id="line-442">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerResponse;</span>
+<span class="source-line-no">443</span><span id="line-443">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationPeerModificationSwitchRequest;</span>
+<span class="source-line-no">444</span><span id="line-444">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationPeerModificationSwitchResponse;</span>
+<span class="source-line-no">445</span><span id="line-445">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.ReplicationState;</span>
+<span class="source-line-no">446</span><span id="line-446">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.TransitReplicationPeerSyncReplicationStateRequest;</span>
+<span class="source-line-no">447</span><span id="line-447">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.TransitReplicationPeerSyncReplicationStateResponse;</span>
+<span class="source-line-no">448</span><span id="line-448">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigRequest;</span>
+<span class="source-line-no">449</span><span id="line-449">import org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.UpdateReplicationPeerConfigResponse;</span>
+<span class="source-line-no">450</span><span id="line-450">import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;</span>
+<span class="source-line-no">451</span><span id="line-451">import org.apache.hadoop.hbase.shaded.protobuf.generated.VisibilityLabelsProtos.VisibilityLabelsService;</span>
+<span class="source-line-no">452</span><span id="line-452"></span>
+<span class="source-line-no">453</span><span id="line-453">/**</span>
+<span class="source-line-no">454</span><span id="line-454"> * Implements the master RPC services.</span>
+<span class="source-line-no">455</span><span id="line-455"> */</span>
+<span class="source-line-no">456</span><span id="line-456">@InterfaceAudience.Private</span>
+<span class="source-line-no">457</span><span id="line-457">public class MasterRpcServices extends HBaseRpcServicesBase&lt;HMaster&gt;</span>
+<span class="source-line-no">458</span><span id="line-458">  implements MasterService.BlockingInterface, RegionServerStatusService.BlockingInterface,</span>
+<span class="source-line-no">459</span><span id="line-459">  LockService.BlockingInterface, HbckService.BlockingInterface {</span>
+<span class="source-line-no">460</span><span id="line-460"></span>
+<span class="source-line-no">461</span><span id="line-461">  private static final Logger LOG = LoggerFactory.getLogger(MasterRpcServices.class.getName());</span>
+<span class="source-line-no">462</span><span id="line-462">  private static final Logger AUDITLOG =</span>
+<span class="source-line-no">463</span><span id="line-463">    LoggerFactory.getLogger("SecurityLogger." + MasterRpcServices.class.getName());</span>
+<span class="source-line-no">464</span><span id="line-464"></span>
+<span class="source-line-no">465</span><span id="line-465">  /** RPC scheduler to use for the master. */</span>
+<span class="source-line-no">466</span><span id="line-466">  public static final String MASTER_RPC_SCHEDULER_FACTORY_CLASS =</span>
+<span class="source-line-no">467</span><span id="line-467">    "hbase.master.rpc.scheduler.factory.class";</span>
+<span class="source-line-no">468</span><span id="line-468"></span>
+<span class="source-line-no">469</span><span id="line-469">  /**</span>
+<span class="source-line-no">470</span><span id="line-470">   * @return Subset of configuration to pass initializing regionservers: e.g. the filesystem to use</span>
+<span class="source-line-no">471</span><span id="line-471">   *         and root directory to use.</span>
+<span class="source-line-no">472</span><span id="line-472">   */</span>
+<span class="source-line-no">473</span><span id="line-473">  private RegionServerStartupResponse.Builder createConfigurationSubset() {</span>
+<span class="source-line-no">474</span><span id="line-474">    RegionServerStartupResponse.Builder resp =</span>
+<span class="source-line-no">475</span><span id="line-475">      addConfig(RegionServerStartupResponse.newBuilder(), HConstants.HBASE_DIR);</span>
+<span class="source-line-no">476</span><span id="line-476">    resp = addConfig(resp, "fs.defaultFS");</span>
+<span class="source-line-no">477</span><span id="line-477">    return addConfig(resp, "hbase.master.info.port");</span>
+<span class="source-line-no">478</span><span id="line-478">  }</span>
+<span class="source-line-no">479</span><span id="line-479"></span>
+<span class="source-line-no">480</span><span id="line-480">  private RegionServerStartupResponse.Builder</span>
+<span class="source-line-no">481</span><span id="line-481">    addConfig(final RegionServerStartupResponse.Builder resp, final String key) {</span>
+<span class="source-line-no">482</span><span id="line-482">    NameStringPair.Builder entry =</span>
+<span class="source-line-no">483</span><span id="line-483">      NameStringPair.newBuilder().setName(key).setValue(server.getConfiguration().get(key));</span>
+<span class="source-line-no">484</span><span id="line-484">    resp.addMapEntries(entry.build());</span>
+<span class="source-line-no">485</span><span id="line-485">    return resp;</span>
+<span class="source-line-no">486</span><span id="line-486">  }</span>
+<span class="source-line-no">487</span><span id="line-487"></span>
+<span class="source-line-no">488</span><span id="line-488">  public MasterRpcServices(HMaster m) throws IOException {</span>
+<span class="source-line-no">489</span><span id="line-489">    super(m, m.getProcessName());</span>
+<span class="source-line-no">490</span><span id="line-490">  }</span>
+<span class="source-line-no">491</span><span id="line-491"></span>
+<span class="source-line-no">492</span><span id="line-492">  @Override</span>
+<span class="source-line-no">493</span><span id="line-493">  protected boolean defaultReservoirEnabled() {</span>
+<span class="source-line-no">494</span><span id="line-494">    return false;</span>
+<span class="source-line-no">495</span><span id="line-495">  }</span>
+<span class="source-line-no">496</span><span id="line-496"></span>
+<span class="source-line-no">497</span><span id="line-497">  @Override</span>
+<span class="source-line-no">498</span><span id="line-498">  protected ServerType getDNSServerType() {</span>
+<span class="source-line-no">499</span><span id="line-499">    return DNS.ServerType.MASTER;</span>
+<span class="source-line-no">500</span><span id="line-500">  }</span>
+<span class="source-line-no">501</span><span id="line-501"></span>
+<span class="source-line-no">502</span><span id="line-502">  @Override</span>
+<span class="source-line-no">503</span><span id="line-503">  protected String getHostname(Configuration conf, String defaultHostname) {</span>
+<span class="source-line-no">504</span><span id="line-504">    return conf.get("hbase.master.ipc.address", defaultHostname);</span>
+<span class="source-line-no">505</span><span id="line-505">  }</span>
+<span class="source-line-no">506</span><span id="line-506"></span>
+<span class="source-line-no">507</span><span id="line-507">  @Override</span>
+<span class="source-line-no">508</span><span id="line-508">  protected String getPortConfigName() {</span>
+<span class="source-line-no">509</span><span id="line-509">    return HConstants.MASTER_PORT;</span>
+<span class="source-line-no">510</span><span id="line-510">  }</span>
+<span class="source-line-no">511</span><span id="line-511"></span>
+<span class="source-line-no">512</span><span id="line-512">  @Override</span>
+<span class="source-line-no">513</span><span id="line-513">  protected int getDefaultPort() {</span>
+<span class="source-line-no">514</span><span id="line-514">    return HConstants.DEFAULT_MASTER_PORT;</span>
+<span class="source-line-no">515</span><span id="line-515">  }</span>
+<span class="source-line-no">516</span><span id="line-516"></span>
+<span class="source-line-no">517</span><span id="line-517">  @Override</span>
+<span class="source-line-no">518</span><span id="line-518">  protected Class&lt;?&gt; getRpcSchedulerFactoryClass(Configuration conf) {</span>
+<span class="source-line-no">519</span><span id="line-519">    return conf.getClass(MASTER_RPC_SCHEDULER_FACTORY_CLASS, SimpleRpcSchedulerFactory.class);</span>
+<span class="source-line-no">520</span><span id="line-520">  }</span>
+<span class="source-line-no">521</span><span id="line-521"></span>
+<span class="source-line-no">522</span><span id="line-522">  @Override</span>
+<span class="source-line-no">523</span><span id="line-523">  protected PriorityFunction createPriority() {</span>
+<span class="source-line-no">524</span><span id="line-524">    return new MasterAnnotationReadingPriorityFunction(this);</span>
+<span class="source-line-no">525</span><span id="line-525">  }</span>
+<span class="source-line-no">526</span><span id="line-526"></span>
+<span class="source-line-no">527</span><span id="line-527">  /**</span>
+<span class="source-line-no">528</span><span id="line-528">   * Checks for the following pre-checks in order:</span>
+<span class="source-line-no">529</span><span id="line-529">   * &lt;ol&gt;</span>
+<span class="source-line-no">530</span><span id="line-530">   * &lt;li&gt;Master is initialized&lt;/li&gt;</span>
+<span class="source-line-no">531</span><span id="line-531">   * &lt;li&gt;Rpc caller has admin permissions&lt;/li&gt;</span>
+<span class="source-line-no">532</span><span id="line-532">   * &lt;/ol&gt;</span>
+<span class="source-line-no">533</span><span id="line-533">   * @param requestName name of rpc request. Used in reporting failures to provide context.</span>
+<span class="source-line-no">534</span><span id="line-534">   * @throws ServiceException If any of the above listed pre-check fails.</span>
+<span class="source-line-no">535</span><span id="line-535">   */</span>
+<span class="source-line-no">536</span><span id="line-536">  private void rpcPreCheck(String requestName) throws ServiceException {</span>
+<span class="source-line-no">537</span><span id="line-537">    try {</span>
+<span class="source-line-no">538</span><span id="line-538">      server.checkInitialized();</span>
+<span class="source-line-no">539</span><span id="line-539">      requirePermission(requestName, Permission.Action.ADMIN);</span>
+<span class="source-line-no">540</span><span id="line-540">    } catch (IOException ioe) {</span>
+<span class="source-line-no">541</span><span id="line-541">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">542</span><span id="line-542">    }</span>
+<span class="source-line-no">543</span><span id="line-543">  }</span>
+<span class="source-line-no">544</span><span id="line-544"></span>
+<span class="source-line-no">545</span><span id="line-545">  enum BalanceSwitchMode {</span>
+<span class="source-line-no">546</span><span id="line-546">    SYNC,</span>
+<span class="source-line-no">547</span><span id="line-547">    ASYNC</span>
+<span class="source-line-no">548</span><span id="line-548">  }</span>
+<span class="source-line-no">549</span><span id="line-549"></span>
+<span class="source-line-no">550</span><span id="line-550">  /**</span>
+<span class="source-line-no">551</span><span id="line-551">   * Assigns balancer switch according to BalanceSwitchMode</span>
+<span class="source-line-no">552</span><span id="line-552">   * @param b    new balancer switch</span>
+<span class="source-line-no">553</span><span id="line-553">   * @param mode BalanceSwitchMode</span>
+<span class="source-line-no">554</span><span id="line-554">   * @return old balancer switch</span>
+<span class="source-line-no">555</span><span id="line-555">   */</span>
+<span class="source-line-no">556</span><span id="line-556">  boolean switchBalancer(final boolean b, BalanceSwitchMode mode) throws IOException {</span>
+<span class="source-line-no">557</span><span id="line-557">    boolean oldValue = server.loadBalancerStateStore.get();</span>
+<span class="source-line-no">558</span><span id="line-558">    boolean newValue = b;</span>
+<span class="source-line-no">559</span><span id="line-559">    try {</span>
+<span class="source-line-no">560</span><span id="line-560">      if (server.cpHost != null) {</span>
+<span class="source-line-no">561</span><span id="line-561">        server.cpHost.preBalanceSwitch(newValue);</span>
+<span class="source-line-no">562</span><span id="line-562">      }</span>
+<span class="source-line-no">563</span><span id="line-563">      if (mode == BalanceSwitchMode.SYNC) {</span>
+<span class="source-line-no">564</span><span id="line-564">        synchronized (server.getLoadBalancer()) {</span>
+<span class="source-line-no">565</span><span id="line-565">          server.loadBalancerStateStore.set(newValue);</span>
+<span class="source-line-no">566</span><span id="line-566">        }</span>
+<span class="source-line-no">567</span><span id="line-567">      } else {</span>
+<span class="source-line-no">568</span><span id="line-568">        server.loadBalancerStateStore.set(newValue);</span>
+<span class="source-line-no">569</span><span id="line-569">      }</span>
+<span class="source-line-no">570</span><span id="line-570">      LOG.info(server.getClientIdAuditPrefix() + " set balanceSwitch=" + newValue);</span>
+<span class="source-line-no">571</span><span id="line-571">      if (server.cpHost != null) {</span>
+<span class="source-line-no">572</span><span id="line-572">        server.cpHost.postBalanceSwitch(oldValue, newValue);</span>
+<span class="source-line-no">573</span><span id="line-573">      }</span>
+<span class="source-line-no">574</span><span id="line-574">      server.getLoadBalancer().updateBalancerStatus(newValue);</span>
+<span class="source-line-no">575</span><span id="line-575">    } catch (IOException ioe) {</span>
+<span class="source-line-no">576</span><span id="line-576">      LOG.warn("Error flipping balance switch", ioe);</span>
+<span class="source-line-no">577</span><span id="line-577">    }</span>
+<span class="source-line-no">578</span><span id="line-578">    return oldValue;</span>
+<span class="source-line-no">579</span><span id="line-579">  }</span>
+<span class="source-line-no">580</span><span id="line-580"></span>
+<span class="source-line-no">581</span><span id="line-581">  boolean synchronousBalanceSwitch(final boolean b) throws IOException {</span>
+<span class="source-line-no">582</span><span id="line-582">    return switchBalancer(b, BalanceSwitchMode.SYNC);</span>
+<span class="source-line-no">583</span><span id="line-583">  }</span>
+<span class="source-line-no">584</span><span id="line-584"></span>
+<span class="source-line-no">585</span><span id="line-585">  /** Returns list of blocking services and their security info classes that this server supports */</span>
+<span class="source-line-no">586</span><span id="line-586">  @Override</span>
+<span class="source-line-no">587</span><span id="line-587">  protected List&lt;BlockingServiceAndInterface&gt; getServices() {</span>
+<span class="source-line-no">588</span><span id="line-588">    List&lt;BlockingServiceAndInterface&gt; bssi = new ArrayList&lt;&gt;(5);</span>
+<span class="source-line-no">589</span><span id="line-589">    bssi.add(new BlockingServiceAndInterface(MasterService.newReflectiveBlockingService(this),</span>
+<span class="source-line-no">590</span><span id="line-590">      MasterService.BlockingInterface.class));</span>
+<span class="source-line-no">591</span><span id="line-591">    bssi.add(</span>
+<span class="source-line-no">592</span><span id="line-592">      new BlockingServiceAndInterface(RegionServerStatusService.newReflectiveBlockingService(this),</span>
+<span class="source-line-no">593</span><span id="line-593">        RegionServerStatusService.BlockingInterface.class));</span>
+<span class="source-line-no">594</span><span id="line-594">    bssi.add(new BlockingServiceAndInterface(LockService.newReflectiveBlockingService(this),</span>
+<span class="source-line-no">595</span><span id="line-595">      LockService.BlockingInterface.class));</span>
+<span class="source-line-no">596</span><span id="line-596">    bssi.add(new BlockingServiceAndInterface(HbckService.newReflectiveBlockingService(this),</span>
+<span class="source-line-no">597</span><span id="line-597">      HbckService.BlockingInterface.class));</span>
+<span class="source-line-no">598</span><span id="line-598">    bssi.add(new BlockingServiceAndInterface(ClientMetaService.newReflectiveBlockingService(this),</span>
+<span class="source-line-no">599</span><span id="line-599">      ClientMetaService.BlockingInterface.class));</span>
+<span class="source-line-no">600</span><span id="line-600">    bssi.add(new BlockingServiceAndInterface(AdminService.newReflectiveBlockingService(this),</span>
+<span class="source-line-no">601</span><span id="line-601">      AdminService.BlockingInterface.class));</span>
+<span class="source-line-no">602</span><span id="line-602">    return bssi;</span>
+<span class="source-line-no">603</span><span id="line-603">  }</span>
+<span class="source-line-no">604</span><span id="line-604"></span>
+<span class="source-line-no">605</span><span id="line-605">  void start(ZKWatcher zkWatcher) {</span>
+<span class="source-line-no">606</span><span id="line-606">    internalStart(zkWatcher);</span>
+<span class="source-line-no">607</span><span id="line-607">  }</span>
+<span class="source-line-no">608</span><span id="line-608"></span>
+<span class="source-line-no">609</span><span id="line-609">  void stop() {</span>
+<span class="source-line-no">610</span><span id="line-610">    internalStop();</span>
+<span class="source-line-no">611</span><span id="line-611">  }</span>
+<span class="source-line-no">612</span><span id="line-612"></span>
+<span class="source-line-no">613</span><span id="line-613">  @Override</span>
+<span class="source-line-no">614</span><span id="line-614">  // priority for all RegionServerStatusProtos rpc's are set HIGH_QOS in</span>
+<span class="source-line-no">615</span><span id="line-615">  // MasterAnnotationReadingPriorityFunction itself</span>
+<span class="source-line-no">616</span><span id="line-616">  public GetLastFlushedSequenceIdResponse getLastFlushedSequenceId(RpcController controller,</span>
+<span class="source-line-no">617</span><span id="line-617">    GetLastFlushedSequenceIdRequest request) throws ServiceException {</span>
+<span class="source-line-no">618</span><span id="line-618">    try {</span>
+<span class="source-line-no">619</span><span id="line-619">      server.checkServiceStarted();</span>
+<span class="source-line-no">620</span><span id="line-620">    } catch (IOException ioe) {</span>
+<span class="source-line-no">621</span><span id="line-621">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">622</span><span id="line-622">    }</span>
+<span class="source-line-no">623</span><span id="line-623">    byte[] encodedRegionName = request.getRegionName().toByteArray();</span>
+<span class="source-line-no">624</span><span id="line-624">    RegionStoreSequenceIds ids =</span>
+<span class="source-line-no">625</span><span id="line-625">      server.getServerManager().getLastFlushedSequenceId(encodedRegionName);</span>
+<span class="source-line-no">626</span><span id="line-626">    return ResponseConverter.buildGetLastFlushedSequenceIdResponse(ids);</span>
+<span class="source-line-no">627</span><span id="line-627">  }</span>
+<span class="source-line-no">628</span><span id="line-628"></span>
+<span class="source-line-no">629</span><span id="line-629">  @Override</span>
+<span class="source-line-no">630</span><span id="line-630">  public RegionServerReportResponse regionServerReport(RpcController controller,</span>
+<span class="source-line-no">631</span><span id="line-631">    RegionServerReportRequest request) throws ServiceException {</span>
+<span class="source-line-no">632</span><span id="line-632">    try {</span>
+<span class="source-line-no">633</span><span id="line-633">      server.checkServiceStarted();</span>
+<span class="source-line-no">634</span><span id="line-634">      int versionNumber = 0;</span>
+<span class="source-line-no">635</span><span id="line-635">      String version = "0.0.0";</span>
+<span class="source-line-no">636</span><span id="line-636">      VersionInfo versionInfo = VersionInfoUtil.getCurrentClientVersionInfo();</span>
+<span class="source-line-no">637</span><span id="line-637">      if (versionInfo != null) {</span>
+<span class="source-line-no">638</span><span id="line-638">        version = versionInfo.getVersion();</span>
+<span class="source-line-no">639</span><span id="line-639">        versionNumber = VersionInfoUtil.getVersionNumber(versionInfo);</span>
+<span class="source-line-no">640</span><span id="line-640">      }</span>
+<span class="source-line-no">641</span><span id="line-641">      ClusterStatusProtos.ServerLoad sl = request.getLoad();</span>
+<span class="source-line-no">642</span><span id="line-642">      ServerName serverName = ProtobufUtil.toServerName(request.getServer());</span>
+<span class="source-line-no">643</span><span id="line-643">      ServerMetrics oldLoad = server.getServerManager().getLoad(serverName);</span>
+<span class="source-line-no">644</span><span id="line-644">      ServerMetrics newLoad =</span>
+<span class="source-line-no">645</span><span id="line-645">        ServerMetricsBuilder.toServerMetrics(serverName, versionNumber, version, sl);</span>
+<span class="source-line-no">646</span><span id="line-646">      server.getServerManager().regionServerReport(serverName, newLoad);</span>
+<span class="source-line-no">647</span><span id="line-647">      server.getAssignmentManager().reportOnlineRegions(serverName,</span>
+<span class="source-line-no">648</span><span id="line-648">        newLoad.getRegionMetrics().keySet());</span>
+<span class="source-line-no">649</span><span id="line-649">      if (sl != null &amp;&amp; server.metricsMaster != null) {</span>
+<span class="source-line-no">650</span><span id="line-650">        // Up our metrics.</span>
+<span class="source-line-no">651</span><span id="line-651">        server.metricsMaster.incrementRequests(</span>
+<span class="source-line-no">652</span><span id="line-652">          sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0));</span>
+<span class="source-line-no">653</span><span id="line-653">        server.metricsMaster.incrementReadRequests(</span>
+<span class="source-line-no">654</span><span id="line-654">          sl.getReadRequestsCount() - (oldLoad != null ? oldLoad.getReadRequestsCount() : 0));</span>
+<span class="source-line-no">655</span><span id="line-655">        server.metricsMaster.incrementWriteRequests(</span>
+<span class="source-line-no">656</span><span id="line-656">          sl.getWriteRequestsCount() - (oldLoad != null ? oldLoad.getWriteRequestsCount() : 0));</span>
+<span class="source-line-no">657</span><span id="line-657">      }</span>
+<span class="source-line-no">658</span><span id="line-658">    } catch (IOException ioe) {</span>
+<span class="source-line-no">659</span><span id="line-659">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">660</span><span id="line-660">    }</span>
+<span class="source-line-no">661</span><span id="line-661">    return RegionServerReportResponse.newBuilder().build();</span>
+<span class="source-line-no">662</span><span id="line-662">  }</span>
+<span class="source-line-no">663</span><span id="line-663"></span>
+<span class="source-line-no">664</span><span id="line-664">  @Override</span>
+<span class="source-line-no">665</span><span id="line-665">  public RegionServerStartupResponse regionServerStartup(RpcController controller,</span>
+<span class="source-line-no">666</span><span id="line-666">    RegionServerStartupRequest request) throws ServiceException {</span>
+<span class="source-line-no">667</span><span id="line-667">    // Register with server manager</span>
+<span class="source-line-no">668</span><span id="line-668">    try {</span>
+<span class="source-line-no">669</span><span id="line-669">      server.checkServiceStarted();</span>
+<span class="source-line-no">670</span><span id="line-670">      int versionNumber = 0;</span>
+<span class="source-line-no">671</span><span id="line-671">      String version = "0.0.0";</span>
+<span class="source-line-no">672</span><span id="line-672">      VersionInfo versionInfo = VersionInfoUtil.getCurrentClientVersionInfo();</span>
+<span class="source-line-no">673</span><span id="line-673">      if (versionInfo != null) {</span>
+<span class="source-line-no">674</span><span id="line-674">        version = versionInfo.getVersion();</span>
+<span class="source-line-no">675</span><span id="line-675">        versionNumber = VersionInfoUtil.getVersionNumber(versionInfo);</span>
+<span class="source-line-no">676</span><span id="line-676">      }</span>
+<span class="source-line-no">677</span><span id="line-677">      InetAddress ia = server.getRemoteInetAddress(request.getPort(), request.getServerStartCode());</span>
+<span class="source-line-no">678</span><span id="line-678">      // if regionserver passed hostname to use,</span>
+<span class="source-line-no">679</span><span id="line-679">      // then use it instead of doing a reverse DNS lookup</span>
+<span class="source-line-no">680</span><span id="line-680">      ServerName rs =</span>
+<span class="source-line-no">681</span><span id="line-681">        server.getServerManager().regionServerStartup(request, versionNumber, version, ia);</span>
+<span class="source-line-no">682</span><span id="line-682"></span>
+<span class="source-line-no">683</span><span id="line-683">      // Send back some config info</span>
+<span class="source-line-no">684</span><span id="line-684">      RegionServerStartupResponse.Builder resp = createConfigurationSubset();</span>
+<span class="source-line-no">685</span><span id="line-685">      NameStringPair.Builder entry = NameStringPair.newBuilder()</span>
+<span class="source-line-no">686</span><span id="line-686">        .setName(HConstants.KEY_FOR_HOSTNAME_SEEN_BY_MASTER).setValue(rs.getHostname());</span>
+<span class="source-line-no">687</span><span id="line-687">      resp.addMapEntries(entry.build());</span>
+<span class="source-line-no">688</span><span id="line-688"></span>
+<span class="source-line-no">689</span><span id="line-689">      return resp.build();</span>
+<span class="source-line-no">690</span><span id="line-690">    } catch (IOException ioe) {</span>
+<span class="source-line-no">691</span><span id="line-691">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">692</span><span id="line-692">    }</span>
+<span class="source-line-no">693</span><span id="line-693">  }</span>
+<span class="source-line-no">694</span><span id="line-694"></span>
+<span class="source-line-no">695</span><span id="line-695">  @Override</span>
+<span class="source-line-no">696</span><span id="line-696">  public ReportRSFatalErrorResponse reportRSFatalError(RpcController controller,</span>
+<span class="source-line-no">697</span><span id="line-697">    ReportRSFatalErrorRequest request) throws ServiceException {</span>
+<span class="source-line-no">698</span><span id="line-698">    String errorText = request.getErrorMessage();</span>
+<span class="source-line-no">699</span><span id="line-699">    ServerName sn = ProtobufUtil.toServerName(request.getServer());</span>
+<span class="source-line-no">700</span><span id="line-700">    String msg = sn + " reported a fatal error:\n" + errorText;</span>
+<span class="source-line-no">701</span><span id="line-701">    LOG.warn(msg);</span>
+<span class="source-line-no">702</span><span id="line-702">    server.rsFatals.add(msg);</span>
+<span class="source-line-no">703</span><span id="line-703">    return ReportRSFatalErrorResponse.newBuilder().build();</span>
+<span class="source-line-no">704</span><span id="line-704">  }</span>
+<span class="source-line-no">705</span><span id="line-705"></span>
+<span class="source-line-no">706</span><span id="line-706">  @Override</span>
+<span class="source-line-no">707</span><span id="line-707">  public AddColumnResponse addColumn(RpcController controller, AddColumnRequest req)</span>
+<span class="source-line-no">708</span><span id="line-708">    throws ServiceException {</span>
+<span class="source-line-no">709</span><span id="line-709">    try {</span>
+<span class="source-line-no">710</span><span id="line-710">      long procId = server.addColumn(ProtobufUtil.toTableName(req.getTableName()),</span>
+<span class="source-line-no">711</span><span id="line-711">        ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()), req.getNonceGroup(),</span>
+<span class="source-line-no">712</span><span id="line-712">        req.getNonce());</span>
+<span class="source-line-no">713</span><span id="line-713">      if (procId == -1) {</span>
+<span class="source-line-no">714</span><span id="line-714">        // This mean operation was not performed in server, so do not set any procId</span>
+<span class="source-line-no">715</span><span id="line-715">        return AddColumnResponse.newBuilder().build();</span>
+<span class="source-line-no">716</span><span id="line-716">      } else {</span>
+<span class="source-line-no">717</span><span id="line-717">        return AddColumnResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">718</span><span id="line-718">      }</span>
+<span class="source-line-no">719</span><span id="line-719">    } catch (IOException ioe) {</span>
+<span class="source-line-no">720</span><span id="line-720">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">721</span><span id="line-721">    }</span>
+<span class="source-line-no">722</span><span id="line-722">  }</span>
+<span class="source-line-no">723</span><span id="line-723"></span>
+<span class="source-line-no">724</span><span id="line-724">  @Override</span>
+<span class="source-line-no">725</span><span id="line-725">  public AssignRegionResponse assignRegion(RpcController controller, AssignRegionRequest req)</span>
+<span class="source-line-no">726</span><span id="line-726">    throws ServiceException {</span>
+<span class="source-line-no">727</span><span id="line-727">    try {</span>
+<span class="source-line-no">728</span><span id="line-728">      server.checkInitialized();</span>
+<span class="source-line-no">729</span><span id="line-729"></span>
+<span class="source-line-no">730</span><span id="line-730">      final RegionSpecifierType type = req.getRegion().getType();</span>
+<span class="source-line-no">731</span><span id="line-731">      if (type != RegionSpecifierType.REGION_NAME) {</span>
+<span class="source-line-no">732</span><span id="line-732">        LOG.warn("assignRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME</span>
+<span class="source-line-no">733</span><span id="line-733">          + " actual: " + type);</span>
+<span class="source-line-no">734</span><span id="line-734">      }</span>
+<span class="source-line-no">735</span><span id="line-735"></span>
+<span class="source-line-no">736</span><span id="line-736">      final byte[] regionName = req.getRegion().getValue().toByteArray();</span>
+<span class="source-line-no">737</span><span id="line-737">      final RegionInfo regionInfo = server.getAssignmentManager().getRegionInfo(regionName);</span>
+<span class="source-line-no">738</span><span id="line-738">      if (regionInfo == null) {</span>
+<span class="source-line-no">739</span><span id="line-739">        throw new UnknownRegionException(Bytes.toStringBinary(regionName));</span>
+<span class="source-line-no">740</span><span id="line-740">      }</span>
+<span class="source-line-no">741</span><span id="line-741"></span>
+<span class="source-line-no">742</span><span id="line-742">      final AssignRegionResponse arr = AssignRegionResponse.newBuilder().build();</span>
+<span class="source-line-no">743</span><span id="line-743">      if (server.cpHost != null) {</span>
+<span class="source-line-no">744</span><span id="line-744">        server.cpHost.preAssign(regionInfo);</span>
+<span class="source-line-no">745</span><span id="line-745">      }</span>
+<span class="source-line-no">746</span><span id="line-746">      LOG.info(server.getClientIdAuditPrefix() + " assign " + regionInfo.getRegionNameAsString());</span>
+<span class="source-line-no">747</span><span id="line-747">      server.getAssignmentManager().assign(regionInfo);</span>
+<span class="source-line-no">748</span><span id="line-748">      if (server.cpHost != null) {</span>
+<span class="source-line-no">749</span><span id="line-749">        server.cpHost.postAssign(regionInfo);</span>
+<span class="source-line-no">750</span><span id="line-750">      }</span>
+<span class="source-line-no">751</span><span id="line-751">      return arr;</span>
+<span class="source-line-no">752</span><span id="line-752">    } catch (IOException ioe) {</span>
+<span class="source-line-no">753</span><span id="line-753">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">754</span><span id="line-754">    }</span>
+<span class="source-line-no">755</span><span id="line-755">  }</span>
+<span class="source-line-no">756</span><span id="line-756"></span>
+<span class="source-line-no">757</span><span id="line-757">  @Override</span>
+<span class="source-line-no">758</span><span id="line-758">  public MasterProtos.BalanceResponse balance(RpcController controller,</span>
+<span class="source-line-no">759</span><span id="line-759">    MasterProtos.BalanceRequest request) throws ServiceException {</span>
+<span class="source-line-no">760</span><span id="line-760">    try {</span>
+<span class="source-line-no">761</span><span id="line-761">      return ProtobufUtil.toBalanceResponse(server.balance(ProtobufUtil.toBalanceRequest(request)));</span>
+<span class="source-line-no">762</span><span id="line-762">    } catch (IOException ex) {</span>
+<span class="source-line-no">763</span><span id="line-763">      throw new ServiceException(ex);</span>
+<span class="source-line-no">764</span><span id="line-764">    }</span>
+<span class="source-line-no">765</span><span id="line-765">  }</span>
+<span class="source-line-no">766</span><span id="line-766"></span>
+<span class="source-line-no">767</span><span id="line-767">  @Override</span>
+<span class="source-line-no">768</span><span id="line-768">  public CreateNamespaceResponse createNamespace(RpcController controller,</span>
+<span class="source-line-no">769</span><span id="line-769">    CreateNamespaceRequest request) throws ServiceException {</span>
+<span class="source-line-no">770</span><span id="line-770">    try {</span>
+<span class="source-line-no">771</span><span id="line-771">      long procId =</span>
+<span class="source-line-no">772</span><span id="line-772">        server.createNamespace(ProtobufUtil.toNamespaceDescriptor(request.getNamespaceDescriptor()),</span>
+<span class="source-line-no">773</span><span id="line-773">          request.getNonceGroup(), request.getNonce());</span>
+<span class="source-line-no">774</span><span id="line-774">      return CreateNamespaceResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">775</span><span id="line-775">    } catch (IOException e) {</span>
+<span class="source-line-no">776</span><span id="line-776">      throw new ServiceException(e);</span>
+<span class="source-line-no">777</span><span id="line-777">    }</span>
+<span class="source-line-no">778</span><span id="line-778">  }</span>
+<span class="source-line-no">779</span><span id="line-779"></span>
+<span class="source-line-no">780</span><span id="line-780">  @Override</span>
+<span class="source-line-no">781</span><span id="line-781">  public CreateTableResponse createTable(RpcController controller, CreateTableRequest req)</span>
+<span class="source-line-no">782</span><span id="line-782">    throws ServiceException {</span>
+<span class="source-line-no">783</span><span id="line-783">    TableDescriptor tableDescriptor = ProtobufUtil.toTableDescriptor(req.getTableSchema());</span>
+<span class="source-line-no">784</span><span id="line-784">    byte[][] splitKeys = ProtobufUtil.getSplitKeysArray(req);</span>
+<span class="source-line-no">785</span><span id="line-785">    try {</span>
+<span class="source-line-no">786</span><span id="line-786">      long procId =</span>
+<span class="source-line-no">787</span><span id="line-787">        server.createTable(tableDescriptor, splitKeys, req.getNonceGroup(), req.getNonce());</span>
+<span class="source-line-no">788</span><span id="line-788">      LOG.info(server.getClientIdAuditPrefix() + " procedure request for creating table: "</span>
+<span class="source-line-no">789</span><span id="line-789">        + req.getTableSchema().getTableName() + " procId is: " + procId);</span>
+<span class="source-line-no">790</span><span id="line-790">      return CreateTableResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">791</span><span id="line-791">    } catch (IOException ioe) {</span>
+<span class="source-line-no">792</span><span id="line-792">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">793</span><span id="line-793">    }</span>
+<span class="source-line-no">794</span><span id="line-794">  }</span>
+<span class="source-line-no">795</span><span id="line-795"></span>
+<span class="source-line-no">796</span><span id="line-796">  @Override</span>
+<span class="source-line-no">797</span><span id="line-797">  public DeleteColumnResponse deleteColumn(RpcController controller, DeleteColumnRequest req)</span>
+<span class="source-line-no">798</span><span id="line-798">    throws ServiceException {</span>
+<span class="source-line-no">799</span><span id="line-799">    try {</span>
+<span class="source-line-no">800</span><span id="line-800">      long procId = server.deleteColumn(ProtobufUtil.toTableName(req.getTableName()),</span>
+<span class="source-line-no">801</span><span id="line-801">        req.getColumnName().toByteArray(), req.getNonceGroup(), req.getNonce());</span>
+<span class="source-line-no">802</span><span id="line-802">      if (procId == -1) {</span>
+<span class="source-line-no">803</span><span id="line-803">        // This mean operation was not performed in server, so do not set any procId</span>
+<span class="source-line-no">804</span><span id="line-804">        return DeleteColumnResponse.newBuilder().build();</span>
+<span class="source-line-no">805</span><span id="line-805">      } else {</span>
+<span class="source-line-no">806</span><span id="line-806">        return DeleteColumnResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">807</span><span id="line-807">      }</span>
+<span class="source-line-no">808</span><span id="line-808">    } catch (IOException ioe) {</span>
+<span class="source-line-no">809</span><span id="line-809">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">810</span><span id="line-810">    }</span>
+<span class="source-line-no">811</span><span id="line-811">  }</span>
+<span class="source-line-no">812</span><span id="line-812"></span>
+<span class="source-line-no">813</span><span id="line-813">  @Override</span>
+<span class="source-line-no">814</span><span id="line-814">  public DeleteNamespaceResponse deleteNamespace(RpcController controller,</span>
+<span class="source-line-no">815</span><span id="line-815">    DeleteNamespaceRequest request) throws ServiceException {</span>
+<span class="source-line-no">816</span><span id="line-816">    try {</span>
+<span class="source-line-no">817</span><span id="line-817">      long procId = server.deleteNamespace(request.getNamespaceName(), request.getNonceGroup(),</span>
+<span class="source-line-no">818</span><span id="line-818">        request.getNonce());</span>
+<span class="source-line-no">819</span><span id="line-819">      return DeleteNamespaceResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">820</span><span id="line-820">    } catch (IOException e) {</span>
+<span class="source-line-no">821</span><span id="line-821">      throw new ServiceException(e);</span>
+<span class="source-line-no">822</span><span id="line-822">    }</span>
+<span class="source-line-no">823</span><span id="line-823">  }</span>
+<span class="source-line-no">824</span><span id="line-824"></span>
+<span class="source-line-no">825</span><span id="line-825">  /**</span>
+<span class="source-line-no">826</span><span id="line-826">   * Execute Delete Snapshot operation.</span>
+<span class="source-line-no">827</span><span id="line-827">   * @return DeleteSnapshotResponse (a protobuf wrapped void) if the snapshot existed and was</span>
+<span class="source-line-no">828</span><span id="line-828">   *         deleted properly.</span>
+<span class="source-line-no">829</span><span id="line-829">   * @throws ServiceException wrapping SnapshotDoesNotExistException if specified snapshot did not</span>
+<span class="source-line-no">830</span><span id="line-830">   *                          exist.</span>
+<span class="source-line-no">831</span><span id="line-831">   */</span>
+<span class="source-line-no">832</span><span id="line-832">  @Override</span>
+<span class="source-line-no">833</span><span id="line-833">  public DeleteSnapshotResponse deleteSnapshot(RpcController controller,</span>
+<span class="source-line-no">834</span><span id="line-834">    DeleteSnapshotRequest request) throws ServiceException {</span>
+<span class="source-line-no">835</span><span id="line-835">    try {</span>
+<span class="source-line-no">836</span><span id="line-836">      server.checkInitialized();</span>
+<span class="source-line-no">837</span><span id="line-837">      server.snapshotManager.checkSnapshotSupport();</span>
+<span class="source-line-no">838</span><span id="line-838"></span>
+<span class="source-line-no">839</span><span id="line-839">      LOG.info(server.getClientIdAuditPrefix() + " delete " + request.getSnapshot());</span>
+<span class="source-line-no">840</span><span id="line-840">      server.snapshotManager.deleteSnapshot(request.getSnapshot());</span>
+<span class="source-line-no">841</span><span id="line-841">      return DeleteSnapshotResponse.newBuilder().build();</span>
+<span class="source-line-no">842</span><span id="line-842">    } catch (IOException e) {</span>
+<span class="source-line-no">843</span><span id="line-843">      throw new ServiceException(e);</span>
+<span class="source-line-no">844</span><span id="line-844">    }</span>
+<span class="source-line-no">845</span><span id="line-845">  }</span>
+<span class="source-line-no">846</span><span id="line-846"></span>
+<span class="source-line-no">847</span><span id="line-847">  @Override</span>
+<span class="source-line-no">848</span><span id="line-848">  public DeleteTableResponse deleteTable(RpcController controller, DeleteTableRequest request)</span>
+<span class="source-line-no">849</span><span id="line-849">    throws ServiceException {</span>
+<span class="source-line-no">850</span><span id="line-850">    try {</span>
+<span class="source-line-no">851</span><span id="line-851">      long procId = server.deleteTable(ProtobufUtil.toTableName(request.getTableName()),</span>
+<span class="source-line-no">852</span><span id="line-852">        request.getNonceGroup(), request.getNonce());</span>
+<span class="source-line-no">853</span><span id="line-853">      return DeleteTableResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">854</span><span id="line-854">    } catch (IOException ioe) {</span>
+<span class="source-line-no">855</span><span id="line-855">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">856</span><span id="line-856">    }</span>
+<span class="source-line-no">857</span><span id="line-857">  }</span>
+<span class="source-line-no">858</span><span id="line-858"></span>
+<span class="source-line-no">859</span><span id="line-859">  @Override</span>
+<span class="source-line-no">860</span><span id="line-860">  public TruncateTableResponse truncateTable(RpcController controller, TruncateTableRequest request)</span>
+<span class="source-line-no">861</span><span id="line-861">    throws ServiceException {</span>
+<span class="source-line-no">862</span><span id="line-862">    try {</span>
+<span class="source-line-no">863</span><span id="line-863">      long procId = server.truncateTable(ProtobufUtil.toTableName(request.getTableName()),</span>
+<span class="source-line-no">864</span><span id="line-864">        request.getPreserveSplits(), request.getNonceGroup(), request.getNonce());</span>
+<span class="source-line-no">865</span><span id="line-865">      return TruncateTableResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">866</span><span id="line-866">    } catch (IOException ioe) {</span>
+<span class="source-line-no">867</span><span id="line-867">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">868</span><span id="line-868">    }</span>
+<span class="source-line-no">869</span><span id="line-869">  }</span>
+<span class="source-line-no">870</span><span id="line-870"></span>
+<span class="source-line-no">871</span><span id="line-871">  @Override</span>
+<span class="source-line-no">872</span><span id="line-872">  public DisableTableResponse disableTable(RpcController controller, DisableTableRequest request)</span>
+<span class="source-line-no">873</span><span id="line-873">    throws ServiceException {</span>
+<span class="source-line-no">874</span><span id="line-874">    try {</span>
+<span class="source-line-no">875</span><span id="line-875">      long procId = server.disableTable(ProtobufUtil.toTableName(request.getTableName()),</span>
+<span class="source-line-no">876</span><span id="line-876">        request.getNonceGroup(), request.getNonce());</span>
+<span class="source-line-no">877</span><span id="line-877">      return DisableTableResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">878</span><span id="line-878">    } catch (IOException ioe) {</span>
+<span class="source-line-no">879</span><span id="line-879">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">880</span><span id="line-880">    }</span>
+<span class="source-line-no">881</span><span id="line-881">  }</span>
+<span class="source-line-no">882</span><span id="line-882"></span>
+<span class="source-line-no">883</span><span id="line-883">  @Override</span>
+<span class="source-line-no">884</span><span id="line-884">  public EnableCatalogJanitorResponse enableCatalogJanitor(RpcController c,</span>
+<span class="source-line-no">885</span><span id="line-885">    EnableCatalogJanitorRequest req) throws ServiceException {</span>
+<span class="source-line-no">886</span><span id="line-886">    rpcPreCheck("enableCatalogJanitor");</span>
+<span class="source-line-no">887</span><span id="line-887">    return EnableCatalogJanitorResponse.newBuilder()</span>
+<span class="source-line-no">888</span><span id="line-888">      .setPrevValue(server.catalogJanitorChore.setEnabled(req.getEnable())).build();</span>
+<span class="source-line-no">889</span><span id="line-889">  }</span>
+<span class="source-line-no">890</span><span id="line-890"></span>
+<span class="source-line-no">891</span><span id="line-891">  @Override</span>
+<span class="source-line-no">892</span><span id="line-892">  public SetCleanerChoreRunningResponse setCleanerChoreRunning(RpcController c,</span>
+<span class="source-line-no">893</span><span id="line-893">    SetCleanerChoreRunningRequest req) throws ServiceException {</span>
+<span class="source-line-no">894</span><span id="line-894">    rpcPreCheck("setCleanerChoreRunning");</span>
+<span class="source-line-no">895</span><span id="line-895"></span>
+<span class="source-line-no">896</span><span id="line-896">    boolean prevValue =</span>
+<span class="source-line-no">897</span><span id="line-897">      server.getLogCleaner().getEnabled() &amp;&amp; server.getHFileCleaner().getEnabled();</span>
+<span class="source-line-no">898</span><span id="line-898">    server.getLogCleaner().setEnabled(req.getOn());</span>
+<span class="source-line-no">899</span><span id="line-899">    for (HFileCleaner hFileCleaner : server.getHFileCleaners()) {</span>
+<span class="source-line-no">900</span><span id="line-900">      hFileCleaner.setEnabled(req.getOn());</span>
+<span class="source-line-no">901</span><span id="line-901">    }</span>
+<span class="source-line-no">902</span><span id="line-902">    return SetCleanerChoreRunningResponse.newBuilder().setPrevValue(prevValue).build();</span>
+<span class="source-line-no">903</span><span id="line-903">  }</span>
+<span class="source-line-no">904</span><span id="line-904"></span>
+<span class="source-line-no">905</span><span id="line-905">  @Override</span>
+<span class="source-line-no">906</span><span id="line-906">  public EnableTableResponse enableTable(RpcController controller, EnableTableRequest request)</span>
+<span class="source-line-no">907</span><span id="line-907">    throws ServiceException {</span>
+<span class="source-line-no">908</span><span id="line-908">    try {</span>
+<span class="source-line-no">909</span><span id="line-909">      long procId = server.enableTable(ProtobufUtil.toTableName(request.getTableName()),</span>
+<span class="source-line-no">910</span><span id="line-910">        request.getNonceGroup(), request.getNonce());</span>
+<span class="source-line-no">911</span><span id="line-911">      return EnableTableResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">912</span><span id="line-912">    } catch (IOException ioe) {</span>
+<span class="source-line-no">913</span><span id="line-913">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">914</span><span id="line-914">    }</span>
+<span class="source-line-no">915</span><span id="line-915">  }</span>
+<span class="source-line-no">916</span><span id="line-916"></span>
+<span class="source-line-no">917</span><span id="line-917">  @Override</span>
+<span class="source-line-no">918</span><span id="line-918">  public MergeTableRegionsResponse mergeTableRegions(RpcController c,</span>
+<span class="source-line-no">919</span><span id="line-919">    MergeTableRegionsRequest request) throws ServiceException {</span>
+<span class="source-line-no">920</span><span id="line-920">    try {</span>
+<span class="source-line-no">921</span><span id="line-921">      server.checkInitialized();</span>
+<span class="source-line-no">922</span><span id="line-922">    } catch (IOException ioe) {</span>
+<span class="source-line-no">923</span><span id="line-923">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">924</span><span id="line-924">    }</span>
+<span class="source-line-no">925</span><span id="line-925"></span>
+<span class="source-line-no">926</span><span id="line-926">    RegionStates regionStates = server.getAssignmentManager().getRegionStates();</span>
+<span class="source-line-no">927</span><span id="line-927"></span>
+<span class="source-line-no">928</span><span id="line-928">    RegionInfo[] regionsToMerge = new RegionInfo[request.getRegionCount()];</span>
+<span class="source-line-no">929</span><span id="line-929">    for (int i = 0; i &lt; request.getRegionCount(); i++) {</span>
+<span class="source-line-no">930</span><span id="line-930">      final byte[] encodedNameOfRegion = request.getRegion(i).getValue().toByteArray();</span>
+<span class="source-line-no">931</span><span id="line-931">      if (request.getRegion(i).getType() != RegionSpecifierType.ENCODED_REGION_NAME) {</span>
+<span class="source-line-no">932</span><span id="line-932">        LOG.warn("MergeRegions specifier type: expected: " + RegionSpecifierType.ENCODED_REGION_NAME</span>
+<span class="source-line-no">933</span><span id="line-933">          + " actual: region " + i + " =" + request.getRegion(i).getType());</span>
+<span class="source-line-no">934</span><span id="line-934">      }</span>
+<span class="source-line-no">935</span><span id="line-935">      RegionState regionState = regionStates.getRegionState(Bytes.toString(encodedNameOfRegion));</span>
+<span class="source-line-no">936</span><span id="line-936">      if (regionState == null) {</span>
+<span class="source-line-no">937</span><span id="line-937">        throw new ServiceException(</span>
+<span class="source-line-no">938</span><span id="line-938">          new UnknownRegionException(Bytes.toStringBinary(encodedNameOfRegion)));</span>
+<span class="source-line-no">939</span><span id="line-939">      }</span>
+<span class="source-line-no">940</span><span id="line-940">      regionsToMerge[i] = regionState.getRegion();</span>
+<span class="source-line-no">941</span><span id="line-941">    }</span>
+<span class="source-line-no">942</span><span id="line-942"></span>
+<span class="source-line-no">943</span><span id="line-943">    try {</span>
+<span class="source-line-no">944</span><span id="line-944">      long procId = server.mergeRegions(regionsToMerge, request.getForcible(),</span>
+<span class="source-line-no">945</span><span id="line-945">        request.getNonceGroup(), request.getNonce());</span>
+<span class="source-line-no">946</span><span id="line-946">      return MergeTableRegionsResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">947</span><span id="line-947">    } catch (IOException ioe) {</span>
+<span class="source-line-no">948</span><span id="line-948">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">949</span><span id="line-949">    }</span>
+<span class="source-line-no">950</span><span id="line-950">  }</span>
+<span class="source-line-no">951</span><span id="line-951"></span>
+<span class="source-line-no">952</span><span id="line-952">  @Override</span>
+<span class="source-line-no">953</span><span id="line-953">  public SplitTableRegionResponse splitRegion(final RpcController controller,</span>
+<span class="source-line-no">954</span><span id="line-954">    final SplitTableRegionRequest request) throws ServiceException {</span>
+<span class="source-line-no">955</span><span id="line-955">    try {</span>
+<span class="source-line-no">956</span><span id="line-956">      long procId = server.splitRegion(ProtobufUtil.toRegionInfo(request.getRegionInfo()),</span>
+<span class="source-line-no">957</span><span id="line-957">        request.hasSplitRow() ? request.getSplitRow().toByteArray() : null, request.getNonceGroup(),</span>
+<span class="source-line-no">958</span><span id="line-958">        request.getNonce());</span>
+<span class="source-line-no">959</span><span id="line-959">      return SplitTableRegionResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">960</span><span id="line-960">    } catch (IOException ie) {</span>
+<span class="source-line-no">961</span><span id="line-961">      throw new ServiceException(ie);</span>
+<span class="source-line-no">962</span><span id="line-962">    }</span>
+<span class="source-line-no">963</span><span id="line-963">  }</span>
+<span class="source-line-no">964</span><span id="line-964"></span>
+<span class="source-line-no">965</span><span id="line-965">  @Override</span>
+<span class="source-line-no">966</span><span id="line-966">  public MasterProtos.TruncateRegionResponse truncateRegion(RpcController controller,</span>
+<span class="source-line-no">967</span><span id="line-967">    final MasterProtos.TruncateRegionRequest request) throws ServiceException {</span>
+<span class="source-line-no">968</span><span id="line-968">    try {</span>
+<span class="source-line-no">969</span><span id="line-969">      long procId = server.truncateRegion(ProtobufUtil.toRegionInfo(request.getRegionInfo()),</span>
+<span class="source-line-no">970</span><span id="line-970">        request.getNonceGroup(), request.getNonce());</span>
+<span class="source-line-no">971</span><span id="line-971">      return MasterProtos.TruncateRegionResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">972</span><span id="line-972">    } catch (IOException ie) {</span>
+<span class="source-line-no">973</span><span id="line-973">      throw new ServiceException(ie);</span>
+<span class="source-line-no">974</span><span id="line-974">    }</span>
+<span class="source-line-no">975</span><span id="line-975">  }</span>
+<span class="source-line-no">976</span><span id="line-976"></span>
+<span class="source-line-no">977</span><span id="line-977">  @Override</span>
+<span class="source-line-no">978</span><span id="line-978">  public ClientProtos.CoprocessorServiceResponse execMasterService(final RpcController controller,</span>
+<span class="source-line-no">979</span><span id="line-979">    final ClientProtos.CoprocessorServiceRequest request) throws ServiceException {</span>
+<span class="source-line-no">980</span><span id="line-980">    rpcPreCheck("execMasterService");</span>
+<span class="source-line-no">981</span><span id="line-981">    try {</span>
+<span class="source-line-no">982</span><span id="line-982">      ServerRpcController execController = new ServerRpcController();</span>
+<span class="source-line-no">983</span><span id="line-983">      ClientProtos.CoprocessorServiceCall call = request.getCall();</span>
+<span class="source-line-no">984</span><span id="line-984">      String serviceName = call.getServiceName();</span>
+<span class="source-line-no">985</span><span id="line-985">      String methodName = call.getMethodName();</span>
+<span class="source-line-no">986</span><span id="line-986">      if (!server.coprocessorServiceHandlers.containsKey(serviceName)) {</span>
+<span class="source-line-no">987</span><span id="line-987">        throw new UnknownProtocolException(null,</span>
+<span class="source-line-no">988</span><span id="line-988">          "No registered Master Coprocessor Endpoint found for " + serviceName</span>
+<span class="source-line-no">989</span><span id="line-989">            + ". Has it been enabled?");</span>
+<span class="source-line-no">990</span><span id="line-990">      }</span>
+<span class="source-line-no">991</span><span id="line-991"></span>
+<span class="source-line-no">992</span><span id="line-992">      Service service = server.coprocessorServiceHandlers.get(serviceName);</span>
+<span class="source-line-no">993</span><span id="line-993">      ServiceDescriptor serviceDesc = service.getDescriptorForType();</span>
+<span class="source-line-no">994</span><span id="line-994">      MethodDescriptor methodDesc =</span>
+<span class="source-line-no">995</span><span id="line-995">        CoprocessorRpcUtils.getMethodDescriptor(methodName, serviceDesc);</span>
+<span class="source-line-no">996</span><span id="line-996"></span>
+<span class="source-line-no">997</span><span id="line-997">      Message execRequest = CoprocessorRpcUtils.getRequest(service, methodDesc, call.getRequest());</span>
+<span class="source-line-no">998</span><span id="line-998">      final Message.Builder responseBuilder =</span>
+<span class="source-line-no">999</span><span id="line-999">        service.getResponsePrototype(methodDesc).newBuilderForType();</span>
+<span class="source-line-no">1000</span><span id="line-1000">      service.callMethod(methodDesc, execController, execRequest, (message) -&gt; {</span>
+<span class="source-line-no">1001</span><span id="line-1001">        if (message != null) {</span>
+<span class="source-line-no">1002</span><span id="line-1002">          responseBuilder.mergeFrom(message);</span>
+<span class="source-line-no">1003</span><span id="line-1003">        }</span>
+<span class="source-line-no">1004</span><span id="line-1004">      });</span>
+<span class="source-line-no">1005</span><span id="line-1005">      Message execResult = responseBuilder.build();</span>
+<span class="source-line-no">1006</span><span id="line-1006">      if (execController.getFailedOn() != null) {</span>
+<span class="source-line-no">1007</span><span id="line-1007">        throw execController.getFailedOn();</span>
+<span class="source-line-no">1008</span><span id="line-1008">      }</span>
+<span class="source-line-no">1009</span><span id="line-1009"></span>
+<span class="source-line-no">1010</span><span id="line-1010">      String remoteAddress = RpcServer.getRemoteAddress().map(InetAddress::toString).orElse("");</span>
+<span class="source-line-no">1011</span><span id="line-1011">      User caller = RpcServer.getRequestUser().orElse(null);</span>
+<span class="source-line-no">1012</span><span id="line-1012">      AUDITLOG.info("User {} (remote address: {}) master service request for {}.{}", caller,</span>
+<span class="source-line-no">1013</span><span id="line-1013">        remoteAddress, serviceName, methodName);</span>
+<span class="source-line-no">1014</span><span id="line-1014"></span>
+<span class="source-line-no">1015</span><span id="line-1015">      return CoprocessorRpcUtils.getResponse(execResult, HConstants.EMPTY_BYTE_ARRAY);</span>
+<span class="source-line-no">1016</span><span id="line-1016">    } catch (IOException ie) {</span>
+<span class="source-line-no">1017</span><span id="line-1017">      throw new ServiceException(ie);</span>
+<span class="source-line-no">1018</span><span id="line-1018">    }</span>
+<span class="source-line-no">1019</span><span id="line-1019">  }</span>
+<span class="source-line-no">1020</span><span id="line-1020"></span>
+<span class="source-line-no">1021</span><span id="line-1021">  /**</span>
+<span class="source-line-no">1022</span><span id="line-1022">   * Triggers an asynchronous attempt to run a distributed procedure. {@inheritDoc}</span>
+<span class="source-line-no">1023</span><span id="line-1023">   */</span>
+<span class="source-line-no">1024</span><span id="line-1024">  @Override</span>
+<span class="source-line-no">1025</span><span id="line-1025">  public ExecProcedureResponse execProcedure(RpcController controller, ExecProcedureRequest request)</span>
+<span class="source-line-no">1026</span><span id="line-1026">    throws ServiceException {</span>
+<span class="source-line-no">1027</span><span id="line-1027">    try {</span>
+<span class="source-line-no">1028</span><span id="line-1028">      server.checkInitialized();</span>
+<span class="source-line-no">1029</span><span id="line-1029">      ProcedureDescription desc = request.getProcedure();</span>
+<span class="source-line-no">1030</span><span id="line-1030">      MasterProcedureManager mpm =</span>
+<span class="source-line-no">1031</span><span id="line-1031">        server.getMasterProcedureManagerHost().getProcedureManager(desc.getSignature());</span>
+<span class="source-line-no">1032</span><span id="line-1032">      if (mpm == null) {</span>
+<span class="source-line-no">1033</span><span id="line-1033">        throw new ServiceException(</span>
+<span class="source-line-no">1034</span><span id="line-1034">          new DoNotRetryIOException("The procedure is not registered: " + desc.getSignature()));</span>
+<span class="source-line-no">1035</span><span id="line-1035">      }</span>
+<span class="source-line-no">1036</span><span id="line-1036">      LOG.info(server.getClientIdAuditPrefix() + " procedure request for: " + desc.getSignature());</span>
+<span class="source-line-no">1037</span><span id="line-1037">      mpm.checkPermissions(desc, getAccessChecker(), RpcServer.getRequestUser().orElse(null));</span>
+<span class="source-line-no">1038</span><span id="line-1038">      mpm.execProcedure(desc);</span>
+<span class="source-line-no">1039</span><span id="line-1039">      // send back the max amount of time the client should wait for the procedure</span>
+<span class="source-line-no">1040</span><span id="line-1040">      // to complete</span>
+<span class="source-line-no">1041</span><span id="line-1041">      long waitTime = SnapshotDescriptionUtils.DEFAULT_MAX_WAIT_TIME;</span>
+<span class="source-line-no">1042</span><span id="line-1042">      return ExecProcedureResponse.newBuilder().setExpectedTimeout(waitTime).build();</span>
+<span class="source-line-no">1043</span><span id="line-1043">    } catch (ForeignException e) {</span>
+<span class="source-line-no">1044</span><span id="line-1044">      throw new ServiceException(e.getCause());</span>
+<span class="source-line-no">1045</span><span id="line-1045">    } catch (IOException e) {</span>
+<span class="source-line-no">1046</span><span id="line-1046">      throw new ServiceException(e);</span>
+<span class="source-line-no">1047</span><span id="line-1047">    }</span>
+<span class="source-line-no">1048</span><span id="line-1048">  }</span>
+<span class="source-line-no">1049</span><span id="line-1049"></span>
+<span class="source-line-no">1050</span><span id="line-1050">  /**</span>
+<span class="source-line-no">1051</span><span id="line-1051">   * Triggers a synchronous attempt to run a distributed procedure and sets return data in response.</span>
+<span class="source-line-no">1052</span><span id="line-1052">   * {@inheritDoc}</span>
+<span class="source-line-no">1053</span><span id="line-1053">   */</span>
+<span class="source-line-no">1054</span><span id="line-1054">  @Override</span>
+<span class="source-line-no">1055</span><span id="line-1055">  public ExecProcedureResponse execProcedureWithRet(RpcController controller,</span>
+<span class="source-line-no">1056</span><span id="line-1056">    ExecProcedureRequest request) throws ServiceException {</span>
+<span class="source-line-no">1057</span><span id="line-1057">    rpcPreCheck("execProcedureWithRet");</span>
+<span class="source-line-no">1058</span><span id="line-1058">    try {</span>
+<span class="source-line-no">1059</span><span id="line-1059">      ProcedureDescription desc = request.getProcedure();</span>
+<span class="source-line-no">1060</span><span id="line-1060">      MasterProcedureManager mpm =</span>
+<span class="source-line-no">1061</span><span id="line-1061">        server.getMasterProcedureManagerHost().getProcedureManager(desc.getSignature());</span>
+<span class="source-line-no">1062</span><span id="line-1062">      if (mpm == null) {</span>
+<span class="source-line-no">1063</span><span id="line-1063">        throw new ServiceException("The procedure is not registered: " + desc.getSignature());</span>
+<span class="source-line-no">1064</span><span id="line-1064">      }</span>
+<span class="source-line-no">1065</span><span id="line-1065">      LOG.info(server.getClientIdAuditPrefix() + " procedure request for: " + desc.getSignature());</span>
+<span class="source-line-no">1066</span><span id="line-1066">      byte[] data = mpm.execProcedureWithRet(desc);</span>
+<span class="source-line-no">1067</span><span id="line-1067">      ExecProcedureResponse.Builder builder = ExecProcedureResponse.newBuilder();</span>
+<span class="source-line-no">1068</span><span id="line-1068">      // set return data if available</span>
+<span class="source-line-no">1069</span><span id="line-1069">      if (data != null) {</span>
+<span class="source-line-no">1070</span><span id="line-1070">        builder.setReturnData(UnsafeByteOperations.unsafeWrap(data));</span>
+<span class="source-line-no">1071</span><span id="line-1071">      }</span>
+<span class="source-line-no">1072</span><span id="line-1072">      return builder.build();</span>
+<span class="source-line-no">1073</span><span id="line-1073">    } catch (IOException e) {</span>
+<span class="source-line-no">1074</span><span id="line-1074">      throw new ServiceException(e);</span>
+<span class="source-line-no">1075</span><span id="line-1075">    }</span>
+<span class="source-line-no">1076</span><span id="line-1076">  }</span>
+<span class="source-line-no">1077</span><span id="line-1077"></span>
+<span class="source-line-no">1078</span><span id="line-1078">  @Override</span>
+<span class="source-line-no">1079</span><span id="line-1079">  public GetClusterStatusResponse getClusterStatus(RpcController controller,</span>
+<span class="source-line-no">1080</span><span id="line-1080">    GetClusterStatusRequest req) throws ServiceException {</span>
+<span class="source-line-no">1081</span><span id="line-1081">    GetClusterStatusResponse.Builder response = GetClusterStatusResponse.newBuilder();</span>
+<span class="source-line-no">1082</span><span id="line-1082">    try {</span>
+<span class="source-line-no">1083</span><span id="line-1083">      // We used to check if Master was up at this point but let this call proceed even if</span>
+<span class="source-line-no">1084</span><span id="line-1084">      // Master is initializing... else we shut out stuff like hbck2 tool from making progress</span>
+<span class="source-line-no">1085</span><span id="line-1085">      // since it queries this method to figure cluster version. hbck2 wants to be able to work</span>
+<span class="source-line-no">1086</span><span id="line-1086">      // against Master even if it is 'initializing' so it can do fixup.</span>
+<span class="source-line-no">1087</span><span id="line-1087">      response.setClusterStatus(ClusterMetricsBuilder.toClusterStatus(</span>
+<span class="source-line-no">1088</span><span id="line-1088">        server.getClusterMetrics(ClusterMetricsBuilder.toOptions(req.getOptionsList()))));</span>
+<span class="source-line-no">1089</span><span id="line-1089">    } catch (IOException e) {</span>
+<span class="source-line-no">1090</span><span id="line-1090">      throw new ServiceException(e);</span>
+<span class="source-line-no">1091</span><span id="line-1091">    }</span>
+<span class="source-line-no">1092</span><span id="line-1092">    return response.build();</span>
+<span class="source-line-no">1093</span><span id="line-1093">  }</span>
+<span class="source-line-no">1094</span><span id="line-1094"></span>
+<span class="source-line-no">1095</span><span id="line-1095">  /**</span>
+<span class="source-line-no">1096</span><span id="line-1096">   * List the currently available/stored snapshots. Any in-progress snapshots are ignored</span>
+<span class="source-line-no">1097</span><span id="line-1097">   */</span>
+<span class="source-line-no">1098</span><span id="line-1098">  @Override</span>
+<span class="source-line-no">1099</span><span id="line-1099">  public GetCompletedSnapshotsResponse getCompletedSnapshots(RpcController controller,</span>
+<span class="source-line-no">1100</span><span id="line-1100">    GetCompletedSnapshotsRequest request) throws ServiceException {</span>
+<span class="source-line-no">1101</span><span id="line-1101">    try {</span>
+<span class="source-line-no">1102</span><span id="line-1102">      server.checkInitialized();</span>
+<span class="source-line-no">1103</span><span id="line-1103">      GetCompletedSnapshotsResponse.Builder builder = GetCompletedSnapshotsResponse.newBuilder();</span>
+<span class="source-line-no">1104</span><span id="line-1104">      List&lt;SnapshotDescription&gt; snapshots = server.snapshotManager.getCompletedSnapshots();</span>
+<span class="source-line-no">1105</span><span id="line-1105"></span>
+<span class="source-line-no">1106</span><span id="line-1106">      // convert to protobuf</span>
+<span class="source-line-no">1107</span><span id="line-1107">      for (SnapshotDescription snapshot : snapshots) {</span>
+<span class="source-line-no">1108</span><span id="line-1108">        builder.addSnapshots(snapshot);</span>
+<span class="source-line-no">1109</span><span id="line-1109">      }</span>
+<span class="source-line-no">1110</span><span id="line-1110">      return builder.build();</span>
+<span class="source-line-no">1111</span><span id="line-1111">    } catch (IOException e) {</span>
+<span class="source-line-no">1112</span><span id="line-1112">      throw new ServiceException(e);</span>
+<span class="source-line-no">1113</span><span id="line-1113">    }</span>
+<span class="source-line-no">1114</span><span id="line-1114">  }</span>
+<span class="source-line-no">1115</span><span id="line-1115"></span>
+<span class="source-line-no">1116</span><span id="line-1116">  @Override</span>
+<span class="source-line-no">1117</span><span id="line-1117">  public ListNamespacesResponse listNamespaces(RpcController controller,</span>
+<span class="source-line-no">1118</span><span id="line-1118">    ListNamespacesRequest request) throws ServiceException {</span>
+<span class="source-line-no">1119</span><span id="line-1119">    try {</span>
+<span class="source-line-no">1120</span><span id="line-1120">      return ListNamespacesResponse.newBuilder().addAllNamespaceName(server.listNamespaces())</span>
+<span class="source-line-no">1121</span><span id="line-1121">        .build();</span>
+<span class="source-line-no">1122</span><span id="line-1122">    } catch (IOException e) {</span>
+<span class="source-line-no">1123</span><span id="line-1123">      throw new ServiceException(e);</span>
+<span class="source-line-no">1124</span><span id="line-1124">    }</span>
+<span class="source-line-no">1125</span><span id="line-1125">  }</span>
+<span class="source-line-no">1126</span><span id="line-1126"></span>
+<span class="source-line-no">1127</span><span id="line-1127">  @Override</span>
+<span class="source-line-no">1128</span><span id="line-1128">  public GetNamespaceDescriptorResponse getNamespaceDescriptor(RpcController controller,</span>
+<span class="source-line-no">1129</span><span id="line-1129">    GetNamespaceDescriptorRequest request) throws ServiceException {</span>
+<span class="source-line-no">1130</span><span id="line-1130">    try {</span>
+<span class="source-line-no">1131</span><span id="line-1131">      return GetNamespaceDescriptorResponse.newBuilder()</span>
+<span class="source-line-no">1132</span><span id="line-1132">        .setNamespaceDescriptor(</span>
+<span class="source-line-no">1133</span><span id="line-1133">          ProtobufUtil.toProtoNamespaceDescriptor(server.getNamespace(request.getNamespaceName())))</span>
+<span class="source-line-no">1134</span><span id="line-1134">        .build();</span>
+<span class="source-line-no">1135</span><span id="line-1135">    } catch (IOException e) {</span>
+<span class="source-line-no">1136</span><span id="line-1136">      throw new ServiceException(e);</span>
+<span class="source-line-no">1137</span><span id="line-1137">    }</span>
+<span class="source-line-no">1138</span><span id="line-1138">  }</span>
+<span class="source-line-no">1139</span><span id="line-1139"></span>
+<span class="source-line-no">1140</span><span id="line-1140">  /**</span>
+<span class="source-line-no">1141</span><span id="line-1141">   * Get the number of regions of the table that have been updated by the alter.</span>
+<span class="source-line-no">1142</span><span id="line-1142">   * @return Pair indicating the number of regions updated Pair.getFirst is the regions that are yet</span>
+<span class="source-line-no">1143</span><span id="line-1143">   *         to be updated Pair.getSecond is the total number of regions of the table</span>
+<span class="source-line-no">1144</span><span id="line-1144">   */</span>
+<span class="source-line-no">1145</span><span id="line-1145">  @Override</span>
+<span class="source-line-no">1146</span><span id="line-1146">  public GetSchemaAlterStatusResponse getSchemaAlterStatus(RpcController controller,</span>
+<span class="source-line-no">1147</span><span id="line-1147">    GetSchemaAlterStatusRequest req) throws ServiceException {</span>
+<span class="source-line-no">1148</span><span id="line-1148">    // TODO: currently, we query using the table name on the client side. this</span>
+<span class="source-line-no">1149</span><span id="line-1149">    // may overlap with other table operations or the table operation may</span>
+<span class="source-line-no">1150</span><span id="line-1150">    // have completed before querying this API. We need to refactor to a</span>
+<span class="source-line-no">1151</span><span id="line-1151">    // transaction system in the future to avoid these ambiguities.</span>
+<span class="source-line-no">1152</span><span id="line-1152">    TableName tableName = ProtobufUtil.toTableName(req.getTableName());</span>
+<span class="source-line-no">1153</span><span id="line-1153"></span>
+<span class="source-line-no">1154</span><span id="line-1154">    try {</span>
+<span class="source-line-no">1155</span><span id="line-1155">      server.checkInitialized();</span>
+<span class="source-line-no">1156</span><span id="line-1156">      Pair&lt;Integer, Integer&gt; pair = server.getAssignmentManager().getReopenStatus(tableName);</span>
+<span class="source-line-no">1157</span><span id="line-1157">      GetSchemaAlterStatusResponse.Builder ret = GetSchemaAlterStatusResponse.newBuilder();</span>
+<span class="source-line-no">1158</span><span id="line-1158">      ret.setYetToUpdateRegions(pair.getFirst());</span>
+<span class="source-line-no">1159</span><span id="line-1159">      ret.setTotalRegions(pair.getSecond());</span>
+<span class="source-line-no">1160</span><span id="line-1160">      return ret.build();</span>
+<span class="source-line-no">1161</span><span id="line-1161">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1162</span><span id="line-1162">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1163</span><span id="line-1163">    }</span>
+<span class="source-line-no">1164</span><span id="line-1164">  }</span>
+<span class="source-line-no">1165</span><span id="line-1165"></span>
+<span class="source-line-no">1166</span><span id="line-1166">  /**</span>
+<span class="source-line-no">1167</span><span id="line-1167">   * Get list of TableDescriptors for requested tables.</span>
+<span class="source-line-no">1168</span><span id="line-1168">   * @param c   Unused (set to null).</span>
+<span class="source-line-no">1169</span><span id="line-1169">   * @param req GetTableDescriptorsRequest that contains: - tableNames: requested tables, or if</span>
+<span class="source-line-no">1170</span><span id="line-1170">   *            empty, all are requested.</span>
+<span class="source-line-no">1171</span><span id="line-1171">   */</span>
+<span class="source-line-no">1172</span><span id="line-1172">  @Override</span>
+<span class="source-line-no">1173</span><span id="line-1173">  public GetTableDescriptorsResponse getTableDescriptors(RpcController c,</span>
+<span class="source-line-no">1174</span><span id="line-1174">    GetTableDescriptorsRequest req) throws ServiceException {</span>
+<span class="source-line-no">1175</span><span id="line-1175">    try {</span>
+<span class="source-line-no">1176</span><span id="line-1176">      server.checkInitialized();</span>
+<span class="source-line-no">1177</span><span id="line-1177"></span>
+<span class="source-line-no">1178</span><span id="line-1178">      final String regex = req.hasRegex() ? req.getRegex() : null;</span>
+<span class="source-line-no">1179</span><span id="line-1179">      final String namespace = req.hasNamespace() ? req.getNamespace() : null;</span>
+<span class="source-line-no">1180</span><span id="line-1180">      List&lt;TableName&gt; tableNameList = null;</span>
+<span class="source-line-no">1181</span><span id="line-1181">      if (req.getTableNamesCount() &gt; 0) {</span>
+<span class="source-line-no">1182</span><span id="line-1182">        tableNameList = new ArrayList&lt;TableName&gt;(req.getTableNamesCount());</span>
+<span class="source-line-no">1183</span><span id="line-1183">        for (HBaseProtos.TableName tableNamePB : req.getTableNamesList()) {</span>
+<span class="source-line-no">1184</span><span id="line-1184">          tableNameList.add(ProtobufUtil.toTableName(tableNamePB));</span>
+<span class="source-line-no">1185</span><span id="line-1185">        }</span>
+<span class="source-line-no">1186</span><span id="line-1186">      }</span>
+<span class="source-line-no">1187</span><span id="line-1187"></span>
+<span class="source-line-no">1188</span><span id="line-1188">      List&lt;TableDescriptor&gt; descriptors =</span>
+<span class="source-line-no">1189</span><span id="line-1189">        server.listTableDescriptors(namespace, regex, tableNameList, req.getIncludeSysTables());</span>
+<span class="source-line-no">1190</span><span id="line-1190"></span>
+<span class="source-line-no">1191</span><span id="line-1191">      GetTableDescriptorsResponse.Builder builder = GetTableDescriptorsResponse.newBuilder();</span>
+<span class="source-line-no">1192</span><span id="line-1192">      if (descriptors != null &amp;&amp; descriptors.size() &gt; 0) {</span>
+<span class="source-line-no">1193</span><span id="line-1193">        // Add the table descriptors to the response</span>
+<span class="source-line-no">1194</span><span id="line-1194">        for (TableDescriptor htd : descriptors) {</span>
+<span class="source-line-no">1195</span><span id="line-1195">          builder.addTableSchema(ProtobufUtil.toTableSchema(htd));</span>
+<span class="source-line-no">1196</span><span id="line-1196">        }</span>
+<span class="source-line-no">1197</span><span id="line-1197">      }</span>
+<span class="source-line-no">1198</span><span id="line-1198">      return builder.build();</span>
+<span class="source-line-no">1199</span><span id="line-1199">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1200</span><span id="line-1200">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1201</span><span id="line-1201">    }</span>
+<span class="source-line-no">1202</span><span id="line-1202">  }</span>
+<span class="source-line-no">1203</span><span id="line-1203"></span>
+<span class="source-line-no">1204</span><span id="line-1204">  @Override</span>
+<span class="source-line-no">1205</span><span id="line-1205">  public ListTableDescriptorsByStateResponse listTableDescriptorsByState(RpcController controller,</span>
+<span class="source-line-no">1206</span><span id="line-1206">    ListTableDescriptorsByStateRequest request) throws ServiceException {</span>
+<span class="source-line-no">1207</span><span id="line-1207">    try {</span>
+<span class="source-line-no">1208</span><span id="line-1208">      server.checkInitialized();</span>
+<span class="source-line-no">1209</span><span id="line-1209">      List&lt;TableDescriptor&gt; descriptors = server.listTableDescriptors(null, null, null, false);</span>
+<span class="source-line-no">1210</span><span id="line-1210"></span>
+<span class="source-line-no">1211</span><span id="line-1211">      ListTableDescriptorsByStateResponse.Builder builder =</span>
+<span class="source-line-no">1212</span><span id="line-1212">        ListTableDescriptorsByStateResponse.newBuilder();</span>
+<span class="source-line-no">1213</span><span id="line-1213">      if (descriptors != null &amp;&amp; descriptors.size() &gt; 0) {</span>
+<span class="source-line-no">1214</span><span id="line-1214">        // Add the table descriptors to the response</span>
+<span class="source-line-no">1215</span><span id="line-1215">        TableState.State state =</span>
+<span class="source-line-no">1216</span><span id="line-1216">          request.getIsEnabled() ? TableState.State.ENABLED : TableState.State.DISABLED;</span>
+<span class="source-line-no">1217</span><span id="line-1217">        for (TableDescriptor htd : descriptors) {</span>
+<span class="source-line-no">1218</span><span id="line-1218">          if (server.getTableStateManager().isTableState(htd.getTableName(), state)) {</span>
+<span class="source-line-no">1219</span><span id="line-1219">            builder.addTableSchema(ProtobufUtil.toTableSchema(htd));</span>
+<span class="source-line-no">1220</span><span id="line-1220">          }</span>
+<span class="source-line-no">1221</span><span id="line-1221">        }</span>
+<span class="source-line-no">1222</span><span id="line-1222">      }</span>
+<span class="source-line-no">1223</span><span id="line-1223">      return builder.build();</span>
+<span class="source-line-no">1224</span><span id="line-1224">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1225</span><span id="line-1225">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1226</span><span id="line-1226">    }</span>
+<span class="source-line-no">1227</span><span id="line-1227">  }</span>
+<span class="source-line-no">1228</span><span id="line-1228"></span>
+<span class="source-line-no">1229</span><span id="line-1229">  /**</span>
+<span class="source-line-no">1230</span><span id="line-1230">   * Get list of userspace table names</span>
+<span class="source-line-no">1231</span><span id="line-1231">   * @param controller Unused (set to null).</span>
+<span class="source-line-no">1232</span><span id="line-1232">   * @param req        GetTableNamesRequest</span>
+<span class="source-line-no">1233</span><span id="line-1233">   */</span>
+<span class="source-line-no">1234</span><span id="line-1234">  @Override</span>
+<span class="source-line-no">1235</span><span id="line-1235">  public GetTableNamesResponse getTableNames(RpcController controller, GetTableNamesRequest req)</span>
+<span class="source-line-no">1236</span><span id="line-1236">    throws ServiceException {</span>
+<span class="source-line-no">1237</span><span id="line-1237">    try {</span>
+<span class="source-line-no">1238</span><span id="line-1238">      server.checkServiceStarted();</span>
+<span class="source-line-no">1239</span><span id="line-1239"></span>
+<span class="source-line-no">1240</span><span id="line-1240">      final String regex = req.hasRegex() ? req.getRegex() : null;</span>
+<span class="source-line-no">1241</span><span id="line-1241">      final String namespace = req.hasNamespace() ? req.getNamespace() : null;</span>
+<span class="source-line-no">1242</span><span id="line-1242">      List&lt;TableName&gt; tableNames =</span>
+<span class="source-line-no">1243</span><span id="line-1243">        server.listTableNames(namespace, regex, req.getIncludeSysTables());</span>
+<span class="source-line-no">1244</span><span id="line-1244"></span>
+<span class="source-line-no">1245</span><span id="line-1245">      GetTableNamesResponse.Builder builder = GetTableNamesResponse.newBuilder();</span>
+<span class="source-line-no">1246</span><span id="line-1246">      if (tableNames != null &amp;&amp; tableNames.size() &gt; 0) {</span>
+<span class="source-line-no">1247</span><span id="line-1247">        // Add the table names to the response</span>
+<span class="source-line-no">1248</span><span id="line-1248">        for (TableName table : tableNames) {</span>
+<span class="source-line-no">1249</span><span id="line-1249">          builder.addTableNames(ProtobufUtil.toProtoTableName(table));</span>
+<span class="source-line-no">1250</span><span id="line-1250">        }</span>
+<span class="source-line-no">1251</span><span id="line-1251">      }</span>
+<span class="source-line-no">1252</span><span id="line-1252">      return builder.build();</span>
+<span class="source-line-no">1253</span><span id="line-1253">    } catch (IOException e) {</span>
+<span class="source-line-no">1254</span><span id="line-1254">      throw new ServiceException(e);</span>
+<span class="source-line-no">1255</span><span id="line-1255">    }</span>
+<span class="source-line-no">1256</span><span id="line-1256">  }</span>
+<span class="source-line-no">1257</span><span id="line-1257"></span>
+<span class="source-line-no">1258</span><span id="line-1258">  @Override</span>
+<span class="source-line-no">1259</span><span id="line-1259">  public ListTableNamesByStateResponse listTableNamesByState(RpcController controller,</span>
+<span class="source-line-no">1260</span><span id="line-1260">    ListTableNamesByStateRequest request) throws ServiceException {</span>
+<span class="source-line-no">1261</span><span id="line-1261">    try {</span>
+<span class="source-line-no">1262</span><span id="line-1262">      server.checkServiceStarted();</span>
+<span class="source-line-no">1263</span><span id="line-1263">      List&lt;TableName&gt; tableNames = server.listTableNames(null, null, false);</span>
+<span class="source-line-no">1264</span><span id="line-1264">      ListTableNamesByStateResponse.Builder builder = ListTableNamesByStateResponse.newBuilder();</span>
+<span class="source-line-no">1265</span><span id="line-1265">      if (tableNames != null &amp;&amp; tableNames.size() &gt; 0) {</span>
+<span class="source-line-no">1266</span><span id="line-1266">        // Add the disabled table names to the response</span>
+<span class="source-line-no">1267</span><span id="line-1267">        TableState.State state =</span>
+<span class="source-line-no">1268</span><span id="line-1268">          request.getIsEnabled() ? TableState.State.ENABLED : TableState.State.DISABLED;</span>
+<span class="source-line-no">1269</span><span id="line-1269">        for (TableName table : tableNames) {</span>
+<span class="source-line-no">1270</span><span id="line-1270">          if (server.getTableStateManager().isTableState(table, state)) {</span>
+<span class="source-line-no">1271</span><span id="line-1271">            builder.addTableNames(ProtobufUtil.toProtoTableName(table));</span>
+<span class="source-line-no">1272</span><span id="line-1272">          }</span>
+<span class="source-line-no">1273</span><span id="line-1273">        }</span>
+<span class="source-line-no">1274</span><span id="line-1274">      }</span>
+<span class="source-line-no">1275</span><span id="line-1275">      return builder.build();</span>
+<span class="source-line-no">1276</span><span id="line-1276">    } catch (IOException e) {</span>
+<span class="source-line-no">1277</span><span id="line-1277">      throw new ServiceException(e);</span>
+<span class="source-line-no">1278</span><span id="line-1278">    }</span>
+<span class="source-line-no">1279</span><span id="line-1279">  }</span>
+<span class="source-line-no">1280</span><span id="line-1280"></span>
+<span class="source-line-no">1281</span><span id="line-1281">  @Override</span>
+<span class="source-line-no">1282</span><span id="line-1282">  public GetTableStateResponse getTableState(RpcController controller, GetTableStateRequest request)</span>
+<span class="source-line-no">1283</span><span id="line-1283">    throws ServiceException {</span>
+<span class="source-line-no">1284</span><span id="line-1284">    try {</span>
+<span class="source-line-no">1285</span><span id="line-1285">      server.checkServiceStarted();</span>
+<span class="source-line-no">1286</span><span id="line-1286">      TableName tableName = ProtobufUtil.toTableName(request.getTableName());</span>
+<span class="source-line-no">1287</span><span id="line-1287">      TableState ts = server.getTableStateManager().getTableState(tableName);</span>
+<span class="source-line-no">1288</span><span id="line-1288">      GetTableStateResponse.Builder builder = GetTableStateResponse.newBuilder();</span>
+<span class="source-line-no">1289</span><span id="line-1289">      builder.setTableState(ts.convert());</span>
+<span class="source-line-no">1290</span><span id="line-1290">      return builder.build();</span>
+<span class="source-line-no">1291</span><span id="line-1291">    } catch (IOException e) {</span>
+<span class="source-line-no">1292</span><span id="line-1292">      throw new ServiceException(e);</span>
+<span class="source-line-no">1293</span><span id="line-1293">    }</span>
+<span class="source-line-no">1294</span><span id="line-1294">  }</span>
+<span class="source-line-no">1295</span><span id="line-1295"></span>
+<span class="source-line-no">1296</span><span id="line-1296">  @Override</span>
+<span class="source-line-no">1297</span><span id="line-1297">  public IsCatalogJanitorEnabledResponse isCatalogJanitorEnabled(RpcController c,</span>
+<span class="source-line-no">1298</span><span id="line-1298">    IsCatalogJanitorEnabledRequest req) throws ServiceException {</span>
+<span class="source-line-no">1299</span><span id="line-1299">    return IsCatalogJanitorEnabledResponse.newBuilder().setValue(server.isCatalogJanitorEnabled())</span>
+<span class="source-line-no">1300</span><span id="line-1300">      .build();</span>
+<span class="source-line-no">1301</span><span id="line-1301">  }</span>
+<span class="source-line-no">1302</span><span id="line-1302"></span>
+<span class="source-line-no">1303</span><span id="line-1303">  @Override</span>
+<span class="source-line-no">1304</span><span id="line-1304">  public IsCleanerChoreEnabledResponse isCleanerChoreEnabled(RpcController c,</span>
+<span class="source-line-no">1305</span><span id="line-1305">    IsCleanerChoreEnabledRequest req) throws ServiceException {</span>
+<span class="source-line-no">1306</span><span id="line-1306">    return IsCleanerChoreEnabledResponse.newBuilder().setValue(server.isCleanerChoreEnabled())</span>
+<span class="source-line-no">1307</span><span id="line-1307">      .build();</span>
+<span class="source-line-no">1308</span><span id="line-1308">  }</span>
+<span class="source-line-no">1309</span><span id="line-1309"></span>
+<span class="source-line-no">1310</span><span id="line-1310">  @Override</span>
+<span class="source-line-no">1311</span><span id="line-1311">  public IsMasterRunningResponse isMasterRunning(RpcController c, IsMasterRunningRequest req)</span>
+<span class="source-line-no">1312</span><span id="line-1312">    throws ServiceException {</span>
+<span class="source-line-no">1313</span><span id="line-1313">    try {</span>
+<span class="source-line-no">1314</span><span id="line-1314">      server.checkServiceStarted();</span>
+<span class="source-line-no">1315</span><span id="line-1315">      return IsMasterRunningResponse.newBuilder().setIsMasterRunning(!server.isStopped()).build();</span>
+<span class="source-line-no">1316</span><span id="line-1316">    } catch (IOException e) {</span>
+<span class="source-line-no">1317</span><span id="line-1317">      throw new ServiceException(e);</span>
+<span class="source-line-no">1318</span><span id="line-1318">    }</span>
+<span class="source-line-no">1319</span><span id="line-1319">  }</span>
+<span class="source-line-no">1320</span><span id="line-1320"></span>
+<span class="source-line-no">1321</span><span id="line-1321">  /**</span>
+<span class="source-line-no">1322</span><span id="line-1322">   * Checks if the specified procedure is done.</span>
+<span class="source-line-no">1323</span><span id="line-1323">   * @return true if the procedure is done, false if the procedure is in the process of completing</span>
+<span class="source-line-no">1324</span><span id="line-1324">   * @throws ServiceException if invalid procedure or failed procedure with progress failure reason.</span>
+<span class="source-line-no">1325</span><span id="line-1325">   */</span>
+<span class="source-line-no">1326</span><span id="line-1326">  @Override</span>
+<span class="source-line-no">1327</span><span id="line-1327">  public IsProcedureDoneResponse isProcedureDone(RpcController controller,</span>
+<span class="source-line-no">1328</span><span id="line-1328">    IsProcedureDoneRequest request) throws ServiceException {</span>
+<span class="source-line-no">1329</span><span id="line-1329">    try {</span>
+<span class="source-line-no">1330</span><span id="line-1330">      server.checkInitialized();</span>
+<span class="source-line-no">1331</span><span id="line-1331">      ProcedureDescription desc = request.getProcedure();</span>
+<span class="source-line-no">1332</span><span id="line-1332">      MasterProcedureManager mpm =</span>
+<span class="source-line-no">1333</span><span id="line-1333">        server.getMasterProcedureManagerHost().getProcedureManager(desc.getSignature());</span>
+<span class="source-line-no">1334</span><span id="line-1334">      if (mpm == null) {</span>
+<span class="source-line-no">1335</span><span id="line-1335">        throw new ServiceException("The procedure is not registered: " + desc.getSignature());</span>
+<span class="source-line-no">1336</span><span id="line-1336">      }</span>
+<span class="source-line-no">1337</span><span id="line-1337">      LOG.debug("Checking to see if procedure from request:" + desc.getSignature() + " is done");</span>
+<span class="source-line-no">1338</span><span id="line-1338"></span>
+<span class="source-line-no">1339</span><span id="line-1339">      IsProcedureDoneResponse.Builder builder = IsProcedureDoneResponse.newBuilder();</span>
+<span class="source-line-no">1340</span><span id="line-1340">      boolean done = mpm.isProcedureDone(desc);</span>
+<span class="source-line-no">1341</span><span id="line-1341">      builder.setDone(done);</span>
+<span class="source-line-no">1342</span><span id="line-1342">      return builder.build();</span>
+<span class="source-line-no">1343</span><span id="line-1343">    } catch (ForeignException e) {</span>
+<span class="source-line-no">1344</span><span id="line-1344">      throw new ServiceException(e.getCause());</span>
+<span class="source-line-no">1345</span><span id="line-1345">    } catch (IOException e) {</span>
+<span class="source-line-no">1346</span><span id="line-1346">      throw new ServiceException(e);</span>
+<span class="source-line-no">1347</span><span id="line-1347">    }</span>
+<span class="source-line-no">1348</span><span id="line-1348">  }</span>
+<span class="source-line-no">1349</span><span id="line-1349"></span>
+<span class="source-line-no">1350</span><span id="line-1350">  /**</span>
+<span class="source-line-no">1351</span><span id="line-1351">   * Checks if the specified snapshot is done.</span>
+<span class="source-line-no">1352</span><span id="line-1352">   * @return true if the snapshot is in file system ready to use, false if the snapshot is in the</span>
+<span class="source-line-no">1353</span><span id="line-1353">   *         process of completing</span>
+<span class="source-line-no">1354</span><span id="line-1354">   * @throws ServiceException wrapping UnknownSnapshotException if invalid snapshot, or a wrapped</span>
+<span class="source-line-no">1355</span><span id="line-1355">   *                          HBaseSnapshotException with progress failure reason.</span>
+<span class="source-line-no">1356</span><span id="line-1356">   */</span>
+<span class="source-line-no">1357</span><span id="line-1357">  @Override</span>
+<span class="source-line-no">1358</span><span id="line-1358">  public IsSnapshotDoneResponse isSnapshotDone(RpcController controller,</span>
+<span class="source-line-no">1359</span><span id="line-1359">    IsSnapshotDoneRequest request) throws ServiceException {</span>
+<span class="source-line-no">1360</span><span id="line-1360">    LOG.debug("Checking to see if snapshot from request:"</span>
+<span class="source-line-no">1361</span><span id="line-1361">      + ClientSnapshotDescriptionUtils.toString(request.getSnapshot()) + " is done");</span>
+<span class="source-line-no">1362</span><span id="line-1362">    try {</span>
+<span class="source-line-no">1363</span><span id="line-1363">      server.checkInitialized();</span>
+<span class="source-line-no">1364</span><span id="line-1364">      IsSnapshotDoneResponse.Builder builder = IsSnapshotDoneResponse.newBuilder();</span>
+<span class="source-line-no">1365</span><span id="line-1365">      boolean done = server.snapshotManager.isSnapshotDone(request.getSnapshot());</span>
+<span class="source-line-no">1366</span><span id="line-1366">      builder.setDone(done);</span>
+<span class="source-line-no">1367</span><span id="line-1367">      return builder.build();</span>
+<span class="source-line-no">1368</span><span id="line-1368">    } catch (ForeignException e) {</span>
+<span class="source-line-no">1369</span><span id="line-1369">      throw new ServiceException(e.getCause());</span>
+<span class="source-line-no">1370</span><span id="line-1370">    } catch (IOException e) {</span>
+<span class="source-line-no">1371</span><span id="line-1371">      throw new ServiceException(e);</span>
+<span class="source-line-no">1372</span><span id="line-1372">    }</span>
+<span class="source-line-no">1373</span><span id="line-1373">  }</span>
+<span class="source-line-no">1374</span><span id="line-1374"></span>
+<span class="source-line-no">1375</span><span id="line-1375">  @Override</span>
+<span class="source-line-no">1376</span><span id="line-1376">  public GetProcedureResultResponse getProcedureResult(RpcController controller,</span>
+<span class="source-line-no">1377</span><span id="line-1377">    GetProcedureResultRequest request) throws ServiceException {</span>
+<span class="source-line-no">1378</span><span id="line-1378">    LOG.debug("Checking to see if procedure is done pid={}", request.getProcId());</span>
+<span class="source-line-no">1379</span><span id="line-1379">    try {</span>
+<span class="source-line-no">1380</span><span id="line-1380">      server.checkInitialized();</span>
+<span class="source-line-no">1381</span><span id="line-1381">      GetProcedureResultResponse.Builder builder = GetProcedureResultResponse.newBuilder();</span>
+<span class="source-line-no">1382</span><span id="line-1382">      long procId = request.getProcId();</span>
+<span class="source-line-no">1383</span><span id="line-1383">      ProcedureExecutor&lt;?&gt; executor = server.getMasterProcedureExecutor();</span>
+<span class="source-line-no">1384</span><span id="line-1384">      Procedure&lt;?&gt; result = executor.getResultOrProcedure(procId);</span>
+<span class="source-line-no">1385</span><span id="line-1385">      if (result != null) {</span>
+<span class="source-line-no">1386</span><span id="line-1386">        builder.setSubmittedTime(result.getSubmittedTime());</span>
+<span class="source-line-no">1387</span><span id="line-1387">        builder.setLastUpdate(result.getLastUpdate());</span>
+<span class="source-line-no">1388</span><span id="line-1388">        if (executor.isFinished(procId)) {</span>
+<span class="source-line-no">1389</span><span id="line-1389">          builder.setState(GetProcedureResultResponse.State.FINISHED);</span>
+<span class="source-line-no">1390</span><span id="line-1390">          if (result.isFailed()) {</span>
+<span class="source-line-no">1391</span><span id="line-1391">            IOException exception = MasterProcedureUtil.unwrapRemoteIOException(result);</span>
+<span class="source-line-no">1392</span><span id="line-1392">            builder.setException(ForeignExceptionUtil.toProtoForeignException(exception));</span>
+<span class="source-line-no">1393</span><span id="line-1393">          }</span>
+<span class="source-line-no">1394</span><span id="line-1394">          byte[] resultData = result.getResult();</span>
+<span class="source-line-no">1395</span><span id="line-1395">          if (resultData != null) {</span>
+<span class="source-line-no">1396</span><span id="line-1396">            builder.setResult(UnsafeByteOperations.unsafeWrap(resultData));</span>
+<span class="source-line-no">1397</span><span id="line-1397">          }</span>
+<span class="source-line-no">1398</span><span id="line-1398">          server.getMasterProcedureExecutor().removeResult(request.getProcId());</span>
+<span class="source-line-no">1399</span><span id="line-1399">        } else {</span>
+<span class="source-line-no">1400</span><span id="line-1400">          builder.setState(GetProcedureResultResponse.State.RUNNING);</span>
+<span class="source-line-no">1401</span><span id="line-1401">        }</span>
+<span class="source-line-no">1402</span><span id="line-1402">      } else {</span>
+<span class="source-line-no">1403</span><span id="line-1403">        builder.setState(GetProcedureResultResponse.State.NOT_FOUND);</span>
+<span class="source-line-no">1404</span><span id="line-1404">      }</span>
+<span class="source-line-no">1405</span><span id="line-1405">      return builder.build();</span>
+<span class="source-line-no">1406</span><span id="line-1406">    } catch (IOException e) {</span>
+<span class="source-line-no">1407</span><span id="line-1407">      throw new ServiceException(e);</span>
+<span class="source-line-no">1408</span><span id="line-1408">    }</span>
+<span class="source-line-no">1409</span><span id="line-1409">  }</span>
+<span class="source-line-no">1410</span><span id="line-1410"></span>
+<span class="source-line-no">1411</span><span id="line-1411">  @Override</span>
+<span class="source-line-no">1412</span><span id="line-1412">  public AbortProcedureResponse abortProcedure(RpcController rpcController,</span>
+<span class="source-line-no">1413</span><span id="line-1413">    AbortProcedureRequest request) throws ServiceException {</span>
+<span class="source-line-no">1414</span><span id="line-1414">    try {</span>
+<span class="source-line-no">1415</span><span id="line-1415">      AbortProcedureResponse.Builder response = AbortProcedureResponse.newBuilder();</span>
+<span class="source-line-no">1416</span><span id="line-1416">      boolean abortResult =</span>
+<span class="source-line-no">1417</span><span id="line-1417">        server.abortProcedure(request.getProcId(), request.getMayInterruptIfRunning());</span>
+<span class="source-line-no">1418</span><span id="line-1418">      response.setIsProcedureAborted(abortResult);</span>
+<span class="source-line-no">1419</span><span id="line-1419">      return response.build();</span>
+<span class="source-line-no">1420</span><span id="line-1420">    } catch (IOException e) {</span>
+<span class="source-line-no">1421</span><span id="line-1421">      throw new ServiceException(e);</span>
+<span class="source-line-no">1422</span><span id="line-1422">    }</span>
+<span class="source-line-no">1423</span><span id="line-1423">  }</span>
+<span class="source-line-no">1424</span><span id="line-1424"></span>
+<span class="source-line-no">1425</span><span id="line-1425">  @Override</span>
+<span class="source-line-no">1426</span><span id="line-1426">  public ListNamespaceDescriptorsResponse listNamespaceDescriptors(RpcController c,</span>
+<span class="source-line-no">1427</span><span id="line-1427">    ListNamespaceDescriptorsRequest request) throws ServiceException {</span>
+<span class="source-line-no">1428</span><span id="line-1428">    try {</span>
+<span class="source-line-no">1429</span><span id="line-1429">      ListNamespaceDescriptorsResponse.Builder response =</span>
+<span class="source-line-no">1430</span><span id="line-1430">        ListNamespaceDescriptorsResponse.newBuilder();</span>
+<span class="source-line-no">1431</span><span id="line-1431">      for (NamespaceDescriptor ns : server.getNamespaces()) {</span>
+<span class="source-line-no">1432</span><span id="line-1432">        response.addNamespaceDescriptor(ProtobufUtil.toProtoNamespaceDescriptor(ns));</span>
+<span class="source-line-no">1433</span><span id="line-1433">      }</span>
+<span class="source-line-no">1434</span><span id="line-1434">      return response.build();</span>
+<span class="source-line-no">1435</span><span id="line-1435">    } catch (IOException e) {</span>
+<span class="source-line-no">1436</span><span id="line-1436">      throw new ServiceException(e);</span>
+<span class="source-line-no">1437</span><span id="line-1437">    }</span>
+<span class="source-line-no">1438</span><span id="line-1438">  }</span>
+<span class="source-line-no">1439</span><span id="line-1439"></span>
+<span class="source-line-no">1440</span><span id="line-1440">  @Override</span>
+<span class="source-line-no">1441</span><span id="line-1441">  public GetProceduresResponse getProcedures(RpcController rpcController,</span>
+<span class="source-line-no">1442</span><span id="line-1442">    GetProceduresRequest request) throws ServiceException {</span>
+<span class="source-line-no">1443</span><span id="line-1443">    try {</span>
+<span class="source-line-no">1444</span><span id="line-1444">      final GetProceduresResponse.Builder response = GetProceduresResponse.newBuilder();</span>
+<span class="source-line-no">1445</span><span id="line-1445">      for (Procedure&lt;?&gt; p : server.getProcedures()) {</span>
+<span class="source-line-no">1446</span><span id="line-1446">        response.addProcedure(ProcedureUtil.convertToProtoProcedure(p));</span>
+<span class="source-line-no">1447</span><span id="line-1447">      }</span>
+<span class="source-line-no">1448</span><span id="line-1448">      return response.build();</span>
+<span class="source-line-no">1449</span><span id="line-1449">    } catch (IOException e) {</span>
+<span class="source-line-no">1450</span><span id="line-1450">      throw new ServiceException(e);</span>
+<span class="source-line-no">1451</span><span id="line-1451">    }</span>
+<span class="source-line-no">1452</span><span id="line-1452">  }</span>
+<span class="source-line-no">1453</span><span id="line-1453"></span>
+<span class="source-line-no">1454</span><span id="line-1454">  @Override</span>
+<span class="source-line-no">1455</span><span id="line-1455">  public GetLocksResponse getLocks(RpcController controller, GetLocksRequest request)</span>
+<span class="source-line-no">1456</span><span id="line-1456">    throws ServiceException {</span>
+<span class="source-line-no">1457</span><span id="line-1457">    try {</span>
+<span class="source-line-no">1458</span><span id="line-1458">      final GetLocksResponse.Builder builder = GetLocksResponse.newBuilder();</span>
+<span class="source-line-no">1459</span><span id="line-1459"></span>
+<span class="source-line-no">1460</span><span id="line-1460">      for (LockedResource lockedResource : server.getLocks()) {</span>
+<span class="source-line-no">1461</span><span id="line-1461">        builder.addLock(ProcedureUtil.convertToProtoLockedResource(lockedResource));</span>
+<span class="source-line-no">1462</span><span id="line-1462">      }</span>
+<span class="source-line-no">1463</span><span id="line-1463"></span>
+<span class="source-line-no">1464</span><span id="line-1464">      return builder.build();</span>
+<span class="source-line-no">1465</span><span id="line-1465">    } catch (IOException e) {</span>
+<span class="source-line-no">1466</span><span id="line-1466">      throw new ServiceException(e);</span>
+<span class="source-line-no">1467</span><span id="line-1467">    }</span>
+<span class="source-line-no">1468</span><span id="line-1468">  }</span>
+<span class="source-line-no">1469</span><span id="line-1469"></span>
+<span class="source-line-no">1470</span><span id="line-1470">  @Override</span>
+<span class="source-line-no">1471</span><span id="line-1471">  public ListTableDescriptorsByNamespaceResponse listTableDescriptorsByNamespace(RpcController c,</span>
+<span class="source-line-no">1472</span><span id="line-1472">    ListTableDescriptorsByNamespaceRequest request) throws ServiceException {</span>
+<span class="source-line-no">1473</span><span id="line-1473">    try {</span>
+<span class="source-line-no">1474</span><span id="line-1474">      ListTableDescriptorsByNamespaceResponse.Builder b =</span>
+<span class="source-line-no">1475</span><span id="line-1475">        ListTableDescriptorsByNamespaceResponse.newBuilder();</span>
+<span class="source-line-no">1476</span><span id="line-1476">      for (TableDescriptor htd : server</span>
+<span class="source-line-no">1477</span><span id="line-1477">        .listTableDescriptorsByNamespace(request.getNamespaceName())) {</span>
+<span class="source-line-no">1478</span><span id="line-1478">        b.addTableSchema(ProtobufUtil.toTableSchema(htd));</span>
+<span class="source-line-no">1479</span><span id="line-1479">      }</span>
+<span class="source-line-no">1480</span><span id="line-1480">      return b.build();</span>
+<span class="source-line-no">1481</span><span id="line-1481">    } catch (IOException e) {</span>
+<span class="source-line-no">1482</span><span id="line-1482">      throw new ServiceException(e);</span>
+<span class="source-line-no">1483</span><span id="line-1483">    }</span>
+<span class="source-line-no">1484</span><span id="line-1484">  }</span>
+<span class="source-line-no">1485</span><span id="line-1485"></span>
+<span class="source-line-no">1486</span><span id="line-1486">  @Override</span>
+<span class="source-line-no">1487</span><span id="line-1487">  public ListTableNamesByNamespaceResponse listTableNamesByNamespace(RpcController c,</span>
+<span class="source-line-no">1488</span><span id="line-1488">    ListTableNamesByNamespaceRequest request) throws ServiceException {</span>
+<span class="source-line-no">1489</span><span id="line-1489">    try {</span>
+<span class="source-line-no">1490</span><span id="line-1490">      ListTableNamesByNamespaceResponse.Builder b = ListTableNamesByNamespaceResponse.newBuilder();</span>
+<span class="source-line-no">1491</span><span id="line-1491">      for (TableName tableName : server.listTableNamesByNamespace(request.getNamespaceName())) {</span>
+<span class="source-line-no">1492</span><span id="line-1492">        b.addTableName(ProtobufUtil.toProtoTableName(tableName));</span>
+<span class="source-line-no">1493</span><span id="line-1493">      }</span>
+<span class="source-line-no">1494</span><span id="line-1494">      return b.build();</span>
+<span class="source-line-no">1495</span><span id="line-1495">    } catch (IOException e) {</span>
+<span class="source-line-no">1496</span><span id="line-1496">      throw new ServiceException(e);</span>
+<span class="source-line-no">1497</span><span id="line-1497">    }</span>
+<span class="source-line-no">1498</span><span id="line-1498">  }</span>
+<span class="source-line-no">1499</span><span id="line-1499"></span>
+<span class="source-line-no">1500</span><span id="line-1500">  @Override</span>
+<span class="source-line-no">1501</span><span id="line-1501">  public ModifyColumnResponse modifyColumn(RpcController controller, ModifyColumnRequest req)</span>
+<span class="source-line-no">1502</span><span id="line-1502">    throws ServiceException {</span>
+<span class="source-line-no">1503</span><span id="line-1503">    try {</span>
+<span class="source-line-no">1504</span><span id="line-1504">      long procId = server.modifyColumn(ProtobufUtil.toTableName(req.getTableName()),</span>
+<span class="source-line-no">1505</span><span id="line-1505">        ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()), req.getNonceGroup(),</span>
+<span class="source-line-no">1506</span><span id="line-1506">        req.getNonce());</span>
+<span class="source-line-no">1507</span><span id="line-1507">      if (procId == -1) {</span>
+<span class="source-line-no">1508</span><span id="line-1508">        // This mean operation was not performed in server, so do not set any procId</span>
+<span class="source-line-no">1509</span><span id="line-1509">        return ModifyColumnResponse.newBuilder().build();</span>
+<span class="source-line-no">1510</span><span id="line-1510">      } else {</span>
+<span class="source-line-no">1511</span><span id="line-1511">        return ModifyColumnResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">1512</span><span id="line-1512">      }</span>
+<span class="source-line-no">1513</span><span id="line-1513">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1514</span><span id="line-1514">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1515</span><span id="line-1515">    }</span>
+<span class="source-line-no">1516</span><span id="line-1516">  }</span>
+<span class="source-line-no">1517</span><span id="line-1517"></span>
+<span class="source-line-no">1518</span><span id="line-1518">  @Override</span>
+<span class="source-line-no">1519</span><span id="line-1519">  public ModifyColumnStoreFileTrackerResponse modifyColumnStoreFileTracker(RpcController controller,</span>
+<span class="source-line-no">1520</span><span id="line-1520">    ModifyColumnStoreFileTrackerRequest req) throws ServiceException {</span>
+<span class="source-line-no">1521</span><span id="line-1521">    try {</span>
+<span class="source-line-no">1522</span><span id="line-1522">      long procId =</span>
+<span class="source-line-no">1523</span><span id="line-1523">        server.modifyColumnStoreFileTracker(ProtobufUtil.toTableName(req.getTableName()),</span>
+<span class="source-line-no">1524</span><span id="line-1524">          req.getFamily().toByteArray(), req.getDstSft(), req.getNonceGroup(), req.getNonce());</span>
+<span class="source-line-no">1525</span><span id="line-1525">      return ModifyColumnStoreFileTrackerResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">1526</span><span id="line-1526">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1527</span><span id="line-1527">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1528</span><span id="line-1528">    }</span>
+<span class="source-line-no">1529</span><span id="line-1529">  }</span>
+<span class="source-line-no">1530</span><span id="line-1530"></span>
+<span class="source-line-no">1531</span><span id="line-1531">  @Override</span>
+<span class="source-line-no">1532</span><span id="line-1532">  public ModifyNamespaceResponse modifyNamespace(RpcController controller,</span>
+<span class="source-line-no">1533</span><span id="line-1533">    ModifyNamespaceRequest request) throws ServiceException {</span>
+<span class="source-line-no">1534</span><span id="line-1534">    try {</span>
+<span class="source-line-no">1535</span><span id="line-1535">      long procId =</span>
+<span class="source-line-no">1536</span><span id="line-1536">        server.modifyNamespace(ProtobufUtil.toNamespaceDescriptor(request.getNamespaceDescriptor()),</span>
+<span class="source-line-no">1537</span><span id="line-1537">          request.getNonceGroup(), request.getNonce());</span>
+<span class="source-line-no">1538</span><span id="line-1538">      return ModifyNamespaceResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">1539</span><span id="line-1539">    } catch (IOException e) {</span>
+<span class="source-line-no">1540</span><span id="line-1540">      throw new ServiceException(e);</span>
+<span class="source-line-no">1541</span><span id="line-1541">    }</span>
+<span class="source-line-no">1542</span><span id="line-1542">  }</span>
+<span class="source-line-no">1543</span><span id="line-1543"></span>
+<span class="source-line-no">1544</span><span id="line-1544">  @Override</span>
+<span class="source-line-no">1545</span><span id="line-1545">  public ModifyTableResponse modifyTable(RpcController controller, ModifyTableRequest req)</span>
+<span class="source-line-no">1546</span><span id="line-1546">    throws ServiceException {</span>
+<span class="source-line-no">1547</span><span id="line-1547">    try {</span>
+<span class="source-line-no">1548</span><span id="line-1548">      long procId = server.modifyTable(ProtobufUtil.toTableName(req.getTableName()),</span>
+<span class="source-line-no">1549</span><span id="line-1549">        ProtobufUtil.toTableDescriptor(req.getTableSchema()), req.getNonceGroup(), req.getNonce(),</span>
+<span class="source-line-no">1550</span><span id="line-1550">        req.getReopenRegions());</span>
+<span class="source-line-no">1551</span><span id="line-1551">      return ModifyTableResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">1552</span><span id="line-1552">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1553</span><span id="line-1553">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1554</span><span id="line-1554">    }</span>
+<span class="source-line-no">1555</span><span id="line-1555">  }</span>
+<span class="source-line-no">1556</span><span id="line-1556"></span>
+<span class="source-line-no">1557</span><span id="line-1557">  @Override</span>
+<span class="source-line-no">1558</span><span id="line-1558">  public ModifyTableStoreFileTrackerResponse modifyTableStoreFileTracker(RpcController controller,</span>
+<span class="source-line-no">1559</span><span id="line-1559">    ModifyTableStoreFileTrackerRequest req) throws ServiceException {</span>
+<span class="source-line-no">1560</span><span id="line-1560">    try {</span>
+<span class="source-line-no">1561</span><span id="line-1561">      long procId = server.modifyTableStoreFileTracker(ProtobufUtil.toTableName(req.getTableName()),</span>
+<span class="source-line-no">1562</span><span id="line-1562">        req.getDstSft(), req.getNonceGroup(), req.getNonce());</span>
+<span class="source-line-no">1563</span><span id="line-1563">      return ModifyTableStoreFileTrackerResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">1564</span><span id="line-1564">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1565</span><span id="line-1565">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1566</span><span id="line-1566">    }</span>
+<span class="source-line-no">1567</span><span id="line-1567">  }</span>
+<span class="source-line-no">1568</span><span id="line-1568"></span>
+<span class="source-line-no">1569</span><span id="line-1569">  @Override</span>
+<span class="source-line-no">1570</span><span id="line-1570">  public MoveRegionResponse moveRegion(RpcController controller, MoveRegionRequest req)</span>
+<span class="source-line-no">1571</span><span id="line-1571">    throws ServiceException {</span>
+<span class="source-line-no">1572</span><span id="line-1572">    final byte[] encodedRegionName = req.getRegion().getValue().toByteArray();</span>
+<span class="source-line-no">1573</span><span id="line-1573">    RegionSpecifierType type = req.getRegion().getType();</span>
+<span class="source-line-no">1574</span><span id="line-1574">    final byte[] destServerName = (req.hasDestServerName())</span>
+<span class="source-line-no">1575</span><span id="line-1575">      ? Bytes.toBytes(ProtobufUtil.toServerName(req.getDestServerName()).getServerName())</span>
+<span class="source-line-no">1576</span><span id="line-1576">      : null;</span>
+<span class="source-line-no">1577</span><span id="line-1577">    MoveRegionResponse mrr = MoveRegionResponse.newBuilder().build();</span>
+<span class="source-line-no">1578</span><span id="line-1578"></span>
+<span class="source-line-no">1579</span><span id="line-1579">    if (type != RegionSpecifierType.ENCODED_REGION_NAME) {</span>
+<span class="source-line-no">1580</span><span id="line-1580">      LOG.warn("moveRegion specifier type: expected: " + RegionSpecifierType.ENCODED_REGION_NAME</span>
+<span class="source-line-no">1581</span><span id="line-1581">        + " actual: " + type);</span>
+<span class="source-line-no">1582</span><span id="line-1582">    }</span>
+<span class="source-line-no">1583</span><span id="line-1583"></span>
+<span class="source-line-no">1584</span><span id="line-1584">    try {</span>
+<span class="source-line-no">1585</span><span id="line-1585">      server.checkInitialized();</span>
+<span class="source-line-no">1586</span><span id="line-1586">      server.move(encodedRegionName, destServerName);</span>
+<span class="source-line-no">1587</span><span id="line-1587">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1588</span><span id="line-1588">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1589</span><span id="line-1589">    }</span>
+<span class="source-line-no">1590</span><span id="line-1590">    return mrr;</span>
+<span class="source-line-no">1591</span><span id="line-1591">  }</span>
+<span class="source-line-no">1592</span><span id="line-1592"></span>
+<span class="source-line-no">1593</span><span id="line-1593">  /**</span>
+<span class="source-line-no">1594</span><span id="line-1594">   * Offline specified region from master's in-memory state. It will not attempt to reassign the</span>
+<span class="source-line-no">1595</span><span id="line-1595">   * region as in unassign. This is a special method that should be used by experts or hbck.</span>
+<span class="source-line-no">1596</span><span id="line-1596">   */</span>
+<span class="source-line-no">1597</span><span id="line-1597">  @Override</span>
+<span class="source-line-no">1598</span><span id="line-1598">  public OfflineRegionResponse offlineRegion(RpcController controller, OfflineRegionRequest request)</span>
+<span class="source-line-no">1599</span><span id="line-1599">    throws ServiceException {</span>
+<span class="source-line-no">1600</span><span id="line-1600">    try {</span>
+<span class="source-line-no">1601</span><span id="line-1601">      server.checkInitialized();</span>
+<span class="source-line-no">1602</span><span id="line-1602"></span>
+<span class="source-line-no">1603</span><span id="line-1603">      final RegionSpecifierType type = request.getRegion().getType();</span>
+<span class="source-line-no">1604</span><span id="line-1604">      if (type != RegionSpecifierType.REGION_NAME) {</span>
+<span class="source-line-no">1605</span><span id="line-1605">        LOG.warn("moveRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME</span>
+<span class="source-line-no">1606</span><span id="line-1606">          + " actual: " + type);</span>
+<span class="source-line-no">1607</span><span id="line-1607">      }</span>
+<span class="source-line-no">1608</span><span id="line-1608"></span>
+<span class="source-line-no">1609</span><span id="line-1609">      final byte[] regionName = request.getRegion().getValue().toByteArray();</span>
+<span class="source-line-no">1610</span><span id="line-1610">      final RegionInfo hri = server.getAssignmentManager().getRegionInfo(regionName);</span>
+<span class="source-line-no">1611</span><span id="line-1611">      if (hri == null) {</span>
+<span class="source-line-no">1612</span><span id="line-1612">        throw new UnknownRegionException(Bytes.toStringBinary(regionName));</span>
+<span class="source-line-no">1613</span><span id="line-1613">      }</span>
+<span class="source-line-no">1614</span><span id="line-1614"></span>
+<span class="source-line-no">1615</span><span id="line-1615">      if (server.cpHost != null) {</span>
+<span class="source-line-no">1616</span><span id="line-1616">        server.cpHost.preRegionOffline(hri);</span>
+<span class="source-line-no">1617</span><span id="line-1617">      }</span>
+<span class="source-line-no">1618</span><span id="line-1618">      LOG.info(server.getClientIdAuditPrefix() + " offline " + hri.getRegionNameAsString());</span>
+<span class="source-line-no">1619</span><span id="line-1619">      server.getAssignmentManager().offlineRegion(hri);</span>
+<span class="source-line-no">1620</span><span id="line-1620">      if (server.cpHost != null) {</span>
+<span class="source-line-no">1621</span><span id="line-1621">        server.cpHost.postRegionOffline(hri);</span>
+<span class="source-line-no">1622</span><span id="line-1622">      }</span>
+<span class="source-line-no">1623</span><span id="line-1623">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1624</span><span id="line-1624">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1625</span><span id="line-1625">    }</span>
+<span class="source-line-no">1626</span><span id="line-1626">    return OfflineRegionResponse.newBuilder().build();</span>
+<span class="source-line-no">1627</span><span id="line-1627">  }</span>
+<span class="source-line-no">1628</span><span id="line-1628"></span>
+<span class="source-line-no">1629</span><span id="line-1629">  /**</span>
+<span class="source-line-no">1630</span><span id="line-1630">   * Execute Restore/Clone snapshot operation.</span>
+<span class="source-line-no">1631</span><span id="line-1631">   * &lt;p&gt;</span>
+<span class="source-line-no">1632</span><span id="line-1632">   * If the specified table exists a "Restore" is executed, replacing the table schema and directory</span>
+<span class="source-line-no">1633</span><span id="line-1633">   * data with the content of the snapshot. The table must be disabled, or a</span>
+<span class="source-line-no">1634</span><span id="line-1634">   * UnsupportedOperationException will be thrown.</span>
+<span class="source-line-no">1635</span><span id="line-1635">   * &lt;p&gt;</span>
+<span class="source-line-no">1636</span><span id="line-1636">   * If the table doesn't exist a "Clone" is executed, a new table is created using the schema at</span>
+<span class="source-line-no">1637</span><span id="line-1637">   * the time of the snapshot, and the content of the snapshot.</span>
+<span class="source-line-no">1638</span><span id="line-1638">   * &lt;p&gt;</span>
+<span class="source-line-no">1639</span><span id="line-1639">   * The restore/clone operation does not require copying HFiles. Since HFiles are immutable the</span>
+<span class="source-line-no">1640</span><span id="line-1640">   * table can point to and use the same files as the original one.</span>
+<span class="source-line-no">1641</span><span id="line-1641">   */</span>
+<span class="source-line-no">1642</span><span id="line-1642">  @Override</span>
+<span class="source-line-no">1643</span><span id="line-1643">  public RestoreSnapshotResponse restoreSnapshot(RpcController controller,</span>
+<span class="source-line-no">1644</span><span id="line-1644">    RestoreSnapshotRequest request) throws ServiceException {</span>
+<span class="source-line-no">1645</span><span id="line-1645">    try {</span>
+<span class="source-line-no">1646</span><span id="line-1646">      long procId = server.restoreSnapshot(request.getSnapshot(), request.getNonceGroup(),</span>
+<span class="source-line-no">1647</span><span id="line-1647">        request.getNonce(), request.getRestoreACL(), request.getCustomSFT());</span>
+<span class="source-line-no">1648</span><span id="line-1648">      return RestoreSnapshotResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">1649</span><span id="line-1649">    } catch (ForeignException e) {</span>
+<span class="source-line-no">1650</span><span id="line-1650">      throw new ServiceException(e.getCause());</span>
+<span class="source-line-no">1651</span><span id="line-1651">    } catch (IOException e) {</span>
+<span class="source-line-no">1652</span><span id="line-1652">      throw new ServiceException(e);</span>
+<span class="source-line-no">1653</span><span id="line-1653">    }</span>
+<span class="source-line-no">1654</span><span id="line-1654">  }</span>
+<span class="source-line-no">1655</span><span id="line-1655"></span>
+<span class="source-line-no">1656</span><span id="line-1656">  @Override</span>
+<span class="source-line-no">1657</span><span id="line-1657">  public SetSnapshotCleanupResponse switchSnapshotCleanup(RpcController controller,</span>
+<span class="source-line-no">1658</span><span id="line-1658">    SetSnapshotCleanupRequest request) throws ServiceException {</span>
+<span class="source-line-no">1659</span><span id="line-1659">    try {</span>
+<span class="source-line-no">1660</span><span id="line-1660">      server.checkInitialized();</span>
+<span class="source-line-no">1661</span><span id="line-1661">      final boolean enabled = request.getEnabled();</span>
+<span class="source-line-no">1662</span><span id="line-1662">      final boolean isSynchronous = request.hasSynchronous() &amp;&amp; request.getSynchronous();</span>
+<span class="source-line-no">1663</span><span id="line-1663">      final boolean prevSnapshotCleanupRunning = this.switchSnapshotCleanup(enabled, isSynchronous);</span>
+<span class="source-line-no">1664</span><span id="line-1664">      return SetSnapshotCleanupResponse.newBuilder()</span>
+<span class="source-line-no">1665</span><span id="line-1665">        .setPrevSnapshotCleanup(prevSnapshotCleanupRunning).build();</span>
+<span class="source-line-no">1666</span><span id="line-1666">    } catch (IOException e) {</span>
+<span class="source-line-no">1667</span><span id="line-1667">      throw new ServiceException(e);</span>
+<span class="source-line-no">1668</span><span id="line-1668">    }</span>
+<span class="source-line-no">1669</span><span id="line-1669">  }</span>
+<span class="source-line-no">1670</span><span id="line-1670"></span>
+<span class="source-line-no">1671</span><span id="line-1671">  @Override</span>
+<span class="source-line-no">1672</span><span id="line-1672">  public IsSnapshotCleanupEnabledResponse isSnapshotCleanupEnabled(RpcController controller,</span>
+<span class="source-line-no">1673</span><span id="line-1673">    IsSnapshotCleanupEnabledRequest request) throws ServiceException {</span>
+<span class="source-line-no">1674</span><span id="line-1674">    try {</span>
+<span class="source-line-no">1675</span><span id="line-1675">      server.checkInitialized();</span>
+<span class="source-line-no">1676</span><span id="line-1676">      final boolean isSnapshotCleanupEnabled = server.snapshotCleanupStateStore.get();</span>
+<span class="source-line-no">1677</span><span id="line-1677">      return IsSnapshotCleanupEnabledResponse.newBuilder().setEnabled(isSnapshotCleanupEnabled)</span>
+<span class="source-line-no">1678</span><span id="line-1678">        .build();</span>
+<span class="source-line-no">1679</span><span id="line-1679">    } catch (IOException e) {</span>
+<span class="source-line-no">1680</span><span id="line-1680">      throw new ServiceException(e);</span>
+<span class="source-line-no">1681</span><span id="line-1681">    }</span>
+<span class="source-line-no">1682</span><span id="line-1682">  }</span>
+<span class="source-line-no">1683</span><span id="line-1683"></span>
+<span class="source-line-no">1684</span><span id="line-1684">  /**</span>
+<span class="source-line-no">1685</span><span id="line-1685">   * Turn on/off snapshot auto-cleanup based on TTL</span>
+<span class="source-line-no">1686</span><span id="line-1686">   * @param enabledNewVal Set to &lt;code&gt;true&lt;/code&gt; to enable, &lt;code&gt;false&lt;/code&gt; to disable</span>
+<span class="source-line-no">1687</span><span id="line-1687">   * @param synchronous   If &lt;code&gt;true&lt;/code&gt;, it waits until current snapshot cleanup is</span>
+<span class="source-line-no">1688</span><span id="line-1688">   *                      completed, if outstanding</span>
+<span class="source-line-no">1689</span><span id="line-1689">   * @return previous snapshot auto-cleanup mode</span>
+<span class="source-line-no">1690</span><span id="line-1690">   */</span>
+<span class="source-line-no">1691</span><span id="line-1691">  private synchronized boolean switchSnapshotCleanup(final boolean enabledNewVal,</span>
+<span class="source-line-no">1692</span><span id="line-1692">    final boolean synchronous) throws IOException {</span>
+<span class="source-line-no">1693</span><span id="line-1693">    final boolean oldValue = server.snapshotCleanupStateStore.get();</span>
+<span class="source-line-no">1694</span><span id="line-1694">    server.switchSnapshotCleanup(enabledNewVal, synchronous);</span>
+<span class="source-line-no">1695</span><span id="line-1695">    LOG.info("{} Successfully set snapshot cleanup to {}", server.getClientIdAuditPrefix(),</span>
+<span class="source-line-no">1696</span><span id="line-1696">      enabledNewVal);</span>
+<span class="source-line-no">1697</span><span id="line-1697">    return oldValue;</span>
+<span class="source-line-no">1698</span><span id="line-1698">  }</span>
+<span class="source-line-no">1699</span><span id="line-1699"></span>
+<span class="source-line-no">1700</span><span id="line-1700">  @Override</span>
+<span class="source-line-no">1701</span><span id="line-1701">  public RunCatalogScanResponse runCatalogScan(RpcController c, RunCatalogScanRequest req)</span>
+<span class="source-line-no">1702</span><span id="line-1702">    throws ServiceException {</span>
+<span class="source-line-no">1703</span><span id="line-1703">    rpcPreCheck("runCatalogScan");</span>
+<span class="source-line-no">1704</span><span id="line-1704">    try {</span>
+<span class="source-line-no">1705</span><span id="line-1705">      return ResponseConverter.buildRunCatalogScanResponse(this.server.catalogJanitorChore.scan());</span>
+<span class="source-line-no">1706</span><span id="line-1706">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1707</span><span id="line-1707">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1708</span><span id="line-1708">    }</span>
+<span class="source-line-no">1709</span><span id="line-1709">  }</span>
+<span class="source-line-no">1710</span><span id="line-1710"></span>
+<span class="source-line-no">1711</span><span id="line-1711">  @Override</span>
+<span class="source-line-no">1712</span><span id="line-1712">  public RunCleanerChoreResponse runCleanerChore(RpcController c, RunCleanerChoreRequest req)</span>
+<span class="source-line-no">1713</span><span id="line-1713">    throws ServiceException {</span>
+<span class="source-line-no">1714</span><span id="line-1714">    rpcPreCheck("runCleanerChore");</span>
+<span class="source-line-no">1715</span><span id="line-1715">    try {</span>
+<span class="source-line-no">1716</span><span id="line-1716">      CompletableFuture&lt;Boolean&gt; fileCleanerFuture = server.getHFileCleaner().triggerCleanerNow();</span>
+<span class="source-line-no">1717</span><span id="line-1717">      CompletableFuture&lt;Boolean&gt; logCleanerFuture = server.getLogCleaner().triggerCleanerNow();</span>
+<span class="source-line-no">1718</span><span id="line-1718">      boolean result = fileCleanerFuture.get() &amp;&amp; logCleanerFuture.get();</span>
+<span class="source-line-no">1719</span><span id="line-1719">      return ResponseConverter.buildRunCleanerChoreResponse(result);</span>
+<span class="source-line-no">1720</span><span id="line-1720">    } catch (InterruptedException e) {</span>
+<span class="source-line-no">1721</span><span id="line-1721">      throw new ServiceException(e);</span>
+<span class="source-line-no">1722</span><span id="line-1722">    } catch (ExecutionException e) {</span>
+<span class="source-line-no">1723</span><span id="line-1723">      throw new ServiceException(e.getCause());</span>
+<span class="source-line-no">1724</span><span id="line-1724">    }</span>
+<span class="source-line-no">1725</span><span id="line-1725">  }</span>
+<span class="source-line-no">1726</span><span id="line-1726"></span>
+<span class="source-line-no">1727</span><span id="line-1727">  @Override</span>
+<span class="source-line-no">1728</span><span id="line-1728">  public SetBalancerRunningResponse setBalancerRunning(RpcController c,</span>
+<span class="source-line-no">1729</span><span id="line-1729">    SetBalancerRunningRequest req) throws ServiceException {</span>
+<span class="source-line-no">1730</span><span id="line-1730">    try {</span>
+<span class="source-line-no">1731</span><span id="line-1731">      server.checkInitialized();</span>
+<span class="source-line-no">1732</span><span id="line-1732">      boolean prevValue = (req.getSynchronous())</span>
+<span class="source-line-no">1733</span><span id="line-1733">        ? synchronousBalanceSwitch(req.getOn())</span>
+<span class="source-line-no">1734</span><span id="line-1734">        : server.balanceSwitch(req.getOn());</span>
+<span class="source-line-no">1735</span><span id="line-1735">      return SetBalancerRunningResponse.newBuilder().setPrevBalanceValue(prevValue).build();</span>
+<span class="source-line-no">1736</span><span id="line-1736">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1737</span><span id="line-1737">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1738</span><span id="line-1738">    }</span>
+<span class="source-line-no">1739</span><span id="line-1739">  }</span>
+<span class="source-line-no">1740</span><span id="line-1740"></span>
+<span class="source-line-no">1741</span><span id="line-1741">  @Override</span>
+<span class="source-line-no">1742</span><span id="line-1742">  public ShutdownResponse shutdown(RpcController controller, ShutdownRequest request)</span>
+<span class="source-line-no">1743</span><span id="line-1743">    throws ServiceException {</span>
+<span class="source-line-no">1744</span><span id="line-1744">    LOG.info(server.getClientIdAuditPrefix() + " shutdown");</span>
+<span class="source-line-no">1745</span><span id="line-1745">    try {</span>
+<span class="source-line-no">1746</span><span id="line-1746">      server.shutdown();</span>
+<span class="source-line-no">1747</span><span id="line-1747">    } catch (IOException e) {</span>
+<span class="source-line-no">1748</span><span id="line-1748">      LOG.error("Exception occurred in HMaster.shutdown()", e);</span>
+<span class="source-line-no">1749</span><span id="line-1749">      throw new ServiceException(e);</span>
+<span class="source-line-no">1750</span><span id="line-1750">    }</span>
+<span class="source-line-no">1751</span><span id="line-1751">    return ShutdownResponse.newBuilder().build();</span>
+<span class="source-line-no">1752</span><span id="line-1752">  }</span>
+<span class="source-line-no">1753</span><span id="line-1753"></span>
+<span class="source-line-no">1754</span><span id="line-1754">  /**</span>
+<span class="source-line-no">1755</span><span id="line-1755">   * Triggers an asynchronous attempt to take a snapshot. {@inheritDoc}</span>
+<span class="source-line-no">1756</span><span id="line-1756">   */</span>
+<span class="source-line-no">1757</span><span id="line-1757">  @Override</span>
+<span class="source-line-no">1758</span><span id="line-1758">  public SnapshotResponse snapshot(RpcController controller, SnapshotRequest request)</span>
+<span class="source-line-no">1759</span><span id="line-1759">    throws ServiceException {</span>
+<span class="source-line-no">1760</span><span id="line-1760">    try {</span>
+<span class="source-line-no">1761</span><span id="line-1761">      server.checkInitialized();</span>
+<span class="source-line-no">1762</span><span id="line-1762">      server.snapshotManager.checkSnapshotSupport();</span>
+<span class="source-line-no">1763</span><span id="line-1763"></span>
+<span class="source-line-no">1764</span><span id="line-1764">      LOG.info(server.getClientIdAuditPrefix() + " snapshot request for:"</span>
+<span class="source-line-no">1765</span><span id="line-1765">        + ClientSnapshotDescriptionUtils.toString(request.getSnapshot()));</span>
+<span class="source-line-no">1766</span><span id="line-1766">      // get the snapshot information</span>
+<span class="source-line-no">1767</span><span id="line-1767">      SnapshotDescription snapshot =</span>
+<span class="source-line-no">1768</span><span id="line-1768">        SnapshotDescriptionUtils.validate(request.getSnapshot(), server.getConfiguration());</span>
+<span class="source-line-no">1769</span><span id="line-1769">      // send back the max amount of time the client should wait for the snapshot to complete</span>
+<span class="source-line-no">1770</span><span id="line-1770">      long waitTime = SnapshotDescriptionUtils.getMaxMasterTimeout(server.getConfiguration(),</span>
+<span class="source-line-no">1771</span><span id="line-1771">        snapshot.getType(), SnapshotDescriptionUtils.DEFAULT_MAX_WAIT_TIME);</span>
+<span class="source-line-no">1772</span><span id="line-1772"></span>
+<span class="source-line-no">1773</span><span id="line-1773">      SnapshotResponse.Builder builder = SnapshotResponse.newBuilder().setExpectedTimeout(waitTime);</span>
+<span class="source-line-no">1774</span><span id="line-1774"></span>
+<span class="source-line-no">1775</span><span id="line-1775">      // If there is nonce group and nonce in the snapshot request, then the client can</span>
+<span class="source-line-no">1776</span><span id="line-1776">      // handle snapshot procedure procId. And if enable the snapshot procedure, we</span>
+<span class="source-line-no">1777</span><span id="line-1777">      // will do the snapshot work with proc-v2, otherwise we will fall back to zk proc.</span>
+<span class="source-line-no">1778</span><span id="line-1778">      if (</span>
+<span class="source-line-no">1779</span><span id="line-1779">        request.hasNonceGroup() &amp;&amp; request.hasNonce()</span>
+<span class="source-line-no">1780</span><span id="line-1780">          &amp;&amp; server.snapshotManager.snapshotProcedureEnabled()</span>
+<span class="source-line-no">1781</span><span id="line-1781">      ) {</span>
+<span class="source-line-no">1782</span><span id="line-1782">        long nonceGroup = request.getNonceGroup();</span>
+<span class="source-line-no">1783</span><span id="line-1783">        long nonce = request.getNonce();</span>
+<span class="source-line-no">1784</span><span id="line-1784">        long procId = server.snapshotManager.takeSnapshot(snapshot, nonceGroup, nonce);</span>
+<span class="source-line-no">1785</span><span id="line-1785">        return builder.setProcId(procId).build();</span>
+<span class="source-line-no">1786</span><span id="line-1786">      } else {</span>
+<span class="source-line-no">1787</span><span id="line-1787">        server.snapshotManager.takeSnapshot(snapshot);</span>
+<span class="source-line-no">1788</span><span id="line-1788">        return builder.build();</span>
+<span class="source-line-no">1789</span><span id="line-1789">      }</span>
+<span class="source-line-no">1790</span><span id="line-1790">    } catch (ForeignException e) {</span>
+<span class="source-line-no">1791</span><span id="line-1791">      throw new ServiceException(e.getCause());</span>
+<span class="source-line-no">1792</span><span id="line-1792">    } catch (IOException e) {</span>
+<span class="source-line-no">1793</span><span id="line-1793">      throw new ServiceException(e);</span>
+<span class="source-line-no">1794</span><span id="line-1794">    }</span>
+<span class="source-line-no">1795</span><span id="line-1795">  }</span>
+<span class="source-line-no">1796</span><span id="line-1796"></span>
+<span class="source-line-no">1797</span><span id="line-1797">  @Override</span>
+<span class="source-line-no">1798</span><span id="line-1798">  public StopMasterResponse stopMaster(RpcController controller, StopMasterRequest request)</span>
+<span class="source-line-no">1799</span><span id="line-1799">    throws ServiceException {</span>
+<span class="source-line-no">1800</span><span id="line-1800">    LOG.info(server.getClientIdAuditPrefix() + " stop");</span>
+<span class="source-line-no">1801</span><span id="line-1801">    try {</span>
+<span class="source-line-no">1802</span><span id="line-1802">      server.stopMaster();</span>
+<span class="source-line-no">1803</span><span id="line-1803">    } catch (IOException e) {</span>
+<span class="source-line-no">1804</span><span id="line-1804">      LOG.error("Exception occurred while stopping master", e);</span>
+<span class="source-line-no">1805</span><span id="line-1805">      throw new ServiceException(e);</span>
+<span class="source-line-no">1806</span><span id="line-1806">    }</span>
+<span class="source-line-no">1807</span><span id="line-1807">    return StopMasterResponse.newBuilder().build();</span>
+<span class="source-line-no">1808</span><span id="line-1808">  }</span>
+<span class="source-line-no">1809</span><span id="line-1809"></span>
+<span class="source-line-no">1810</span><span id="line-1810">  @Override</span>
+<span class="source-line-no">1811</span><span id="line-1811">  public IsInMaintenanceModeResponse isMasterInMaintenanceMode(final RpcController controller,</span>
+<span class="source-line-no">1812</span><span id="line-1812">    final IsInMaintenanceModeRequest request) throws ServiceException {</span>
+<span class="source-line-no">1813</span><span id="line-1813">    IsInMaintenanceModeResponse.Builder response = IsInMaintenanceModeResponse.newBuilder();</span>
+<span class="source-line-no">1814</span><span id="line-1814">    response.setInMaintenanceMode(server.isInMaintenanceMode());</span>
+<span class="source-line-no">1815</span><span id="line-1815">    return response.build();</span>
+<span class="source-line-no">1816</span><span id="line-1816">  }</span>
+<span class="source-line-no">1817</span><span id="line-1817"></span>
+<span class="source-line-no">1818</span><span id="line-1818">  @Override</span>
+<span class="source-line-no">1819</span><span id="line-1819">  public UnassignRegionResponse unassignRegion(RpcController controller, UnassignRegionRequest req)</span>
+<span class="source-line-no">1820</span><span id="line-1820">    throws ServiceException {</span>
+<span class="source-line-no">1821</span><span id="line-1821">    try {</span>
+<span class="source-line-no">1822</span><span id="line-1822">      final byte[] regionName = req.getRegion().getValue().toByteArray();</span>
+<span class="source-line-no">1823</span><span id="line-1823">      RegionSpecifierType type = req.getRegion().getType();</span>
+<span class="source-line-no">1824</span><span id="line-1824">      UnassignRegionResponse urr = UnassignRegionResponse.newBuilder().build();</span>
+<span class="source-line-no">1825</span><span id="line-1825"></span>
+<span class="source-line-no">1826</span><span id="line-1826">      server.checkInitialized();</span>
+<span class="source-line-no">1827</span><span id="line-1827">      if (type != RegionSpecifierType.REGION_NAME) {</span>
+<span class="source-line-no">1828</span><span id="line-1828">        LOG.warn("unassignRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME</span>
+<span class="source-line-no">1829</span><span id="line-1829">          + " actual: " + type);</span>
+<span class="source-line-no">1830</span><span id="line-1830">      }</span>
+<span class="source-line-no">1831</span><span id="line-1831">      RegionStateNode rsn =</span>
+<span class="source-line-no">1832</span><span id="line-1832">        server.getAssignmentManager().getRegionStates().getRegionStateNodeFromName(regionName);</span>
+<span class="source-line-no">1833</span><span id="line-1833">      if (rsn == null) {</span>
+<span class="source-line-no">1834</span><span id="line-1834">        throw new UnknownRegionException(Bytes.toString(regionName));</span>
+<span class="source-line-no">1835</span><span id="line-1835">      }</span>
+<span class="source-line-no">1836</span><span id="line-1836"></span>
+<span class="source-line-no">1837</span><span id="line-1837">      RegionInfo hri = rsn.getRegionInfo();</span>
+<span class="source-line-no">1838</span><span id="line-1838">      if (server.cpHost != null) {</span>
+<span class="source-line-no">1839</span><span id="line-1839">        server.cpHost.preUnassign(hri);</span>
+<span class="source-line-no">1840</span><span id="line-1840">      }</span>
+<span class="source-line-no">1841</span><span id="line-1841">      LOG.debug(server.getClientIdAuditPrefix() + " unassign " + hri.getRegionNameAsString()</span>
+<span class="source-line-no">1842</span><span id="line-1842">        + " in current location if it is online");</span>
+<span class="source-line-no">1843</span><span id="line-1843">      server.getAssignmentManager().unassign(hri);</span>
+<span class="source-line-no">1844</span><span id="line-1844">      if (server.cpHost != null) {</span>
+<span class="source-line-no">1845</span><span id="line-1845">        server.cpHost.postUnassign(hri);</span>
+<span class="source-line-no">1846</span><span id="line-1846">      }</span>
+<span class="source-line-no">1847</span><span id="line-1847"></span>
+<span class="source-line-no">1848</span><span id="line-1848">      return urr;</span>
+<span class="source-line-no">1849</span><span id="line-1849">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1850</span><span id="line-1850">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1851</span><span id="line-1851">    }</span>
+<span class="source-line-no">1852</span><span id="line-1852">  }</span>
+<span class="source-line-no">1853</span><span id="line-1853"></span>
+<span class="source-line-no">1854</span><span id="line-1854">  @Override</span>
+<span class="source-line-no">1855</span><span id="line-1855">  public ReportRegionStateTransitionResponse reportRegionStateTransition(RpcController c,</span>
+<span class="source-line-no">1856</span><span id="line-1856">    ReportRegionStateTransitionRequest req) throws ServiceException {</span>
+<span class="source-line-no">1857</span><span id="line-1857">    try {</span>
+<span class="source-line-no">1858</span><span id="line-1858">      server.checkServiceStarted();</span>
+<span class="source-line-no">1859</span><span id="line-1859">      for (RegionServerStatusProtos.RegionStateTransition transition : req.getTransitionList()) {</span>
+<span class="source-line-no">1860</span><span id="line-1860">        long procId =</span>
+<span class="source-line-no">1861</span><span id="line-1861">          transition.getProcIdCount() &gt; 0 ? transition.getProcId(0) : Procedure.NO_PROC_ID;</span>
+<span class="source-line-no">1862</span><span id="line-1862">        // -1 is less than any possible MasterActiveCode</span>
+<span class="source-line-no">1863</span><span id="line-1863">        long initiatingMasterActiveTime = transition.hasInitiatingMasterActiveTime()</span>
+<span class="source-line-no">1864</span><span id="line-1864">          ? transition.getInitiatingMasterActiveTime()</span>
+<span class="source-line-no">1865</span><span id="line-1865">          : -1;</span>
+<span class="source-line-no">1866</span><span id="line-1866">        throwOnOldMaster(procId, initiatingMasterActiveTime);</span>
+<span class="source-line-no">1867</span><span id="line-1867">      }</span>
+<span class="source-line-no">1868</span><span id="line-1868">      return server.getAssignmentManager().reportRegionStateTransition(req);</span>
+<span class="source-line-no">1869</span><span id="line-1869">    } catch (IOException ioe) {</span>
+<span class="source-line-no">1870</span><span id="line-1870">      throw new ServiceException(ioe);</span>
+<span class="source-line-no">1871</span><span id="line-1871">    }</span>
+<span class="source-line-no">1872</span><span id="line-1872">  }</span>
+<span class="source-line-no">1873</span><span id="line-1873"></span>
+<span class="source-line-no">1874</span><span id="line-1874">  @Override</span>
+<span class="source-line-no">1875</span><span id="line-1875">  public SetQuotaResponse setQuota(RpcController c, SetQuotaRequest req) throws ServiceException {</span>
+<span class="source-line-no">1876</span><span id="line-1876">    try {</span>
+<span class="source-line-no">1877</span><span id="line-1877">      server.checkInitialized();</span>
+<span class="source-line-no">1878</span><span id="line-1878">      SetQuotaResponse response = server.getMasterQuotaManager().setQuota(req);</span>
+<span class="source-line-no">1879</span><span id="line-1879">      server.reloadRegionServerQuotas();</span>
+<span class="source-line-no">1880</span><span id="line-1880"></span>
+<span class="source-line-no">1881</span><span id="line-1881">      return response;</span>
+<span class="source-line-no">1882</span><span id="line-1882">    } catch (Exception e) {</span>
+<span class="source-line-no">1883</span><span id="line-1883">      throw new ServiceException(e);</span>
+<span class="source-line-no">1884</span><span id="line-1884">    }</span>
+<span class="source-line-no">1885</span><span id="line-1885">  }</span>
+<span class="source-line-no">1886</span><span id="line-1886"></span>
+<span class="source-line-no">1887</span><span id="line-1887">  @Override</span>
+<span class="source-line-no">1888</span><span id="line-1888">  public MajorCompactionTimestampResponse getLastMajorCompactionTimestamp(RpcController controller,</span>
+<span class="source-line-no">1889</span><span id="line-1889">    MajorCompactionTimestampRequest request) throws ServiceException {</span>
+<span class="source-line-no">1890</span><span id="line-1890">    MajorCompactionTimestampResponse.Builder response =</span>
+<span class="source-line-no">1891</span><span id="line-1891">      MajorCompactionTimestampResponse.newBuilder();</span>
+<span class="source-line-no">1892</span><span id="line-1892">    try {</span>
+<span class="source-line-no">1893</span><span id="line-1893">      server.checkInitialized();</span>
+<span class="source-line-no">1894</span><span id="line-1894">      response.setCompactionTimestamp(</span>
+<span class="source-line-no">1895</span><span id="line-1895">        server.getLastMajorCompactionTimestamp(ProtobufUtil.toTableName(request.getTableName())));</span>
+<span class="source-line-no">1896</span><span id="line-1896">    } catch (IOException e) {</span>
+<span class="source-line-no">1897</span><span id="line-1897">      throw new ServiceException(e);</span>
+<span class="source-line-no">1898</span><span id="line-1898">    }</span>
+<span class="source-line-no">1899</span><span id="line-1899">    return response.build();</span>
+<span class="source-line-no">1900</span><span id="line-1900">  }</span>
+<span class="source-line-no">1901</span><span id="line-1901"></span>
+<span class="source-line-no">1902</span><span id="line-1902">  @Override</span>
+<span class="source-line-no">1903</span><span id="line-1903">  public MajorCompactionTimestampResponse getLastMajorCompactionTimestampForRegion(</span>
+<span class="source-line-no">1904</span><span id="line-1904">    RpcController controller, MajorCompactionTimestampForRegionRequest request)</span>
+<span class="source-line-no">1905</span><span id="line-1905">    throws ServiceException {</span>
+<span class="source-line-no">1906</span><span id="line-1906">    MajorCompactionTimestampResponse.Builder response =</span>
+<span class="source-line-no">1907</span><span id="line-1907">      MajorCompactionTimestampResponse.newBuilder();</span>
+<span class="source-line-no">1908</span><span id="line-1908">    try {</span>
+<span class="source-line-no">1909</span><span id="line-1909">      server.checkInitialized();</span>
+<span class="source-line-no">1910</span><span id="line-1910">      response.setCompactionTimestamp(server</span>
+<span class="source-line-no">1911</span><span id="line-1911">        .getLastMajorCompactionTimestampForRegion(request.getRegion().getValue().toByteArray()));</span>
+<span class="source-line-no">1912</span><span id="line-1912">    } catch (IOException e) {</span>
+<span class="source-line-no">1913</span><span id="line-1913">      throw new ServiceException(e);</span>
+<span class="source-line-no">1914</span><span id="line-1914">    }</span>
+<span class="source-line-no">1915</span><span id="line-1915">    return response.build();</span>
+<span class="source-line-no">1916</span><span id="line-1916">  }</span>
+<span class="source-line-no">1917</span><span id="line-1917"></span>
+<span class="source-line-no">1918</span><span id="line-1918">  @Override</span>
+<span class="source-line-no">1919</span><span id="line-1919">  public IsBalancerEnabledResponse isBalancerEnabled(RpcController controller,</span>
+<span class="source-line-no">1920</span><span id="line-1920">    IsBalancerEnabledRequest request) throws ServiceException {</span>
+<span class="source-line-no">1921</span><span id="line-1921">    IsBalancerEnabledResponse.Builder response = IsBalancerEnabledResponse.newBuilder();</span>
+<span class="source-line-no">1922</span><span id="line-1922">    response.setEnabled(server.isBalancerOn());</span>
+<span class="source-line-no">1923</span><span id="line-1923">    return response.build();</span>
+<span class="source-line-no">1924</span><span id="line-1924">  }</span>
+<span class="source-line-no">1925</span><span id="line-1925"></span>
+<span class="source-line-no">1926</span><span id="line-1926">  @Override</span>
+<span class="source-line-no">1927</span><span id="line-1927">  public SetSplitOrMergeEnabledResponse setSplitOrMergeEnabled(RpcController controller,</span>
+<span class="source-line-no">1928</span><span id="line-1928">    SetSplitOrMergeEnabledRequest request) throws ServiceException {</span>
+<span class="source-line-no">1929</span><span id="line-1929">    SetSplitOrMergeEnabledResponse.Builder response = SetSplitOrMergeEnabledResponse.newBuilder();</span>
+<span class="source-line-no">1930</span><span id="line-1930">    try {</span>
+<span class="source-line-no">1931</span><span id="line-1931">      server.checkInitialized();</span>
+<span class="source-line-no">1932</span><span id="line-1932">      boolean newValue = request.getEnabled();</span>
+<span class="source-line-no">1933</span><span id="line-1933">      for (MasterProtos.MasterSwitchType masterSwitchType : request.getSwitchTypesList()) {</span>
+<span class="source-line-no">1934</span><span id="line-1934">        MasterSwitchType switchType = convert(masterSwitchType);</span>
+<span class="source-line-no">1935</span><span id="line-1935">        boolean oldValue = server.isSplitOrMergeEnabled(switchType);</span>
+<span class="source-line-no">1936</span><span id="line-1936">        response.addPrevValue(oldValue);</span>
+<span class="source-line-no">1937</span><span id="line-1937">        if (server.cpHost != null) {</span>
+<span class="source-line-no">1938</span><span id="line-1938">          server.cpHost.preSetSplitOrMergeEnabled(newValue, switchType);</span>
+<span class="source-line-no">1939</span><span id="line-1939">        }</span>
+<span class="source-line-no">1940</span><span id="line-1940">        server.getSplitOrMergeStateStore().setSplitOrMergeEnabled(newValue, switchType);</span>
+<span class="source-line-no">1941</span><span id="line-1941">        if (server.cpHost != null) {</span>
+<span class="source-line-no">1942</span><span id="line-1942">          server.cpHost.postSetSplitOrMergeEnabled(newValue, switchType);</span>
+<span class="source-line-no">1943</span><span id="line-1943">        }</span>
+<span class="source-line-no">1944</span><span id="line-1944">      }</span>
+<span class="source-line-no">1945</span><span id="line-1945">    } catch (IOException e) {</span>
+<span class="source-line-no">1946</span><span id="line-1946">      throw new ServiceException(e);</span>
+<span class="source-line-no">1947</span><span id="line-1947">    }</span>
+<span class="source-line-no">1948</span><span id="line-1948">    return response.build();</span>
+<span class="source-line-no">1949</span><span id="line-1949">  }</span>
+<span class="source-line-no">1950</span><span id="line-1950"></span>
+<span class="source-line-no">1951</span><span id="line-1951">  @Override</span>
+<span class="source-line-no">1952</span><span id="line-1952">  public IsSplitOrMergeEnabledResponse isSplitOrMergeEnabled(RpcController controller,</span>
+<span class="source-line-no">1953</span><span id="line-1953">    IsSplitOrMergeEnabledRequest request) throws ServiceException {</span>
+<span class="source-line-no">1954</span><span id="line-1954">    IsSplitOrMergeEnabledResponse.Builder response = IsSplitOrMergeEnabledResponse.newBuilder();</span>
+<span class="source-line-no">1955</span><span id="line-1955">    response.setEnabled(server.isSplitOrMergeEnabled(convert(request.getSwitchType())));</span>
+<span class="source-line-no">1956</span><span id="line-1956">    return response.build();</span>
+<span class="source-line-no">1957</span><span id="line-1957">  }</span>
+<span class="source-line-no">1958</span><span id="line-1958"></span>
+<span class="source-line-no">1959</span><span id="line-1959">  @Override</span>
+<span class="source-line-no">1960</span><span id="line-1960">  public NormalizeResponse normalize(RpcController controller, NormalizeRequest request)</span>
+<span class="source-line-no">1961</span><span id="line-1961">    throws ServiceException {</span>
+<span class="source-line-no">1962</span><span id="line-1962">    rpcPreCheck("normalize");</span>
+<span class="source-line-no">1963</span><span id="line-1963">    try {</span>
+<span class="source-line-no">1964</span><span id="line-1964">      final NormalizeTableFilterParams ntfp = new NormalizeTableFilterParams.Builder()</span>
+<span class="source-line-no">1965</span><span id="line-1965">        .tableNames(ProtobufUtil.toTableNameList(request.getTableNamesList()))</span>
+<span class="source-line-no">1966</span><span id="line-1966">        .regex(request.hasRegex() ? request.getRegex() : null)</span>
+<span class="source-line-no">1967</span><span id="line-1967">        .namespace(request.hasNamespace() ? request.getNamespace() : null).build();</span>
+<span class="source-line-no">1968</span><span id="line-1968">      return NormalizeResponse.newBuilder()</span>
+<span class="source-line-no">1969</span><span id="line-1969">        // all API requests are considered priority requests.</span>
+<span class="source-line-no">1970</span><span id="line-1970">        .setNormalizerRan(server.normalizeRegions(ntfp, true)).build();</span>
+<span class="source-line-no">1971</span><span id="line-1971">    } catch (IOException ex) {</span>
+<span class="source-line-no">1972</span><span id="line-1972">      throw new ServiceException(ex);</span>
+<span class="source-line-no">1973</span><span id="line-1973">    }</span>
+<span class="source-line-no">1974</span><span id="line-1974">  }</span>
+<span class="source-line-no">1975</span><span id="line-1975"></span>
+<span class="source-line-no">1976</span><span id="line-1976">  @Override</span>
+<span class="source-line-no">1977</span><span id="line-1977">  public SetNormalizerRunningResponse setNormalizerRunning(RpcController controller,</span>
+<span class="source-line-no">1978</span><span id="line-1978">    SetNormalizerRunningRequest request) throws ServiceException {</span>
+<span class="source-line-no">1979</span><span id="line-1979">    rpcPreCheck("setNormalizerRunning");</span>
+<span class="source-line-no">1980</span><span id="line-1980"></span>
+<span class="source-line-no">1981</span><span id="line-1981">    // Sets normalizer on/off flag in ZK.</span>
+<span class="source-line-no">1982</span><span id="line-1982">    // TODO: this method is totally broken in terms of atomicity of actions and values read.</span>
+<span class="source-line-no">1983</span><span id="line-1983">    // 1. The contract has this RPC returning the previous value. There isn't a ZKUtil method</span>
+<span class="source-line-no">1984</span><span id="line-1984">    // that lets us retrieve the previous value as part of setting a new value, so we simply</span>
+<span class="source-line-no">1985</span><span id="line-1985">    // perform a read before issuing the update. Thus we have a data race opportunity, between</span>
+<span class="source-line-no">1986</span><span id="line-1986">    // when the `prevValue` is read and whatever is actually overwritten.</span>
+<span class="source-line-no">1987</span><span id="line-1987">    // 2. Down in `setNormalizerOn`, the call to `createAndWatch` inside of the catch clause can</span>
+<span class="source-line-no">1988</span><span id="line-1988">    // itself fail in the event that the znode already exists. Thus, another data race, between</span>
+<span class="source-line-no">1989</span><span id="line-1989">    // when the initial `setData` call is notified of the absence of the target znode and the</span>
+<span class="source-line-no">1990</span><span id="line-1990">    // subsequent `createAndWatch`, with another client creating said node.</span>
+<span class="source-line-no">1991</span><span id="line-1991">    // That said, there's supposed to be only one active master and thus there's supposed to be</span>
+<span class="source-line-no">1992</span><span id="line-1992">    // only one process with the authority to modify the value.</span>
+<span class="source-line-no">1993</span><span id="line-1993">    final boolean prevValue = server.getRegionNormalizerManager().isNormalizerOn();</span>
+<span class="source-line-no">1994</span><span id="line-1994">    final boolean newValue = request.getOn();</span>
+<span class="source-line-no">1995</span><span id="line-1995">    try {</span>
+<span class="source-line-no">1996</span><span id="line-1996">      server.getRegionNormalizerManager().setNormalizerOn(newValue);</span>
+<span class="source-line-no">1997</span><span id="line-1997">    } catch (IOException e) {</span>
+<span class="source-line-no">1998</span><span id="line-1998">      throw new ServiceException(e);</span>
+<span class="source-line-no">1999</span><span id="line-1999">    }</span>
+<span class="source-line-no">2000</span><span id="line-2000">    LOG.info("{} set normalizerSwitch={}", server.getClientIdAuditPrefix(), newValue);</span>
+<span class="source-line-no">2001</span><span id="line-2001">    return SetNormalizerRunningResponse.newBuilder().setPrevNormalizerValue(prevValue).build();</span>
+<span class="source-line-no">2002</span><span id="line-2002">  }</span>
+<span class="source-line-no">2003</span><span id="line-2003"></span>
+<span class="source-line-no">2004</span><span id="line-2004">  @Override</span>
+<span class="source-line-no">2005</span><span id="line-2005">  public IsNormalizerEnabledResponse isNormalizerEnabled(RpcController controller,</span>
+<span class="source-line-no">2006</span><span id="line-2006">    IsNormalizerEnabledRequest request) {</span>
+<span class="source-line-no">2007</span><span id="line-2007">    IsNormalizerEnabledResponse.Builder response = IsNormalizerEnabledResponse.newBuilder();</span>
+<span class="source-line-no">2008</span><span id="line-2008">    response.setEnabled(server.isNormalizerOn());</span>
+<span class="source-line-no">2009</span><span id="line-2009">    return response.build();</span>
+<span class="source-line-no">2010</span><span id="line-2010">  }</span>
+<span class="source-line-no">2011</span><span id="line-2011"></span>
+<span class="source-line-no">2012</span><span id="line-2012">  /**</span>
+<span class="source-line-no">2013</span><span id="line-2013">   * Returns the security capabilities in effect on the cluster</span>
+<span class="source-line-no">2014</span><span id="line-2014">   */</span>
+<span class="source-line-no">2015</span><span id="line-2015">  @Override</span>
+<span class="source-line-no">2016</span><span id="line-2016">  public SecurityCapabilitiesResponse getSecurityCapabilities(RpcController controller,</span>
+<span class="source-line-no">2017</span><span id="line-2017">    SecurityCapabilitiesRequest request) throws ServiceException {</span>
+<span class="source-line-no">2018</span><span id="line-2018">    SecurityCapabilitiesResponse.Builder response = SecurityCapabilitiesResponse.newBuilder();</span>
+<span class="source-line-no">2019</span><span id="line-2019">    try {</span>
+<span class="source-line-no">2020</span><span id="line-2020">      server.checkInitialized();</span>
+<span class="source-line-no">2021</span><span id="line-2021">      Set&lt;SecurityCapabilitiesResponse.Capability&gt; capabilities = new HashSet&lt;&gt;();</span>
+<span class="source-line-no">2022</span><span id="line-2022">      // Authentication</span>
+<span class="source-line-no">2023</span><span id="line-2023">      if (User.isHBaseSecurityEnabled(server.getConfiguration())) {</span>
+<span class="source-line-no">2024</span><span id="line-2024">        capabilities.add(SecurityCapabilitiesResponse.Capability.SECURE_AUTHENTICATION);</span>
+<span class="source-line-no">2025</span><span id="line-2025">      } else {</span>
+<span class="source-line-no">2026</span><span id="line-2026">        capabilities.add(SecurityCapabilitiesResponse.Capability.SIMPLE_AUTHENTICATION);</span>
+<span class="source-line-no">2027</span><span id="line-2027">      }</span>
+<span class="source-line-no">2028</span><span id="line-2028">      // A coprocessor that implements AccessControlService can provide AUTHORIZATION and</span>
+<span class="source-line-no">2029</span><span id="line-2029">      // CELL_AUTHORIZATION</span>
+<span class="source-line-no">2030</span><span id="line-2030">      if (server.cpHost != null &amp;&amp; hasAccessControlServiceCoprocessor(server.cpHost)) {</span>
+<span class="source-line-no">2031</span><span id="line-2031">        if (AccessChecker.isAuthorizationSupported(server.getConfiguration())) {</span>
+<span class="source-line-no">2032</span><span id="line-2032">          capabilities.add(SecurityCapabilitiesResponse.Capability.AUTHORIZATION);</span>
+<span class="source-line-no">2033</span><span id="line-2033">        }</span>
+<span class="source-line-no">2034</span><span id="line-2034">        if (AccessController.isCellAuthorizationSupported(server.getConfiguration())) {</span>
+<span class="source-line-no">2035</span><span id="line-2035">          capabilities.add(SecurityCapabilitiesResponse.Capability.CELL_AUTHORIZATION);</span>
+<span class="source-line-no">2036</span><span id="line-2036">        }</span>
+<span class="source-line-no">2037</span><span id="line-2037">      }</span>
+<span class="source-line-no">2038</span><span id="line-2038">      // A coprocessor that implements VisibilityLabelsService can provide CELL_VISIBILITY.</span>
+<span class="source-line-no">2039</span><span id="line-2039">      if (server.cpHost != null &amp;&amp; hasVisibilityLabelsServiceCoprocessor(server.cpHost)) {</span>
+<span class="source-line-no">2040</span><span id="line-2040">        if (VisibilityController.isCellAuthorizationSupported(server.getConfiguration())) {</span>
+<span class="source-line-no">2041</span><span id="line-2041">          capabilities.add(SecurityCapabilitiesResponse.Capability.CELL_VISIBILITY);</span>
+<span class="source-line-no">2042</span><span id="line-2042">        }</span>
+<span class="source-line-no">2043</span><span id="line-2043">      }</span>
+<span class="source-line-no">2044</span><span id="line-2044">      response.addAllCapabilities(capabilities);</span>
+<span class="source-line-no">2045</span><span id="line-2045">    } catch (IOException e) {</span>
+<span class="source-line-no">2046</span><span id="line-2046">      throw new ServiceException(e);</span>
+<span class="source-line-no">2047</span><span id="line-2047">    }</span>
+<span class="source-line-no">2048</span><span id="line-2048">    return response.build();</span>
+<span class="source-line-no">2049</span><span id="line-2049">  }</span>
+<span class="source-line-no">2050</span><span id="line-2050"></span>
+<span class="source-line-no">2051</span><span id="line-2051">  /**</span>
+<span class="source-line-no">2052</span><span id="line-2052">   * Determines if there is a MasterCoprocessor deployed which implements</span>
+<span class="source-line-no">2053</span><span id="line-2053">   * {@link AccessControlService.Interface}.</span>
+<span class="source-line-no">2054</span><span id="line-2054">   */</span>
+<span class="source-line-no">2055</span><span id="line-2055">  boolean hasAccessControlServiceCoprocessor(MasterCoprocessorHost cpHost) {</span>
+<span class="source-line-no">2056</span><span id="line-2056">    return checkCoprocessorWithService(cpHost.findCoprocessors(MasterCoprocessor.class),</span>
+<span class="source-line-no">2057</span><span id="line-2057">      AccessControlService.Interface.class);</span>
+<span class="source-line-no">2058</span><span id="line-2058">  }</span>
+<span class="source-line-no">2059</span><span id="line-2059"></span>
+<span class="source-line-no">2060</span><span id="line-2060">  /**</span>
+<span class="source-line-no">2061</span><span id="line-2061">   * Determines if there is a MasterCoprocessor deployed which implements</span>
+<span class="source-line-no">2062</span><span id="line-2062">   * {@link VisibilityLabelsService.Interface}.</span>
+<span class="source-line-no">2063</span><span id="line-2063">   */</span>
+<span class="source-line-no">2064</span><span id="line-2064">  boolean hasVisibilityLabelsServiceCoprocessor(MasterCoprocessorHost cpHost) {</span>
+<span class="source-line-no">2065</span><span id="line-2065">    return checkCoprocessorWithService(cpHost.findCoprocessors(MasterCoprocessor.class),</span>
+<span class="source-line-no">2066</span><span id="line-2066">      VisibilityLabelsService.Interface.class);</span>
+<span class="source-line-no">2067</span><span id="line-2067">  }</span>
+<span class="source-line-no">2068</span><span id="line-2068"></span>
+<span class="source-line-no">2069</span><span id="line-2069">  /**</span>
+<span class="source-line-no">2070</span><span id="line-2070">   * Determines if there is a coprocessor implementation in the provided argument which extends or</span>
+<span class="source-line-no">2071</span><span id="line-2071">   * implements the provided {@code service}.</span>
+<span class="source-line-no">2072</span><span id="line-2072">   */</span>
+<span class="source-line-no">2073</span><span id="line-2073">  boolean checkCoprocessorWithService(List&lt;MasterCoprocessor&gt; coprocessorsToCheck,</span>
+<span class="source-line-no">2074</span><span id="line-2074">    Class&lt;?&gt; service) {</span>
+<span class="source-line-no">2075</span><span id="line-2075">    if (coprocessorsToCheck == null || coprocessorsToCheck.isEmpty()) {</span>
+<span class="source-line-no">2076</span><span id="line-2076">      return false;</span>
+<span class="source-line-no">2077</span><span id="line-2077">    }</span>
+<span class="source-line-no">2078</span><span id="line-2078">    for (MasterCoprocessor cp : coprocessorsToCheck) {</span>
+<span class="source-line-no">2079</span><span id="line-2079">      if (service.isAssignableFrom(cp.getClass())) {</span>
+<span class="source-line-no">2080</span><span id="line-2080">        return true;</span>
+<span class="source-line-no">2081</span><span id="line-2081">      }</span>
+<span class="source-line-no">2082</span><span id="line-2082">    }</span>
+<span class="source-line-no">2083</span><span id="line-2083">    return false;</span>
+<span class="source-line-no">2084</span><span id="line-2084">  }</span>
+<span class="source-line-no">2085</span><span id="line-2085"></span>
+<span class="source-line-no">2086</span><span id="line-2086">  private MasterSwitchType convert(MasterProtos.MasterSwitchType switchType) {</span>
+<span class="source-line-no">2087</span><span id="line-2087">    switch (switchType) {</span>
+<span class="source-line-no">2088</span><span id="line-2088">      case SPLIT:</span>
+<span class="source-line-no">2089</span><span id="line-2089">        return MasterSwitchType.SPLIT;</span>
+<span class="source-line-no">2090</span><span id="line-2090">      case MERGE:</span>
+<span class="source-line-no">2091</span><span id="line-2091">        return MasterSwitchType.MERGE;</span>
+<span class="source-line-no">2092</span><span id="line-2092">      default:</span>
+<span class="source-line-no">2093</span><span id="line-2093">        break;</span>
+<span class="source-line-no">2094</span><span id="line-2094">    }</span>
+<span class="source-line-no">2095</span><span id="line-2095">    return null;</span>
+<span class="source-line-no">2096</span><span id="line-2096">  }</span>
+<span class="source-line-no">2097</span><span id="line-2097"></span>
+<span class="source-line-no">2098</span><span id="line-2098">  @Override</span>
+<span class="source-line-no">2099</span><span id="line-2099">  public AddReplicationPeerResponse addReplicationPeer(RpcController controller,</span>
+<span class="source-line-no">2100</span><span id="line-2100">    AddReplicationPeerRequest request) throws ServiceException {</span>
+<span class="source-line-no">2101</span><span id="line-2101">    try {</span>
+<span class="source-line-no">2102</span><span id="line-2102">      long procId = server.addReplicationPeer(request.getPeerId(),</span>
+<span class="source-line-no">2103</span><span id="line-2103">        ReplicationPeerConfigUtil.convert(request.getPeerConfig()),</span>
+<span class="source-line-no">2104</span><span id="line-2104">        request.getPeerState().getState().equals(ReplicationState.State.ENABLED));</span>
+<span class="source-line-no">2105</span><span id="line-2105">      return AddReplicationPeerResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">2106</span><span id="line-2106">    } catch (ReplicationException | IOException e) {</span>
+<span class="source-line-no">2107</span><span id="line-2107">      throw new ServiceException(e);</span>
+<span class="source-line-no">2108</span><span id="line-2108">    }</span>
+<span class="source-line-no">2109</span><span id="line-2109">  }</span>
+<span class="source-line-no">2110</span><span id="line-2110"></span>
+<span class="source-line-no">2111</span><span id="line-2111">  @Override</span>
+<span class="source-line-no">2112</span><span id="line-2112">  public RemoveReplicationPeerResponse removeReplicationPeer(RpcController controller,</span>
+<span class="source-line-no">2113</span><span id="line-2113">    RemoveReplicationPeerRequest request) throws ServiceException {</span>
+<span class="source-line-no">2114</span><span id="line-2114">    try {</span>
+<span class="source-line-no">2115</span><span id="line-2115">      long procId = server.removeReplicationPeer(request.getPeerId());</span>
+<span class="source-line-no">2116</span><span id="line-2116">      return RemoveReplicationPeerResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">2117</span><span id="line-2117">    } catch (ReplicationException | IOException e) {</span>
+<span class="source-line-no">2118</span><span id="line-2118">      throw new ServiceException(e);</span>
+<span class="source-line-no">2119</span><span id="line-2119">    }</span>
+<span class="source-line-no">2120</span><span id="line-2120">  }</span>
+<span class="source-line-no">2121</span><span id="line-2121"></span>
+<span class="source-line-no">2122</span><span id="line-2122">  @Override</span>
+<span class="source-line-no">2123</span><span id="line-2123">  public EnableReplicationPeerResponse enableReplicationPeer(RpcController controller,</span>
+<span class="source-line-no">2124</span><span id="line-2124">    EnableReplicationPeerRequest request) throws ServiceException {</span>
+<span class="source-line-no">2125</span><span id="line-2125">    try {</span>
+<span class="source-line-no">2126</span><span id="line-2126">      long procId = server.enableReplicationPeer(request.getPeerId());</span>
+<span class="source-line-no">2127</span><span id="line-2127">      return EnableReplicationPeerResponse.newBuilder().setProcId(procId).build();</span>
+<span class="source-line-no">2128</span><span id="line-2128">    } catch (ReplicationException | IOException e) {</span>
+<span class="source-line-no">2129</span><span id="line-2129">      throw new ServiceException(e);</span>
+<span class="source-line-no">2130</span><span id="line-2130">    }</span>
+<span class="source-line-no">2131</span><span id="line-2131">  }</span>
+<span class="source-line-no">2132</span><span id="line-2132"></span>
+<span class="source-line-no">2133</span><span id="line-2133">  @Override</span>
+<span class="source-line-no">2134</span><span id="line-2134">  public DisableReplicationPeerResponse disableReplicationPeer(RpcController controller,</span>
+<span class="source-line-no">2135</span><span id="line-2135">    DisableReplicationPeerRequest request) throws ServiceException {</span>
+<span class="source-line-no">2136</span><span id="line-2136">    try {</span>
+<span class="source-line-no">2137</span><span id="line-2137">      long procId = server.disableReplicationPeer(request.getPeerId());</span>
+<span class="source-line-no">2138</span><span id="line-2138">      return DisableReplicationPeerResponse.newBuilder().setProcId(procId).build();</span>
... 210650 lines suppressed ...