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> </dd>
<dt>affixShutdownHook(Thread, int) - Static method in class org.apache.hadoop.hbase.util.ShutdownHookManager</dt>
<dd> </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> </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> </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> </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> </dd>
<dt>conf - Variable in class org.apache.hadoop.hbase.regionserver.StoreFileReader</dt>
<dd> </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> </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<KeyValueScanner>, FlushLifeCycleTracker) - Method in class org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher</dt>
+<dt>createScanner(List<KeyValueScanner>, 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<Path>) - Method in class org.apache.hadoop.hbase.regionserver.DefaultStoreFlusher</dt>
+<dt>createWriter(MemStoreSnapshot, boolean, Consumer<Path>) - Method in class org.apache.hadoop.hbase.regionserver.StripeStoreFlusher</dt>
<dd> </dd>
<dt>createWriterInstance(FileSystem, Path) - Method in class org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL</dt>
<dd> </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> </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> </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> </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> </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> </dd>
<dt>finalizeWriter(StoreFileWriter, long, MonitoredTask) - Method in class org.apache.hadoop.hbase.mob.DefaultMobStoreFlusher</dt>
<dd> </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> </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> </dd>
<dt>RESTORE_DIRS_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.MultiTableSnapshotInputFormatImpl</dt>
<dd> </dd>
+<dt>restoreBackupSystemTable(String) - Method in interface org.apache.hadoop.hbase.client.Admin</dt>
+<dd> </dd>
+<dt>restoreBackupSystemTable(String) - Method in interface org.apache.hadoop.hbase.client.AsyncAdmin</dt>
+<dd> </dd>
+<dt>restoreBackupSystemTable(RpcController, MasterProtos.RestoreBackupSystemTableRequest) - Method in class org.apache.hadoop.hbase.master.MasterRpcServices</dt>
+<dd> </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>
</dd>
<dt>START_TIME_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.WALInputFormat</dt>
<dd> </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> </dd>
<dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder</dt>
<dd> </dd>
@@ -68898,7 +68904,7 @@ service.</div>
</dd>
<dt>store - Variable in class org.apache.hadoop.hbase.io.crypto.KeyStoreKeyProvider</dt>
<dd> </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> </dd>
<dt>store - Variable in class org.apache.hadoop.hbase.regionserver.StoreScanner</dt>
<dd> </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<String> 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<List<String>> 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<Void> 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<HMaster></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<?> 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"> * <ol></span>
-<span class="source-line-no">529</span><span id="line-529"> * <li>Master is initialized</li></span>
-<span class="source-line-no">530</span><span id="line-530"> * <li>Rpc caller has admin permissions</li></span>
-<span class="source-line-no">531</span><span id="line-531"> * </ol></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<BlockingServiceAndInterface> getServices() {</span>
-<span class="source-line-no">587</span><span id="line-587"> List<BlockingServiceAndInterface> bssi = new ArrayList<>(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 && 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() && 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 < 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) -> {</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<SnapshotDescription> 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<Integer, Integer> 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<TableName> tableNameList = null;</span>
-<span class="source-line-no">1180</span><span id="line-1180"> if (req.getTableNamesCount() > 0) {</span>
-<span class="source-line-no">1181</span><span id="line-1181"> tableNameList = new ArrayList<TableName>(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<TableDescriptor> 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 && descriptors.size() > 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<TableDescriptor> 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 && descriptors.size() > 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<TableName> 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 && tableNames.size() > 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<TableName> 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 && tableNames.size() > 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<?> executor = server.getMasterProcedureExecutor();</span>
-<span class="source-line-no">1383</span><span id="line-1383"> Procedure<?> 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<?> 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"> * <p></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"> * <p></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"> * <p></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() && 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 <code>true</code> to enable, <code>false</code> to disable</span>
-<span class="source-line-no">1686</span><span id="line-1686"> * @param synchronous If <code>true</code>, 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<Boolean> fileCleanerFuture = server.getHFileCleaner().triggerCleanerNow();</span>
-<span class="source-line-no">1716</span><span id="line-1716"> CompletableFuture<Boolean> logCleanerFuture = server.getLogCleaner().triggerCleanerNow();</span>
-<span class="source-line-no">1717</span><span id="line-1717"> boolean result = fileCleanerFuture.get() && 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() && request.hasNonce()</span>
-<span class="source-line-no">1779</span><span id="line-1779"> && 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() > 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<SecurityCapabilitiesResponse.Capability> capabilities = new HashSet<>();</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 && 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 && 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<MasterCoprocessor> coprocessorsToCheck,</span>
-<span class="source-line-no">2073</span><span id="line-2073"> Class<?> 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<ReplicationPeerDescription> 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<?> 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<ServerName> servers = server.listDecommissionedRegionServers();</span>
-<span class="source-line-no">2275</span><span id="line-2275"> response.addAllServerName((servers.stream().map(server -> 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<ServerName> servers = request.getServerNameList().stream()</span>
-<span class="source-line-no">2293</span><span id="line-2293"> .map(pbServer -> 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<byte[]> encodedRegionNames = request.getRegionList().stream()</span>
-<span class="source-line-no">2316</span><span id="line-2316"> .map(regionSpecifier -> 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() > 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 < 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<RegionInfo, Long> regionSizes = quotaManager.snapshotRegionSizes();</span>
-<span class="source-line-no">2459</span><span id="line-2459"> Map<TableName, Long> regionSizesByTable = new HashMap<>();</span>
-<span class="source-line-no">2460</span><span id="line-2460"> // Translate hregioninfo+long -> tablename+long</span>
-<span class="source-line-no">2461</span><span id="line-2461"> for (Entry<RegionInfo, Long> 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<TableName, Long> 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<TableName, SpaceQuotaSnapshot> tableSnapshots = quotaChore.getTableQuotaSnapshots();</span>
-<span class="source-line-no">2496</span><span id="line-2496"> for (Entry<TableName, SpaceQuotaSnapshot> 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<String, SpaceQuotaSnapshot> nsSnapshots = quotaChore.getNamespaceQuotaSnapshots();</span>
-<span class="source-line-no">2503</span><span id="line-2503"> for (Entry<String, SpaceQuotaSnapshot> 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<Address> clearedServers = new HashSet<>();</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 -> (p instanceof ServerCrashProcedure)</span>
-<span class="source-line-no">2536</span><span id="line-2536"> && ((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 -> {</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 > 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 -> 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"> () -> 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<MasterProcedureEnv> 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<MasterProcedureEnv> 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<Boolean> 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<Long> pids = new ArrayList<>();</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<Long> pids = new ArrayList<>();</span>
-<span class="source-line-no">2840</span><span id="line-2840"> final Set<ServerName> 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<ServerName> unknownServerNames = serverNames.stream()</span>
-<span class="source-line-no">2844</span><span id="line-2844"> .filter(sn -> 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 && 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 && 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 && 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<UserPermission> 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 && 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<Permission> permissions = new ArrayList<>();</span>
-<span class="source-line-no">3016</span><span id="line-3016"> for (int i = 0; i < 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<String> 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<Boolean> hasUserPermissions = new ArrayList<>();</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 < 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<Procedure<MasterProcedureEnv>> 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<MasterProcedureEnv> 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"> && !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<Address> 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<RSGroupInfo> 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<String, RSGroupInfo> name2Info = new HashMap<>();</span>
-<span class="source-line-no">3254</span><span id="line-3254"> List<TableDescriptor> needToFill =</span>
-<span class="source-line-no">3255</span><span id="line-3255"> new ArrayList<>(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<Address> 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 -> 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<String, String> configuration = new HashMap<>();</span>
-<span class="source-line-no">3389</span><span id="line-3389"> request.getConfigurationList().forEach(p -> 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<?> 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<RecentLogs.BalancerDecision> 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<RecentLogs.BalancerRejection> 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() && 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<ServerName> regionServers = new ArrayList<>(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<byte[]> columnFamilies = req.getColumnFamilyCount() > 0</span>
-<span class="source-line-no">3658</span><span id="line-3658"> ? req.getColumnFamilyList().stream().filter(cf -> !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<HMaster></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<?> 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"> * <ol></span>
+<span class="source-line-no">530</span><span id="line-530"> * <li>Master is initialized</li></span>
+<span class="source-line-no">531</span><span id="line-531"> * <li>Rpc caller has admin permissions</li></span>
+<span class="source-line-no">532</span><span id="line-532"> * </ol></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<BlockingServiceAndInterface> getServices() {</span>
+<span class="source-line-no">588</span><span id="line-588"> List<BlockingServiceAndInterface> bssi = new ArrayList<>(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 && 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() && 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 < 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) -> {</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<SnapshotDescription> 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<Integer, Integer> 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<TableName> tableNameList = null;</span>
+<span class="source-line-no">1181</span><span id="line-1181"> if (req.getTableNamesCount() > 0) {</span>
+<span class="source-line-no">1182</span><span id="line-1182"> tableNameList = new ArrayList<TableName>(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<TableDescriptor> 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 && descriptors.size() > 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<TableDescriptor> 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 && descriptors.size() > 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<TableName> 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 && tableNames.size() > 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<TableName> 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 && tableNames.size() > 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<?> executor = server.getMasterProcedureExecutor();</span>
+<span class="source-line-no">1384</span><span id="line-1384"> Procedure<?> 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<?> 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"> * <p></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"> * <p></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"> * <p></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() && 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 <code>true</code> to enable, <code>false</code> to disable</span>
+<span class="source-line-no">1687</span><span id="line-1687"> * @param synchronous If <code>true</code>, 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<Boolean> fileCleanerFuture = server.getHFileCleaner().triggerCleanerNow();</span>
+<span class="source-line-no">1717</span><span id="line-1717"> CompletableFuture<Boolean> logCleanerFuture = server.getLogCleaner().triggerCleanerNow();</span>
+<span class="source-line-no">1718</span><span id="line-1718"> boolean result = fileCleanerFuture.get() && 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() && request.hasNonce()</span>
+<span class="source-line-no">1780</span><span id="line-1780"> && 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() > 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<SecurityCapabilitiesResponse.Capability> capabilities = new HashSet<>();</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 && 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 && 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<MasterCoprocessor> coprocessorsToCheck,</span>
+<span class="source-line-no">2074</span><span id="line-2074"> Class<?> 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 ...