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 2021/01/15 20:17:23 UTC

[hbase-site] branch asf-site updated: Published site at 1474ebcc6988e98abbd216863acb9388152c53f6.

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 fd9e86e  Published site at 1474ebcc6988e98abbd216863acb9388152c53f6.
fd9e86e is described below

commit fd9e86e82e6a2ab4bac7ea865d85b9f1ff075902
Author: jenkins <bu...@apache.org>
AuthorDate: Fri Jan 15 20:17:10 2021 +0000

    Published site at 1474ebcc6988e98abbd216863acb9388152c53f6.
---
 acid-semantics.html                                |    2 +-
 apache_hbase_reference_guide.pdf                   |    4 +-
 .../hbase/client/TableDescriptorBuilder.html       |   88 +-
 .../hbase/client/TableDescriptorBuilder.html       | 2785 ++++++++++----------
 book.html                                          |    2 +-
 bulk-loads.html                                    |    2 +-
 checkstyle-aggregate.html                          |   50 +-
 coc.html                                           |    2 +-
 dependencies.html                                  |    2 +-
 dependency-convergence.html                        |    2 +-
 dependency-info.html                               |    2 +-
 dependency-management.html                         |    2 +-
 ...escriptorBuilder.ModifyableTableDescriptor.html |  166 +-
 .../hbase/client/TableDescriptorBuilder.html       |  112 +-
 .../hadoop/hbase/util/TableDescriptorChecker.html  |   34 +-
 ...escriptorBuilder.ModifyableTableDescriptor.html | 2785 ++++++++++----------
 .../hbase/client/TableDescriptorBuilder.html       | 2785 ++++++++++----------
 .../hadoop/hbase/util/TableDescriptorChecker.html  |  579 ++--
 downloads.html                                     |    2 +-
 export_control.html                                |    2 +-
 index.html                                         |    2 +-
 issue-tracking.html                                |    2 +-
 mail-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 +-
 project-summary.html                               |    2 +-
 pseudo-distributed.html                            |    2 +-
 replication.html                                   |    2 +-
 resources.html                                     |    2 +-
 source-repository.html                             |    2 +-
 sponsors.html                                      |    2 +-
 supportingprojects.html                            |    2 +-
 team-list.html                                     |    2 +-
 testdevapidocs/index-all.html                      |    6 +-
 .../apache/hadoop/hbase/backup/package-tree.html   |    2 +-
 .../hbase/class-use/HBaseTestingUtility.html       |    4 +
 .../hbase/client/TestTableDescriptorBuilder.html   |    2 +-
 .../apache/hadoop/hbase/io/hfile/package-tree.html |    2 +-
 .../TestSplitWALManager.FakeServerProcedure.html   |   46 +-
 .../hadoop/hbase/master/TestSplitWALManager.html   |  102 +-
 .../org/apache/hadoop/hbase/package-tree.html      |   16 +-
 .../hadoop/hbase/procedure/package-tree.html       |    8 +-
 .../hadoop/hbase/procedure2/package-tree.html      |    4 +-
 .../hadoop/hbase/regionserver/package-tree.html    |    8 +-
 .../org/apache/hadoop/hbase/test/package-tree.html |    2 +-
 .../org/apache/hadoop/hbase/wal/package-tree.html  |    2 +-
 .../hbase/client/TestTableDescriptorBuilder.html   |   40 +-
 .../TestSplitWALManager.FakeServerProcedure.html   |  769 +++---
 .../hadoop/hbase/master/TestSplitWALManager.html   |  769 +++---
 54 files changed, 5593 insertions(+), 5633 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 5a412d8..44175ef 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -467,7 +467,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2021
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-15</li>
 </p>
         </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 46b93b7..1624f48 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.3, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20210114200447+00'00')
-/CreationDate (D:20210114201448+00'00')
+/ModDate (D:20210115200436+00'00')
+/CreationDate (D:20210115201442+00'00')
 >>
 endobj
 2 0 obj
diff --git a/apidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html b/apidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
index a05b4a5..bf92258 100644
--- a/apidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
+++ b/apidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
@@ -543,7 +543,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <li class="blockList">
 <h4>NAMESPACE_TABLEDESC</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.310">NAMESPACE_TABLEDESC</a></pre>
+public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.311">NAMESPACE_TABLEDESC</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 3.0.0 and will be removed in 4.0.0. We have folded the data in namespace
    table into meta table, so do not use it any more.</span></div>
 <div class="block">Table descriptor for namespace table</div>
@@ -576,7 +576,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>toByteArray</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.324">toByteArray</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.325">toByteArray</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>desc</code> - The table descriptor to serialize</dd>
@@ -591,7 +591,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>parseFrom</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.337">parseFrom</a>(byte[]&nbsp;pbBytes)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.338">parseFrom</a>(byte[]&nbsp;pbBytes)
                                  throws org.apache.hadoop.hbase.exceptions.DeserializationException</pre>
 <div class="block">The input should be created by <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#toByteArray-org.apache.hadoop.hbase.client.TableDescriptor-"><code>toByteArray(org.apache.hadoop.hbase.client.TableDescriptor)</code></a>.</div>
 <dl>
@@ -610,7 +610,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>newBuilder</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.341">newBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.342">newBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)</pre>
 </li>
 </ul>
 <a name="copy-org.apache.hadoop.hbase.client.TableDescriptor-">
@@ -619,7 +619,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>copy</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.345">copy</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.346">copy</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 </li>
 </ul>
 <a name="copy-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-">
@@ -628,7 +628,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>copy</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.349">copy</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.350">copy</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name,
                                    <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 </li>
 </ul>
@@ -638,7 +638,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>newBuilder</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.358">newBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.359">newBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 <div class="block">Copy all values, families, and name from the input.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -654,7 +654,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.370">setCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.371">setCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -668,7 +668,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.374">setCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apache.hadoop.hbase.client">CoprocessorDescriptor</a>&nbsp;cpDesc)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.375">setCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apache.hadoop.hbase.client">CoprocessorDescriptor</a>&nbsp;cpDesc)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -682,7 +682,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setCoprocessors</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.379">setCoprocessors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/h [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.380">setCoprocessors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/h [...]
                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -696,7 +696,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>hasCoprocessor</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.387">hasCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;classNameToMatch)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.388">hasCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;classNameToMatch)</pre>
 </li>
 </ul>
 <a name="setColumnFamily-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">
@@ -705,7 +705,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.391">setColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.392">setColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
 </li>
 </ul>
 <a name="setColumnFamilies-java.util.Collection-">
@@ -714,7 +714,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setColumnFamilies</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.396">setColumnFamilies</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.397">setColumnFamilies</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache [...]
 </li>
 </ul>
 <a name="modifyColumnFamily-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">
@@ -723,7 +723,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.402">modifyColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.403">modifyColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
 </li>
 </ul>
 <a name="removeValue-java.lang.String-">
@@ -732,7 +732,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.407">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.408">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 </li>
 </ul>
 <a name="removeValue-org.apache.hadoop.hbase.util.Bytes-">
@@ -741,7 +741,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.412">removeValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.413">removeValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key)</pre>
 </li>
 </ul>
 <a name="removeValue-byte:A-">
@@ -750,7 +750,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.417">removeValue</a>(byte[]&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.418">removeValue</a>(byte[]&nbsp;key)</pre>
 </li>
 </ul>
 <a name="removeValue-java.util.function.BiPredicate-">
@@ -759,7 +759,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.422">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/BiPredicate.html?is-external=true" title="class or interface in java.util.function">BiPredicate</a>&lt;<a href="../../../.. [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.423">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/BiPredicate.html?is-external=true" title="class or interface in java.util.function">BiPredicate</a>&lt;<a href="../../../.. [...]
 </li>
 </ul>
 <a name="removeColumnFamily-byte:A-">
@@ -768,7 +768,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.432">removeColumnFamily</a>(byte[]&nbsp;name)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.433">removeColumnFamily</a>(byte[]&nbsp;name)</pre>
 </li>
 </ul>
 <a name="removeCoprocessor-java.lang.String-">
@@ -777,7 +777,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.437">removeCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.438">removeCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
 </li>
 </ul>
 <a name="setCompactionEnabled-boolean-">
@@ -786,7 +786,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setCompactionEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.442">setCompactionEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.443">setCompactionEnabled</a>(boolean&nbsp;isEnable)</pre>
 </li>
 </ul>
 <a name="setSplitEnabled-boolean-">
@@ -795,7 +795,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setSplitEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.447">setSplitEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.448">setSplitEnabled</a>(boolean&nbsp;isEnable)</pre>
 </li>
 </ul>
 <a name="setMergeEnabled-boolean-">
@@ -804,7 +804,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMergeEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.452">setMergeEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.453">setMergeEnabled</a>(boolean&nbsp;isEnable)</pre>
 </li>
 </ul>
 <a name="setDurability-org.apache.hadoop.hbase.client.Durability-">
@@ -813,7 +813,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setDurability</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.457">setDurability</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.458">setDurability</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</pre>
 </li>
 </ul>
 <a name="setFlushPolicyClassName-java.lang.String-">
@@ -822,7 +822,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setFlushPolicyClassName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.462">setFlushPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clazz)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.463">setFlushPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clazz)</pre>
 </li>
 </ul>
 <a name="setMaxFileSize-long-">
@@ -831,7 +831,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxFileSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.467">setMaxFileSize</a>(long&nbsp;maxFileSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.468">setMaxFileSize</a>(long&nbsp;maxFileSize)</pre>
 </li>
 </ul>
 <a name="setMaxFileSize-java.lang.String-">
@@ -840,7 +840,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxFileSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.472">setMaxFileSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;maxFileSize)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.473">setMaxFileSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;maxFileSize)
                                       throws org.apache.hadoop.hbase.exceptions.HBaseException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -854,7 +854,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMemStoreFlushSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.477">setMemStoreFlushSize</a>(long&nbsp;memstoreFlushSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.478">setMemStoreFlushSize</a>(long&nbsp;memstoreFlushSize)</pre>
 </li>
 </ul>
 <a name="setMemStoreFlushSize-java.lang.String-">
@@ -863,7 +863,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMemStoreFlushSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.482">setMemStoreFlushSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;memStoreFlushSize)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.483">setMemStoreFlushSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;memStoreFlushSize)
                                             throws org.apache.hadoop.hbase.exceptions.HBaseException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -877,7 +877,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizerTargetRegionCount</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.488">setNormalizerTargetRegionCount</a>(int&nbsp;regionCount)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.489">setNormalizerTargetRegionCount</a>(int&nbsp;regionCount)</pre>
 </li>
 </ul>
 <a name="setNormalizerTargetRegionSize-long-">
@@ -886,7 +886,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizerTargetRegionSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.493">setNormalizerTargetRegionSize</a>(long&nbsp;regionSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.494">setNormalizerTargetRegionSize</a>(long&nbsp;regionSize)</pre>
 </li>
 </ul>
 <a name="setNormalizationEnabled-boolean-">
@@ -895,7 +895,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizationEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.498">setNormalizationEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.499">setNormalizationEnabled</a>(boolean&nbsp;isEnable)</pre>
 </li>
 </ul>
 <a name="setPriority-int-">
@@ -904,7 +904,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setPriority</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.503">setPriority</a>(int&nbsp;priority)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.504">setPriority</a>(int&nbsp;priority)</pre>
 </li>
 </ul>
 <a name="setReadOnly-boolean-">
@@ -913,7 +913,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setReadOnly</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.508">setReadOnly</a>(boolean&nbsp;readOnly)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.509">setReadOnly</a>(boolean&nbsp;readOnly)</pre>
 </li>
 </ul>
 <a name="setRegionMemStoreReplication-boolean-">
@@ -922,7 +922,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionMemStoreReplication</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.513">setRegionMemStoreReplication</a>(boolean&nbsp;memstoreReplication)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.514">setRegionMemStoreReplication</a>(boolean&nbsp;memstoreReplication)</pre>
 </li>
 </ul>
 <a name="setRegionReplication-int-">
@@ -931,7 +931,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionReplication</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.518">setRegionReplication</a>(int&nbsp;regionReplication)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.519">setRegionReplication</a>(int&nbsp;regionReplication)</pre>
 </li>
 </ul>
 <a name="setRegionSplitPolicyClassName-java.lang.String-">
@@ -940,7 +940,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionSplitPolicyClassName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.523">setRegionSplitPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clazz)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.524">setRegionSplitPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clazz)</pre>
 </li>
 </ul>
 <a name="setValue-java.lang.String-java.lang.String-">
@@ -949,7 +949,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.528">setValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.529">setValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 </li>
 </ul>
@@ -959,7 +959,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.533">setValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.534">setValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key,
                                        <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;value)</pre>
 </li>
 </ul>
@@ -969,7 +969,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.538">setValue</a>(byte[]&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.539">setValue</a>(byte[]&nbsp;key,
                                        byte[]&nbsp;value)</pre>
 </li>
 </ul>
@@ -979,7 +979,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>getValue</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.543">getValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.544">getValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 </li>
 </ul>
 <a name="setReplicationScope-int-">
@@ -988,7 +988,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setReplicationScope</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.553">setReplicationScope</a>(int&nbsp;scope)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.554">setReplicationScope</a>(int&nbsp;scope)</pre>
 <div class="block">Sets replication scope all & only the columns already in the builder. Columns added later won't
  be backfilled with replication scope.</div>
 <dl>
@@ -1005,7 +1005,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionServerGroup</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.565">setRegionServerGroup</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;group)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.566">setRegionServerGroup</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;group)</pre>
 </li>
 </ul>
 <a name="build--">
@@ -1014,7 +1014,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>build</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.570">build</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.571">build</a>()</pre>
 </li>
 </ul>
 </li>
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html b/apidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
index 9506b60..87edfdb 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
@@ -259,1398 +259,1399 @@
 <span class="sourceLineNo">251</span>  public static PrettyPrinter.Unit getUnit(String key) {<a name="line.251"></a>
 <span class="sourceLineNo">252</span>    switch (key) {<a name="line.252"></a>
 <span class="sourceLineNo">253</span>      case MAX_FILESIZE:<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        return PrettyPrinter.Unit.BYTE;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      default:<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        return PrettyPrinter.Unit.NONE;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>  /**<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   *             any more.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  @InterfaceAudience.Private<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  @Deprecated<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  public final static String NAMESPACE_FAMILY_INFO = "info";<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>  /**<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   *             any more.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   */<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @InterfaceAudience.Private<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  @Deprecated<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public final static byte[] NAMESPACE_FAMILY_INFO_BYTES = Bytes.toBytes(NAMESPACE_FAMILY_INFO);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   *             any more.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  @InterfaceAudience.Private<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  @Deprecated<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public final static byte[] NAMESPACE_COL_DESC_BYTES = Bytes.toBytes("d");<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  /**<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * &lt;pre&gt;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * Pattern that matches a coprocessor specification. Form is:<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * {@code &lt;coprocessor jar file location&gt; '|' &lt;class name&gt; ['|' &lt;priority&gt; ['|' &lt;arguments&gt;]]}<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * where arguments are {@code &lt;KEY&gt; '=' &lt;VALUE&gt; [,...]}<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * For example: {@code hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2}<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * &lt;/pre&gt;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  private static final Pattern CP_HTD_ATTR_VALUE_PATTERN =<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    Pattern.compile("(^[^\\|]*)\\|([^\\|]+)\\|[\\s]*([\\d]*)[\\s]*(\\|.*)?$");<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN = "[^=,]+";<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN = "[^,]+";<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  private static final Pattern CP_HTD_ATTR_VALUE_PARAM_PATTERN = Pattern.compile(<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    "(" + CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN + ")=(" +<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN + "),?");<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private static final Pattern CP_HTD_ATTR_KEY_PATTERN =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Pattern.compile("^coprocessor\\$([0-9]+)$", Pattern.CASE_INSENSITIVE);<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  /**<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * Table descriptor for namespace table<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * @deprecated since 3.0.0 and will be removed in 4.0.0. We have folded the data in namespace<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   *   table into meta table, so do not use it any more.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21154"&gt;HBASE-21154&lt;/a&gt;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Deprecated<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public static final TableDescriptor NAMESPACE_TABLEDESC =<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    TableDescriptorBuilder.newBuilder(TableName.NAMESPACE_TABLE_NAME)<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(NAMESPACE_FAMILY_INFO_BYTES)<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        // Ten is arbitrary number. Keep versions to help debugging.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        .setMaxVersions(10).setInMemory(true).setBlocksize(8 * 1024)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        .setScope(HConstants.REPLICATION_SCOPE_LOCAL).build())<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      .build();<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  private final ModifyableTableDescriptor desc;<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /**<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param desc The table descriptor to serialize<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static byte[] toByteArray(TableDescriptor desc) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    if (desc instanceof ModifyableTableDescriptor) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      return ((ModifyableTableDescriptor) desc).toByteArray();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    return new ModifyableTableDescriptor(desc).toByteArray();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  /**<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * The input should be created by {@link #toByteArray}.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * @param pbBytes A pb serialized TableDescriptor instance with pb magic prefix<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @throws org.apache.hadoop.hbase.exceptions.DeserializationException<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public static TableDescriptor parseFrom(byte[] pbBytes) throws DeserializationException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return ModifyableTableDescriptor.parseFrom(pbBytes);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public static TableDescriptorBuilder newBuilder(final TableName name) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return new TableDescriptorBuilder(name);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public static TableDescriptor copy(TableDescriptor desc) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return new ModifyableTableDescriptor(desc);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static TableDescriptor copy(TableName name, TableDescriptor desc) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return new ModifyableTableDescriptor(name, desc);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Copy all values, families, and name from the input.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @param desc The desciptor to copy<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @return A clone of input<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public static TableDescriptorBuilder newBuilder(final TableDescriptor desc) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    return new TableDescriptorBuilder(desc);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private TableDescriptorBuilder(final TableName name) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    this.desc = new ModifyableTableDescriptor(name);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private TableDescriptorBuilder(final TableDescriptor desc) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    this.desc = new ModifyableTableDescriptor(desc);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public TableDescriptorBuilder setCoprocessor(String className) throws IOException {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    return setCoprocessor(CoprocessorDescriptorBuilder.of(className));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public TableDescriptorBuilder setCoprocessor(CoprocessorDescriptor cpDesc) throws IOException {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    desc.setCoprocessor(Objects.requireNonNull(cpDesc));<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    return this;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  }<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  public TableDescriptorBuilder setCoprocessors(Collection&lt;CoprocessorDescriptor&gt; cpDescs)<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    throws IOException {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (CoprocessorDescriptor cpDesc : cpDescs) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      desc.setCoprocessor(cpDesc);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    return this;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  public boolean hasCoprocessor(String classNameToMatch) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    return desc.hasCoprocessor(classNameToMatch);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  }<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public TableDescriptorBuilder setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    desc.setColumnFamily(Objects.requireNonNull(family));<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    return this;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  public TableDescriptorBuilder setColumnFamilies(<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    final Collection&lt;ColumnFamilyDescriptor&gt; families) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    families.forEach(desc::setColumnFamily);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    return this;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public TableDescriptorBuilder modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    desc.modifyColumnFamily(Objects.requireNonNull(family));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    return this;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  }<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public TableDescriptorBuilder removeValue(final String key) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    desc.removeValue(key);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    return this;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  }<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  public TableDescriptorBuilder removeValue(Bytes key) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    desc.removeValue(key);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    return this;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  public TableDescriptorBuilder removeValue(byte[] key) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    desc.removeValue(key);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    return this;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public TableDescriptorBuilder removeValue(BiPredicate&lt;Bytes, Bytes&gt; predicate) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    List&lt;Bytes&gt; toRemove =<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      desc.getValues().entrySet().stream().filter(e -&gt; predicate.test(e.getKey(), e.getValue()))<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        .map(Map.Entry::getKey).collect(Collectors.toList());<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    for (Bytes key : toRemove) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      removeValue(key);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return this;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public TableDescriptorBuilder removeColumnFamily(final byte[] name) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    desc.removeColumnFamily(name);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return this;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  public TableDescriptorBuilder removeCoprocessor(String className) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    desc.removeCoprocessor(className);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return this;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public TableDescriptorBuilder setCompactionEnabled(final boolean isEnable) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    desc.setCompactionEnabled(isEnable);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return this;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public TableDescriptorBuilder setSplitEnabled(final boolean isEnable) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    desc.setSplitEnabled(isEnable);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return this;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public TableDescriptorBuilder setMergeEnabled(final boolean isEnable) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    desc.setMergeEnabled(isEnable);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return this;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public TableDescriptorBuilder setDurability(Durability durability) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    desc.setDurability(durability);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    return this;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public TableDescriptorBuilder setFlushPolicyClassName(String clazz) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    desc.setFlushPolicyClassName(clazz);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return this;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  public TableDescriptorBuilder setMaxFileSize(long maxFileSize) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    desc.setMaxFileSize(maxFileSize);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return this;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public TableDescriptorBuilder setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    desc.setMaxFileSize(maxFileSize);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return this;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  public TableDescriptorBuilder setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    desc.setMemStoreFlushSize(memstoreFlushSize);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    return this;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public TableDescriptorBuilder setMemStoreFlushSize(String memStoreFlushSize)<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    throws HBaseException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    desc.setMemStoreFlushSize(memStoreFlushSize);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return this;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  public TableDescriptorBuilder setNormalizerTargetRegionCount(final int regionCount) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    desc.setNormalizerTargetRegionCount(regionCount);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return this;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  }<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span>  public TableDescriptorBuilder setNormalizerTargetRegionSize(final long regionSize) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    desc.setNormalizerTargetRegionSize(regionSize);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return this;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  public TableDescriptorBuilder setNormalizationEnabled(final boolean isEnable) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    desc.setNormalizationEnabled(isEnable);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    return this;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>  public TableDescriptorBuilder setPriority(int priority) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    desc.setPriority(priority);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    return this;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public TableDescriptorBuilder setReadOnly(final boolean readOnly) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    desc.setReadOnly(readOnly);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return this;<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  }<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public TableDescriptorBuilder setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    desc.setRegionMemStoreReplication(memstoreReplication);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    return this;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>  public TableDescriptorBuilder setRegionReplication(int regionReplication) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    desc.setRegionReplication(regionReplication);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    return this;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span>  public TableDescriptorBuilder setRegionSplitPolicyClassName(String clazz) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    desc.setRegionSplitPolicyClassName(clazz);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    return this;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  public TableDescriptorBuilder setValue(final String key, final String value) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    desc.setValue(key, value);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    return this;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>  public TableDescriptorBuilder setValue(final Bytes key, final Bytes value) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    desc.setValue(key, value);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    return this;<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  public TableDescriptorBuilder setValue(final byte[] key, final byte[] value) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    desc.setValue(key, value);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    return this;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>  public String getValue(String key) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return desc.getValue(key);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Sets replication scope all &amp; only the columns already in the builder. Columns added later won't<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * be backfilled with replication scope.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param scope replication scope<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @return a TableDescriptorBuilder<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   */<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  public TableDescriptorBuilder setReplicationScope(int scope) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    Map&lt;byte[], ColumnFamilyDescriptor&gt; newFamilies = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    newFamilies.putAll(desc.families);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    newFamilies<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        .forEach((cf, cfDesc) -&gt; {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>          desc.removeColumnFamily(cf);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>          desc.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(cfDesc).setScope(scope)<a name="line.559"></a>
-<span class="sourceLineNo">560</span>              .build());<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        });<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    return this;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  }<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>  public TableDescriptorBuilder setRegionServerGroup(String group) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    desc.setValue(RSGROUP_KEY, group);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    return this;<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  }<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>  public TableDescriptor build() {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    return new ModifyableTableDescriptor(desc);<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  private static final class ModifyableTableDescriptor<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    implements TableDescriptor, Comparable&lt;ModifyableTableDescriptor&gt; {<a name="line.575"></a>
-<span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sourceLineNo">577</span>    private final TableName name;<a name="line.577"></a>
-<span class="sourceLineNo">578</span><a name="line.578"></a>
-<span class="sourceLineNo">579</span>    /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>     * A map which holds the metadata information of the table. This metadata<a name="line.580"></a>
-<span class="sourceLineNo">581</span>     * includes values like IS_META, SPLIT_POLICY, MAX_FILE_SIZE,<a name="line.581"></a>
-<span class="sourceLineNo">582</span>     * READONLY, MEMSTORE_FLUSHSIZE etc...<a name="line.582"></a>
-<span class="sourceLineNo">583</span>     */<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    private final Map&lt;Bytes, Bytes&gt; values = new HashMap&lt;&gt;();<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>    /**<a name="line.586"></a>
-<span class="sourceLineNo">587</span>     * Maps column family name to the respective FamilyDescriptors<a name="line.587"></a>
-<span class="sourceLineNo">588</span>     */<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    private final Map&lt;byte[], ColumnFamilyDescriptor&gt; families<a name="line.589"></a>
-<span class="sourceLineNo">590</span>            = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>    /**<a name="line.592"></a>
-<span class="sourceLineNo">593</span>     * Construct a table descriptor specifying a TableName object<a name="line.593"></a>
-<span class="sourceLineNo">594</span>     *<a name="line.594"></a>
-<span class="sourceLineNo">595</span>     * @param name Table name.<a name="line.595"></a>
-<span class="sourceLineNo">596</span>     */<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    private ModifyableTableDescriptor(final TableName name) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      this(name, Collections.emptyList(), Collections.emptyMap());<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span><a name="line.600"></a>
-<span class="sourceLineNo">601</span>    private ModifyableTableDescriptor(final TableDescriptor desc) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      this(desc.getTableName(), Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>    /**<a name="line.605"></a>
-<span class="sourceLineNo">606</span>     * Construct a table descriptor by cloning the descriptor passed as a<a name="line.606"></a>
-<span class="sourceLineNo">607</span>     * parameter.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>     * &lt;p&gt;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     * Makes a deep copy of the supplied descriptor.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>     * @param name The new name<a name="line.610"></a>
-<span class="sourceLineNo">611</span>     * @param desc The descriptor.<a name="line.611"></a>
-<span class="sourceLineNo">612</span>     */<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    private ModifyableTableDescriptor(final TableName name, final TableDescriptor desc) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      this(name, Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>    private ModifyableTableDescriptor(final TableName name, final Collection&lt;ColumnFamilyDescriptor&gt; families,<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            Map&lt;Bytes, Bytes&gt; values) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>      this.name = name;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      families.forEach(c -&gt; this.families.put(c.getName(), ColumnFamilyDescriptorBuilder.copy(c)));<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      this.values.putAll(values);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.values.put(IS_META_KEY,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        new Bytes(Bytes.toBytes(Boolean.toString(name.equals(TableName.META_TABLE_NAME)))));<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    /**<a name="line.626"></a>
-<span class="sourceLineNo">627</span>     * Checks if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.627"></a>
-<span class="sourceLineNo">628</span>     *<a name="line.628"></a>
-<span class="sourceLineNo">629</span>     * @return true if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region<a name="line.629"></a>
-<span class="sourceLineNo">630</span>     */<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    @Override<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    public boolean isMetaRegion() {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      return getOrDefault(IS_META_KEY, Boolean::valueOf, false);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    }<a name="line.634"></a>
-<span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>    /**<a name="line.636"></a>
-<span class="sourceLineNo">637</span>     * Checks if the table is a &lt;code&gt;hbase:meta&lt;/code&gt; table<a name="line.637"></a>
-<span class="sourceLineNo">638</span>     *<a name="line.638"></a>
-<span class="sourceLineNo">639</span>     * @return true if table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>     */<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    @Override<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public boolean isMetaTable() {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      return isMetaRegion();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    }<a name="line.644"></a>
-<span class="sourceLineNo">645</span><a name="line.645"></a>
-<span class="sourceLineNo">646</span>    @Override<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    public Bytes getValue(Bytes key) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      Bytes rval = values.get(key);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      return rval == null ? null : new Bytes(rval.copyBytes());<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>    @Override<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    public String getValue(String key) {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      Bytes rval = values.get(new Bytes(Bytes.toBytes(key)));<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      return rval == null ? null : Bytes.toString(rval.get(), rval.getOffset(), rval.getLength());<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>    @Override<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public byte[] getValue(byte[] key) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      Bytes value = values.get(new Bytes(key));<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      return value == null ? null : value.copyBytes();<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    private &lt;T&gt; T getOrDefault(Bytes key, Function&lt;String, T&gt; function, T defaultValue) {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      Bytes value = values.get(key);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (value == null) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        return defaultValue;<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      } else {<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        return function.apply(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>    /**<a name="line.673"></a>
-<span class="sourceLineNo">674</span>     * Getter for fetching an unmodifiable {@link #values} map.<a name="line.674"></a>
-<span class="sourceLineNo">675</span>     *<a name="line.675"></a>
-<span class="sourceLineNo">676</span>     * @return unmodifiable map {@link #values}.<a name="line.676"></a>
-<span class="sourceLineNo">677</span>     * @see #values<a name="line.677"></a>
-<span class="sourceLineNo">678</span>     */<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    @Override<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    public Map&lt;Bytes, Bytes&gt; getValues() {<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      // shallow pointer copy<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      return Collections.unmodifiableMap(values);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    }<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>    /**<a name="line.685"></a>
-<span class="sourceLineNo">686</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.686"></a>
-<span class="sourceLineNo">687</span>     *<a name="line.687"></a>
-<span class="sourceLineNo">688</span>     * @param key The key.<a name="line.688"></a>
-<span class="sourceLineNo">689</span>     * @param value The value. If null, removes the setting.<a name="line.689"></a>
-<span class="sourceLineNo">690</span>     * @return the modifyable TD<a name="line.690"></a>
-<span class="sourceLineNo">691</span>     * @see #values<a name="line.691"></a>
-<span class="sourceLineNo">692</span>     */<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    public ModifyableTableDescriptor setValue(byte[] key, byte[] value) {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      return setValue(toBytesOrNull(key, v -&gt; v),<a name="line.694"></a>
-<span class="sourceLineNo">695</span>              toBytesOrNull(value, v -&gt; v));<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    }<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>    public ModifyableTableDescriptor setValue(String key, String value) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      return setValue(toBytesOrNull(key, Bytes::toBytes),<a name="line.699"></a>
-<span class="sourceLineNo">700</span>              toBytesOrNull(value, Bytes::toBytes));<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    /*<a name="line.703"></a>
-<span class="sourceLineNo">704</span>     * @param key The key.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>     * @param value The value. If null, removes the setting.<a name="line.705"></a>
-<span class="sourceLineNo">706</span>     */<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    private ModifyableTableDescriptor setValue(final Bytes key,<a name="line.707"></a>
-<span class="sourceLineNo">708</span>            final String value) {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      return setValue(key, toBytesOrNull(value, Bytes::toBytes));<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>    /*<a name="line.712"></a>
-<span class="sourceLineNo">713</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.713"></a>
-<span class="sourceLineNo">714</span>     *<a name="line.714"></a>
-<span class="sourceLineNo">715</span>     * @param key The key.<a name="line.715"></a>
-<span class="sourceLineNo">716</span>     * @param value The value. If null, removes the setting.<a name="line.716"></a>
-<span class="sourceLineNo">717</span>     */<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    public ModifyableTableDescriptor setValue(final Bytes key, final Bytes value) {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      if (value == null) {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>        values.remove(key);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>      } else {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        values.put(key, value);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>      return this;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span>    private static &lt;T&gt; Bytes toBytesOrNull(T t, Function&lt;T, byte[]&gt; f) {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      if (t == null) {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>        return null;<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      } else {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>        return new Bytes(f.apply(t));<a name="line.731"></a>
-<span class="sourceLineNo">732</span>      }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    }<a name="line.733"></a>
-<span class="sourceLineNo">734</span><a name="line.734"></a>
-<span class="sourceLineNo">735</span>    /**<a name="line.735"></a>
-<span class="sourceLineNo">736</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.736"></a>
-<span class="sourceLineNo">737</span>     *<a name="line.737"></a>
-<span class="sourceLineNo">738</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.738"></a>
-<span class="sourceLineNo">739</span>     * parameters.<a name="line.739"></a>
-<span class="sourceLineNo">740</span>     * @return the modifyable TD<a name="line.740"></a>
-<span class="sourceLineNo">741</span>     */<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    public ModifyableTableDescriptor removeValue(final String key) {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      return setValue(key, (String) null);<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    }<a name="line.744"></a>
-<span class="sourceLineNo">745</span><a name="line.745"></a>
-<span class="sourceLineNo">746</span>    /**<a name="line.746"></a>
-<span class="sourceLineNo">747</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.747"></a>
-<span class="sourceLineNo">748</span>     *<a name="line.748"></a>
-<span class="sourceLineNo">749</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.749"></a>
-<span class="sourceLineNo">750</span>     * parameters.<a name="line.750"></a>
-<span class="sourceLineNo">751</span>     * @return the modifyable TD<a name="line.751"></a>
-<span class="sourceLineNo">752</span>     */<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    public ModifyableTableDescriptor removeValue(Bytes key) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      return setValue(key, (Bytes) null);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>    /**<a name="line.757"></a>
-<span class="sourceLineNo">758</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.758"></a>
-<span class="sourceLineNo">759</span>     *<a name="line.759"></a>
-<span class="sourceLineNo">760</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.760"></a>
-<span class="sourceLineNo">761</span>     * parameters.<a name="line.761"></a>
-<span class="sourceLineNo">762</span>     * @return the modifyable TD<a name="line.762"></a>
-<span class="sourceLineNo">763</span>     */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    public ModifyableTableDescriptor removeValue(final byte[] key) {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      return removeValue(new Bytes(key));<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    }<a name="line.766"></a>
-<span class="sourceLineNo">767</span><a name="line.767"></a>
-<span class="sourceLineNo">768</span>    /**<a name="line.768"></a>
-<span class="sourceLineNo">769</span>     * Check if the readOnly flag of the table is set. If the readOnly flag is<a name="line.769"></a>
-<span class="sourceLineNo">770</span>     * set then the contents of the table can only be read from but not<a name="line.770"></a>
-<span class="sourceLineNo">771</span>     * modified.<a name="line.771"></a>
-<span class="sourceLineNo">772</span>     *<a name="line.772"></a>
-<span class="sourceLineNo">773</span>     * @return true if all columns in the table should be read only<a name="line.773"></a>
-<span class="sourceLineNo">774</span>     */<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    @Override<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    public boolean isReadOnly() {<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      return getOrDefault(READONLY_KEY, Boolean::valueOf, DEFAULT_READONLY);<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    }<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>    /**<a name="line.780"></a>
-<span class="sourceLineNo">781</span>     * Setting the table as read only sets all the columns in the table as read<a name="line.781"></a>
-<span class="sourceLineNo">782</span>     * only. By default all tables are modifiable, but if the readOnly flag is<a name="line.782"></a>
-<span class="sourceLineNo">783</span>     * set to true then the contents of the table can only be read but not<a name="line.783"></a>
-<span class="sourceLineNo">784</span>     * modified.<a name="line.784"></a>
-<span class="sourceLineNo">785</span>     *<a name="line.785"></a>
-<span class="sourceLineNo">786</span>     * @param readOnly True if all of the columns in the table should be read<a name="line.786"></a>
-<span class="sourceLineNo">787</span>     * only.<a name="line.787"></a>
-<span class="sourceLineNo">788</span>     * @return the modifyable TD<a name="line.788"></a>
-<span class="sourceLineNo">789</span>     */<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    public ModifyableTableDescriptor setReadOnly(final boolean readOnly) {<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      return setValue(READONLY_KEY, Boolean.toString(readOnly));<a name="line.791"></a>
-<span class="sourceLineNo">792</span>    }<a name="line.792"></a>
-<span class="sourceLineNo">793</span><a name="line.793"></a>
-<span class="sourceLineNo">794</span>    /**<a name="line.794"></a>
-<span class="sourceLineNo">795</span>     * Check if the compaction enable flag of the table is true. If flag is<a name="line.795"></a>
-<span class="sourceLineNo">796</span>     * false then no minor/major compactions will be done in real.<a name="line.796"></a>
-<span class="sourceLineNo">797</span>     *<a name="line.797"></a>
-<span class="sourceLineNo">798</span>     * @return true if table compaction enabled<a name="line.798"></a>
-<span class="sourceLineNo">799</span>     */<a name="line.799"></a>
-<span class="sourceLineNo">800</span>    @Override<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    public boolean isCompactionEnabled() {<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return getOrDefault(COMPACTION_ENABLED_KEY, Boolean::valueOf, DEFAULT_COMPACTION_ENABLED);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>     * Setting the table compaction enable flag.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>     *<a name="line.807"></a>
-<span class="sourceLineNo">808</span>     * @param isEnable True if enable compaction.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>     * @return the modifyable TD<a name="line.809"></a>
-<span class="sourceLineNo">810</span>     */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    public ModifyableTableDescriptor setCompactionEnabled(final boolean isEnable) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      return setValue(COMPACTION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    }<a name="line.813"></a>
-<span class="sourceLineNo">814</span><a name="line.814"></a>
-<span class="sourceLineNo">815</span>    /**<a name="line.815"></a>
-<span class="sourceLineNo">816</span>     * Check if the split enable flag of the table is true. If flag is false then no split will be<a name="line.816"></a>
-<span class="sourceLineNo">817</span>     * done.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>     *<a name="line.818"></a>
-<span class="sourceLineNo">819</span>     * @return true if table region split enabled<a name="line.819"></a>
-<span class="sourceLineNo">820</span>     */<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    @Override<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    public boolean isSplitEnabled() {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return getOrDefault(SPLIT_ENABLED_KEY, Boolean::valueOf, DEFAULT_SPLIT_ENABLED);<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    }<a name="line.824"></a>
-<span class="sourceLineNo">825</span><a name="line.825"></a>
-<span class="sourceLineNo">826</span>    /**<a name="line.826"></a>
-<span class="sourceLineNo">827</span>     * Setting the table region split enable flag.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>     * @param isEnable True if enable region split.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>     *<a name="line.829"></a>
-<span class="sourceLineNo">830</span>     * @return the modifyable TD<a name="line.830"></a>
-<span class="sourceLineNo">831</span>     */<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    public ModifyableTableDescriptor setSplitEnabled(final boolean isEnable) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      return setValue(SPLIT_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    }<a name="line.834"></a>
-<span class="sourceLineNo">835</span><a name="line.835"></a>
-<span class="sourceLineNo">836</span>    /**<a name="line.836"></a>
-<span class="sourceLineNo">837</span>     * Check if the region merge enable flag of the table is true. If flag is false then no merge<a name="line.837"></a>
-<span class="sourceLineNo">838</span>     * will be done.<a name="line.838"></a>
-<span class="sourceLineNo">839</span>     *<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     * @return true if table region merge enabled<a name="line.840"></a>
-<span class="sourceLineNo">841</span>     */<a name="line.841"></a>
-<span class="sourceLineNo">842</span>    @Override<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    public boolean isMergeEnabled() {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      return getOrDefault(MERGE_ENABLED_KEY, Boolean::valueOf, DEFAULT_MERGE_ENABLED);<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    }<a name="line.845"></a>
-<span class="sourceLineNo">846</span><a name="line.846"></a>
-<span class="sourceLineNo">847</span>    /**<a name="line.847"></a>
-<span class="sourceLineNo">848</span>     * Setting the table region merge enable flag.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>     * @param isEnable True if enable region merge.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>     *<a name="line.850"></a>
-<span class="sourceLineNo">851</span>     * @return the modifyable TD<a name="line.851"></a>
-<span class="sourceLineNo">852</span>     */<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    public ModifyableTableDescriptor setMergeEnabled(final boolean isEnable) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      return setValue(MERGE_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span>    /**<a name="line.857"></a>
-<span class="sourceLineNo">858</span>     * Check if normalization enable flag of the table is true. If flag is false<a name="line.858"></a>
-<span class="sourceLineNo">859</span>     * then no region normalizer won't attempt to normalize this table.<a name="line.859"></a>
-<span class="sourceLineNo">860</span>     *<a name="line.860"></a>
-<span class="sourceLineNo">861</span>     * @return true if region normalization is enabled for this table<a name="line.861"></a>
-<span class="sourceLineNo">862</span>     */<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    @Override<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    public boolean isNormalizationEnabled() {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      return getOrDefault(NORMALIZATION_ENABLED_KEY, Boolean::valueOf, DEFAULT_NORMALIZATION_ENABLED);<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    }<a name="line.866"></a>
-<span class="sourceLineNo">867</span><a name="line.867"></a>
-<span class="sourceLineNo">868</span>    /**<a name="line.868"></a>
-<span class="sourceLineNo">869</span>     * Check if there is the target region count. If so, the normalize plan will be calculated based<a name="line.869"></a>
-<span class="sourceLineNo">870</span>     * on the target region count.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>     * @return target region count after normalize done<a name="line.871"></a>
-<span class="sourceLineNo">872</span>     */<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    @Override<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    public int getNormalizerTargetRegionCount() {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>      return getOrDefault(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer::valueOf,<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        Integer.valueOf(-1));<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    }<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    /**<a name="line.879"></a>
-<span class="sourceLineNo">880</span>     * Check if there is the target region size. If so, the normalize plan will be calculated based<a name="line.880"></a>
-<span class="sourceLineNo">881</span>     * on the target region size.<a name="line.881"></a>
-<span class="sourceLineNo">882</span>     * @return target region size after normalize done<a name="line.882"></a>
-<span class="sourceLineNo">883</span>     */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    @Override<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    public long getNormalizerTargetRegionSize() {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      return getOrDefault(NORMALIZER_TARGET_REGION_SIZE_KEY, Long::valueOf, Long.valueOf(-1));<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
-<span class="sourceLineNo">888</span><a name="line.888"></a>
-<span class="sourceLineNo">889</span>    /**<a name="line.889"></a>
-<span class="sourceLineNo">890</span>     * Setting the table normalization enable flag.<a name="line.890"></a>
-<span class="sourceLineNo">891</span>     *<a name="line.891"></a>
-<span class="sourceLineNo">892</span>     * @param isEnable True if enable normalization.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>     * @return the modifyable TD<a name="line.893"></a>
-<span class="sourceLineNo">894</span>     */<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    public ModifyableTableDescriptor setNormalizationEnabled(final boolean isEnable) {<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      return setValue(NORMALIZATION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    }<a name="line.897"></a>
-<span class="sourceLineNo">898</span><a name="line.898"></a>
-<span class="sourceLineNo">899</span>    /**<a name="line.899"></a>
-<span class="sourceLineNo">900</span>     * Setting the target region count of table normalization .<a name="line.900"></a>
-<span class="sourceLineNo">901</span>     * @param regionCount the target region count.<a name="line.901"></a>
-<span class="sourceLineNo">902</span>     * @return the modifyable TD<a name="line.902"></a>
-<span class="sourceLineNo">903</span>     */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>    public ModifyableTableDescriptor setNormalizerTargetRegionCount(final int regionCount) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>      return setValue(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer.toString(regionCount));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>    }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>    /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>     * Setting the target region size of table normalization.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>     * @param regionSize the target region size.<a name="line.910"></a>
-<span class="sourceLineNo">911</span>     * @return the modifyable TD<a name="line.911"></a>
-<span class="sourceLineNo">912</span>     */<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    public ModifyableTableDescriptor setNormalizerTargetRegionSize(final long regionSize) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      return setValue(NORMALIZER_TARGET_REGION_SIZE_KEY, Long.toString(regionSize));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>     * Sets the {@link Durability} setting for the table. This defaults to<a name="line.918"></a>
-<span class="sourceLineNo">919</span>     * Durability.USE_DEFAULT.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>     *<a name="line.920"></a>
-<span class="sourceLineNo">921</span>     * @param durability enum value<a name="line.921"></a>
-<span class="sourceLineNo">922</span>     * @return the modifyable TD<a name="line.922"></a>
-<span class="sourceLineNo">923</span>     */<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    public ModifyableTableDescriptor setDurability(Durability durability) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      return setValue(DURABILITY_KEY, durability.name());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    }<a name="line.926"></a>
-<span class="sourceLineNo">927</span><a name="line.927"></a>
-<span class="sourceLineNo">928</span>    /**<a name="line.928"></a>
-<span class="sourceLineNo">929</span>     * Returns the durability setting for the table.<a name="line.929"></a>
-<span class="sourceLineNo">930</span>     *<a name="line.930"></a>
-<span class="sourceLineNo">931</span>     * @return durability setting for the table.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>     */<a name="line.932"></a>
-<span class="sourceLineNo">933</span>    @Override<a name="line.933"></a>
-<span class="sourceLineNo">934</span>    public Durability getDurability() {<a name="line.934"></a>
-<span class="sourceLineNo">935</span>      return getOrDefault(DURABILITY_KEY, Durability::valueOf, DEFAULT_DURABLITY);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>    }<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>    /**<a name="line.938"></a>
-<span class="sourceLineNo">939</span>     * Get the name of the table<a name="line.939"></a>
-<span class="sourceLineNo">940</span>     *<a name="line.940"></a>
-<span class="sourceLineNo">941</span>     * @return TableName<a name="line.941"></a>
-<span class="sourceLineNo">942</span>     */<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    @Override<a name="line.943"></a>
-<span class="sourceLineNo">944</span>    public TableName getTableName() {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      return name;<a name="line.945"></a>
-<span class="sourceLineNo">946</span>    }<a name="line.946"></a>
-<span class="sourceLineNo">947</span><a name="line.947"></a>
-<span class="sourceLineNo">948</span>    /**<a name="line.948"></a>
-<span class="sourceLineNo">949</span>     * This sets the class associated with the region split policy which<a name="line.949"></a>
-<span class="sourceLineNo">950</span>     * determines when a region split should occur. The class used by default is<a name="line.950"></a>
-<span class="sourceLineNo">951</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.951"></a>
-<span class="sourceLineNo">952</span>     *<a name="line.952"></a>
-<span class="sourceLineNo">953</span>     * @param clazz the class name<a name="line.953"></a>
-<span class="sourceLineNo">954</span>     * @return the modifyable TD<a name="line.954"></a>
-<span class="sourceLineNo">955</span>     */<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    public ModifyableTableDescriptor setRegionSplitPolicyClassName(String clazz) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      return setValue(SPLIT_POLICY_KEY, clazz);<a name="line.957"></a>
-<span class="sourceLineNo">958</span>    }<a name="line.958"></a>
-<span class="sourceLineNo">959</span><a name="line.959"></a>
-<span class="sourceLineNo">960</span>    /**<a name="line.960"></a>
-<span class="sourceLineNo">961</span>     * This gets the class associated with the region split policy which<a name="line.961"></a>
-<span class="sourceLineNo">962</span>     * determines when a region split should occur. The class used by default is<a name="line.962"></a>
-<span class="sourceLineNo">963</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.963"></a>
-<span class="sourceLineNo">964</span>     *<a name="line.964"></a>
-<span class="sourceLineNo">965</span>     * @return the class name of the region split policy for this table. If this<a name="line.965"></a>
-<span class="sourceLineNo">966</span>     * returns null, the default split policy is used.<a name="line.966"></a>
-<span class="sourceLineNo">967</span>     */<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    @Override<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    public String getRegionSplitPolicyClassName() {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      return getOrDefault(SPLIT_POLICY_KEY, Function.identity(), null);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>    /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>     * Returns the maximum size upto which a region can grow to after which a<a name="line.974"></a>
-<span class="sourceLineNo">975</span>     * region split is triggered. The region size is represented by the size of<a name="line.975"></a>
-<span class="sourceLineNo">976</span>     * the biggest store file in that region.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>     *<a name="line.977"></a>
-<span class="sourceLineNo">978</span>     * @return max hregion size for table, -1 if not set.<a name="line.978"></a>
-<span class="sourceLineNo">979</span>     *<a name="line.979"></a>
-<span class="sourceLineNo">980</span>     * @see #setMaxFileSize(long)<a name="line.980"></a>
-<span class="sourceLineNo">981</span>     */<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    @Override<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    public long getMaxFileSize() {<a name="line.983"></a>
-<span class="sourceLineNo">984</span>      return getOrDefault(MAX_FILESIZE_KEY, Long::valueOf, (long) -1);<a name="line.984"></a>
-<span class="sourceLineNo">985</span>    }<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    /**<a name="line.987"></a>
-<span class="sourceLineNo">988</span>     * Sets the maximum size upto which a region can grow to after which a<a name="line.988"></a>
-<span class="sourceLineNo">989</span>     * region split is triggered. The region size is represented by the size of<a name="line.989"></a>
-<span class="sourceLineNo">990</span>     * the biggest store file in that region, i.e. If the biggest store file<a name="line.990"></a>
-<span class="sourceLineNo">991</span>     * grows beyond the maxFileSize, then the region split is triggered. This<a name="line.991"></a>
-<span class="sourceLineNo">992</span>     * defaults to a value of 256 MB.<a name="line.992"></a>
-<span class="sourceLineNo">993</span>     * &lt;p&gt;<a name="line.993"></a>
-<span class="sourceLineNo">994</span>     * This is not an absolute value and might vary. Assume that a single row<a name="line.994"></a>
-<span class="sourceLineNo">995</span>     * exceeds the maxFileSize then the storeFileSize will be greater than<a name="line.995"></a>
-<span class="sourceLineNo">996</span>     * maxFileSize since a single row cannot be split across multiple regions<a name="line.996"></a>
-<span class="sourceLineNo">997</span>     * &lt;/p&gt;<a name="line.997"></a>
-<span class="sourceLineNo">998</span>     *<a name="line.998"></a>
-<span class="sourceLineNo">999</span>     * @param maxFileSize The maximum file size that a store file can grow to<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>     * before a split is triggered.<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>     * @return the modifyable TD<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>     */<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>    public ModifyableTableDescriptor setMaxFileSize(long maxFileSize) {<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      return setValue(MAX_FILESIZE_KEY, Long.toString(maxFileSize));<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    }<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span><a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    public ModifyableTableDescriptor setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      return setMaxFileSize(Long.parseLong(PrettyPrinter.<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        valueOf(maxFileSize, PrettyPrinter.Unit.BYTE)));<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    }<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span><a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    /**<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>     * Returns the size of the memstore after which a flush to filesystem is<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>     * triggered.<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>     *<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>     * @return memory cache flush size for each hregion, -1 if not set.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>     *<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>     * @see #setMemStoreFlushSize(long)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>     */<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>    @Override<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>    public long getMemStoreFlushSize() {<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      return getOrDefault(MEMSTORE_FLUSHSIZE_KEY, Long::valueOf, (long) -1);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    }<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    /**<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>     * Represents the maximum size of the memstore after which the contents of<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>     * the memstore are flushed to the filesystem. This defaults to a size of 64<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>     * MB.<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>     *<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>     * @param memstoreFlushSize memory cache flush size for each hregion<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>     * @return the modifyable TD<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>     */<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    public ModifyableTableDescriptor setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>      return setValue(MEMSTORE_FLUSHSIZE_KEY, Long.toString(memstoreFlushSize));<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    }<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span><a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>    public ModifyableTableDescriptor setMemStoreFlushSize(String memStoreFlushSize)<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>      throws HBaseException {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      return setMemStoreFlushSize(Long.parseLong(PrettyPrinter.valueOf(memStoreFlushSize,<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        PrettyPrinter.Unit.BYTE)));<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span><a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>    /**<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>     * This sets the class associated with the flush policy which determines<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>     * determines the stores need to be flushed when flushing a region. The<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>     * class used by default is defined in<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>     * org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>     *<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>     * @param clazz the class name<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>     * @return the modifyable TD<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>     */<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>    public ModifyableTableDescriptor setFlushPolicyClassName(String clazz) {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>      return setValue(FLUSH_POLICY_KEY, clazz);<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span><a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>    /**<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>     * This gets the class associated with the flush policy which determines the<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>     * stores need to be flushed when flushing a region. The class used by<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>     * default is defined in org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>     *<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>     * @return the class name of the flush policy for this table. If this<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>     * returns null, the default flush policy is used.<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>     */<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    @Override<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    public String getFlushPolicyClassName() {<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>      return getOrDefault(FLUSH_POLICY_KEY, Function.identity(), null);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    }<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>    /**<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>     * Adds a column family. For the updating purpose please use<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>     * {@link #modifyColumnFamily(ColumnFamilyDescriptor)} instead.<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>     *<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>     * @param family to add.<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>     * @return the modifyable TD<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>     */<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    public ModifyableTableDescriptor setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      }<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>      if (hasColumnFamily(family.getName())) {<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        throw new IllegalArgumentException("Family '"<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>                + family.getNameAsString() + "' already exists so cannot be added");<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      }<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      return putColumnFamily(family);<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span><a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>    /**<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>     * Modifies the existing column family.<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>     *<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>     * @param family to update<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>     * @return this (for chained invocation)<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>     */<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>    public ModifyableTableDescriptor modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      }<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      if (!hasColumnFamily(family.getName())) {<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>        throw new IllegalArgumentException("Column family '" + family.getNameAsString()<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>                + "' does not exist");<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>      return putColumnFamily(family);<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span><a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    private ModifyableTableDescriptor putColumnFamily(ColumnFamilyDescriptor family) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>      families.put(family.getName(), family);<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      return this;<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span><a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    /**<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>     * Checks to see if this table contains the given column family<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>     *<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>     * @param familyName Family name or column name.<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>     * @return true if the table contains the specified family name<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>     */<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    @Override<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>    public boolean hasColumnFamily(final byte[] familyName) {<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      return families.containsKey(familyName);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span><a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>    /**<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>     * @return Name of this table and then a map of all of the column family descriptors.<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>     */<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    @Override<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    public String toString() {<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      StringBuilder s = new StringBuilder();<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>      s.append(getValues(true));<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>      families.values().forEach(f -&gt; s.append(", ").append(f));<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>      return s.toString();<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    }<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span><a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    /**<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>     * @return Name of this table and then a map of all of the column family<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>     * descriptors (with only the non-default column family attributes)<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>     */<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    @Override<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>    public String toStringCustomizedValues() {<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      StringBuilder s = new StringBuilder();<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      s.append(getValues(false));<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>      families.values().forEach(hcd -&gt; s.append(", ").append(hcd.toStringCustomizedValues()));<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      return s.toString();<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    }<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span><a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>    /**<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>     * @return map of all table attributes formatted into string.<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>     */<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>    public String toStringTableAttributes() {<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>      return getValues(true).toString();<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>    }<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span><a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>    private StringBuilder getValues(boolean printDefaults) {<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>      StringBuilder s = new StringBuilder();<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span><a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>      // step 1: set partitioning and pruning<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>      Set&lt;Bytes&gt; reservedKeys = new TreeSet&lt;&gt;();<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>      Set&lt;Bytes&gt; userKeys = new TreeSet&lt;&gt;();<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>      for (Map.Entry&lt;Bytes, Bytes&gt; entry : values.entrySet()) {<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>        if (entry.getKey() == null || entry.getKey().get() == null) {<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>          continue;<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>        }<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>        String key = Bytes.toString(entry.getKey().get());<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>        // in this section, print out reserved keywords + coprocessor info<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>        if (!RESERVED_KEYWORDS.contains(entry.getKey()) &amp;&amp; !key.startsWith("coprocessor$")) {<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>          userKeys.add(entry.getKey());<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>          continue;<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>        }<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>        // only print out IS_META if true<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>        String value = Bytes.toString(entry.getValue().get());<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>        if (key.equalsIgnoreCase(IS_META)) {<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>          if (Boolean.valueOf(value) == false) {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>            continue;<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>          }<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>        }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>        // see if a reserved key is a default value. may not want to print it out<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>        if (printDefaults<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>                || !DEFAULT_VALUES.containsKey(key)<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>                || !DEFAULT_VALUES.get(key).equalsIgnoreCase(value)) {<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>          reservedKeys.add(entry.getKey());<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>        }<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>      }<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span><a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>      // early exit optimization<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>      boolean hasAttributes = !reservedKeys.isEmpty() || !userKeys.isEmpty();<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>      if (!hasAttributes) {<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>        return s;<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>      }<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span><a name="line.1188"></a>
-<span class="sourceLineNo">1189</span>      s.append(", {");<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>      // step 2: printing attributes<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>      if (hasAttributes) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>        s.append("TABLE_ATTRIBUTES =&gt; {");<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span><a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>        // print all reserved keys first<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        boolean printCommaForAttr = false;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>        for (Bytes k : reservedKeys) {<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>          String key = Bytes.toString(k.get());<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>          String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>          if (printCommaForAttr) {<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>            s.append(", ");<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          }<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          printCommaForAttr = true;<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          s.append(key);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          s.append(" =&gt; ");<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>          s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        }<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span><a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>        if (!userKeys.isEmpty()) {<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          // print all non-reserved as a separate subset<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>          if (printCommaForAttr) {<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>            s.append(", ");<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          }<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>          s.append(HConstants.METADATA).append(" =&gt; ");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>          s.append("{");<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>          boolean printCommaForCfg = false;<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>          for (Bytes k : userKeys) {<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>            String key = Bytes.toString(k.get());<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>            String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>            if (printCommaForCfg) {<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>              s.append(", ");<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>            }<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>            printCommaForCfg = true;<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>            s.append('\'').append(key).append('\'');<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>            s.append(" =&gt; ");<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>            s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>          }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>          s.append("}");<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>        }<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span><a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>        s.append("}");<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>      }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span><a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>      s.append("}"); // end METHOD<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>      return s;<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>    }<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>    /**<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>     * Compare the contents of the descriptor with another one passed as a<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>     * parameter. Checks if the obj passed is an instance of ModifyableTableDescriptor,<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>     * if yes then the contents of the descriptors are compared.<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>     *<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>     * @param obj The object to compare<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>     * @return true if the contents of the the two descriptors exactly match<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>     *<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>     * @see java.lang.Object#equals(java.lang.Object)<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>     */<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    @Override<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>    public boolean equals(Object obj) {<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>      if (this == obj) {<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>        return true;<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>      }<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>      if (obj instanceof ModifyableTableDescriptor) {<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>        return TableDescriptor.COMPARATOR.compare(this, (ModifyableTableDescriptor) obj) == 0;<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      }<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>      return false;<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>    }<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>    /**<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>     * @return hash code<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>     */<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>    @Override<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    public int hashCode() {<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>      int result = this.name.hashCode();<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>      if (this.families.size() &gt; 0) {<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>        for (ColumnFamilyDescriptor e : this.families.values()) {<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>          result ^= e.hashCode();<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>        }<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>      }<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>      result ^= values.hashCode();<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>      return result;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>    }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>    // Comparable<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>    /**<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>     * Compares the descriptor with another descriptor which is passed as a<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>     * parameter. This compares the content of the two descriptors and not the<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>     * reference.<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>     *<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>     * @param other The MTD to compare<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>     * @return 0 if the contents of the descriptors are exactly matching, 1 if<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>     * there is a mismatch in the contents<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>     */<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>    @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>    public int compareTo(final ModifyableTableDescriptor other) {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>      return TableDescriptor.COMPARATOR.compare(this, other);<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>    }<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span><a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>    @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>    public ColumnFamilyDescriptor[] getColumnFamilies() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>      return families.values().toArray(new ColumnFamilyDescriptor[families.size()]);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>    /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>     * Returns the configured replicas per region<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>     */<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>    @Override<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>    public int getRegionReplication() {<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>      return getOrDefault(REGION_REPLICATION_KEY, Integer::valueOf, DEFAULT_REGION_REPLICATION);<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>    }<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span><a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>    /**<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>     * Sets the number of replicas per region.<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>     *<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>     * @param regionReplication the replication factor per region<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>     * @return the modifyable TD<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>     */<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    public ModifyableTableDescriptor setRegionReplication(int regionReplication) {<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>      return setValue(REGION_REPLICATION_KEY, Integer.toString(regionReplication));<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>    }<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span><a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>    /**<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>     * @return true if the read-replicas memstore replication is enabled.<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>     */<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>    @Override<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    public boolean hasRegionMemStoreReplication() {<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>      return getOrDefault(REGION_MEMSTORE_REPLICATION_KEY, Boolean::valueOf, DEFAULT_REGION_MEMSTORE_REPLICATION);<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>    }<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span><a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>    /**<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>     * Enable or Disable the memstore replication from the primary region to the<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>     * replicas. The replication will be used only for meta operations (e.g.<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>     * flush, compaction, ...)<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>     *<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>     * @param memstoreReplication true if the new data written to the primary<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>     * region should be replicated. false if the secondaries can tollerate to<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>     * have new data only when the primary flushes the memstore.<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>     * @return the modifyable TD<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>     */<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>    public ModifyableTableDescriptor setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>      setValue(REGION_MEMSTORE_REPLICATION_KEY, Boolean.toString(memstoreReplication));<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>      // If the memstore replication is setup, we do not have to wait for observing a flush event<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>      // from primary before starting to serve reads, because gaps from replication is not applicable<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>      return setValue(REGION_REPLICA_WAIT_FOR_PRIMARY_FLUSH_CONF_KEY,<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>              Boolean.toString(memstoreReplication));<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    }<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span><a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>    public ModifyableTableDescriptor setPriority(int priority) {<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>      return setValue(PRIORITY_KEY, Integer.toString(priority));<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>    }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span><a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>    @Override<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    public int getPriority() {<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>      return getOrDefault(PRIORITY_KEY, Integer::valueOf, DEFAULT_PRIORITY);<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>    }<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span><a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>    /**<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>     * Returns all the column family names of the current table. The map of<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>     * TableDescriptor contains mapping of family name to ColumnFamilyDescriptor.<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>     * This returns all the keys of the family map which represents the column<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>     * family names of the table.<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>     *<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>     * @return Immutable sorted set of the keys of the families.<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>     */<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>    @Override<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>    public Set&lt;byte[]&gt; getColumnFamilyNames() {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>      return Collections.unmodifiableSet(this.families.keySet());<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    }<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    /**<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>     * Returns the ColumnFamilyDescriptor for a specific column family with name as<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>     * specified by the parameter column.<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>     *<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>     * @param column Column family name<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>     * passed in column.<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>     */<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>    @Override<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>    public ColumnFamilyDescriptor getColumnFamily(final byte[] column) {<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      return this.families.get(column);<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>    }<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span><a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    /**<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>     * Removes the ColumnFamilyDescriptor with name specified by the parameter column<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>     * from the table descriptor<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>     *<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>     * @param column Name of the column family to be removed.<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>     * passed in column.<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>     */<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    public ColumnFamilyDescriptor removeColumnFamily(final byte[] column) {<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>      return this.families.remove(column);<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>    }<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span><a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>    /**<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>     * loadable or not will be determined when a region is opened.<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>     *<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>     * @param className Full class name.<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>     * @throws IOException<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>     * @return the modifyable TD<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>     */<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>    public ModifyableTableDescriptor setCoprocessor(String className) throws IOException {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>      return setCoprocessor(<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        CoprocessorDescriptorBuilder.newBuilder(className).setPriority(Coprocessor.PRIORITY_USER)<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          .build());<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>    }<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span><a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>    /**<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>     * loadable or not will be determined when a region is opened.<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>     *<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>     * @throws IOException any illegal parameter key/value<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>     * @return the modifyable TD<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>     */<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>    public ModifyableTableDescriptor setCoprocessor(CoprocessorDescriptor cp)<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>            throws IOException {<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>      checkHasCoprocessor(cp.getClassName());<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>      if (cp.getPriority() &lt; 0) {<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        throw new IOException("Priority must be bigger than or equal with zero, current:"<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>          + cp.getPriority());<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>      }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>      // Validate parameter kvs and then add key/values to kvString.<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>      StringBuilder kvString = new StringBuilder();<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>      for (Map.Entry&lt;String, String&gt; e : cp.getProperties().entrySet()) {<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>        if (!e.getKey().matches(CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN)) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>          throw new IOException("Illegal parameter key = " + e.getKey());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>        }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>        if (!e.getValue().matches(CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN)) {<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>          throw new IOException("Illegal parameter (" + e.getKey()<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>                  + ") value = " + e.getValue());<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>        }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>        if (kvString.length() != 0) {<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>          kvString.append(',');<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>        }<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>        kvString.append(e.getKey());<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>        kvString.append('=');<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>        kvString.append(e.getValue());<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>      }<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span><a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>      String value = cp.getJarPath().orElse("")<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>              + "|" + cp.getClassName() + "|" + Integer.toString(cp.getPriority()) + "|"<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>              + kvString.toString();<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>      return setCoprocessorToMap(value);<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>    }<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span><a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>    /**<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>     * loadable or not will be determined when a region is opened.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>     *<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>     * @throws IOException<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>     * @return the modifyable TD<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>     * @deprecated used by HTableDescriptor and admin.rb.<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>     *                       As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>     */<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>    @Deprecated<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>    public ModifyableTableDescriptor setCoprocessorWithSpec(final String specStr)<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>      throws IOException {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>      CoprocessorDescriptor cpDesc = toCoprocessorDescriptor(specStr).orElseThrow(<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>        () -&gt; new IllegalArgumentException(<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          "Format does not match " + CP_HTD_ATTR_VALUE_PATTERN + ": " + specStr));<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>      checkHasCoprocessor(cpDesc.getClassName());<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>      return setCoprocessorToMap(specStr);<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>    }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>    private void checkHasCoprocessor(final String className) throws IOException {<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>      if (hasCoprocessor(className)) {<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>        throw new IOException("Coprocessor " + className + " already exists.");<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>      }<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>    }<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span><a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>    /**<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>     * Add coprocessor to values Map<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>     * @return Returns &lt;code&gt;this&lt;/code&gt;<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>     */<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>    private ModifyableTableDescriptor setCoprocessorToMap(final String specStr) {<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>      if (specStr == null) {<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>        return this;<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      // generate a coprocessor key<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      int maxCoprocessorNumber = 0;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>      Matcher keyMatcher;<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values.entrySet()) {<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e.getKey().get()));<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>        if (!keyMatcher.matches()) {<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>          continue;<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>        }<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>        maxCoprocessorNumber = Math.max(Integer.parseInt(keyMatcher.group(1)), maxCoprocessorNumber);<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>      }<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>      maxCoprocessorNumber++;<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>      String key = "coprocessor$" + Integer.toString(maxCoprocessorNumber);<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      return setValue(new Bytes(Bytes.toBytes(key)), new Bytes(Bytes.toBytes(specStr)));<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>    }<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span><a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    /**<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>     * Check if the table has an attached co-processor represented by the name<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>     * className<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>     *<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>     * @param classNameToMatch - Class name of the co-processor<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>     * @return true of the table has a co-processor className<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>     */<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    @Override<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    public boolean hasCoprocessor(String classNameToMatch) {<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      return getCoprocessorDescriptors().stream().anyMatch(cp -&gt; cp.getClassName()<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>        .equals(classNameToMatch));<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>    }<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>    /**<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>     * Return the list of attached co-processor represented by their name<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>     * className<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>     *<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>     * @return The list of co-processors classNames<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>     */<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>    @Override<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>    public List&lt;CoprocessorDescriptor&gt; getCoprocessorDescriptors() {<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>      List&lt;CoprocessorDescriptor&gt; result = new ArrayList&lt;&gt;();<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e: getValues().entrySet()) {<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        String key = Bytes.toString(e.getKey().get()).trim();<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>        if (CP_HTD_ATTR_KEY_PATTERN.matcher(key).matches()) {<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>          toCoprocessorDescriptor(Bytes.toString(e.getValue().get()).trim())<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>            .ifPresent(result::add);<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>        }<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>      }<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>      return result;<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>    }<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span><a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>    /**<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>     * Remove a coprocessor from those set on the table<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>     *<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>     * @param className Class name of the co-processor<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>     */<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    public void removeCoprocessor(String className) {<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>      Bytes match = null;<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>      Matcher keyMatcher;<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>      Matcher valueMatcher;<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>              .entrySet()) {<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                .getKey().get()));<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (!keyMatcher.matches()) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          continue;<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>        }<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>        valueMatcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(Bytes<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>                .toString(e.getValue().get()));<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>        if (!valueMatcher.matches()) {<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>          continue;<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        }<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>        // get className and compare<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>        String clazz = valueMatcher.group(2).trim(); // classname is the 2nd field<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        // remove the CP if it is present<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        if (clazz.equals(className.trim())) {<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>          match = e.getKey();<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>          break;<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>        }<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      }<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // if we found a match, remove it<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      if (match != null) {<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>        ModifyableTableDescriptor.this.removeValue(match);<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      }<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>    }<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span><a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>    /**<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>     * @return the bytes in pb format<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>     */<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    private byte[] toByteArray() {<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>      return ProtobufUtil.prependPBMagic(ProtobufUtil.toTableSchema(this).toByteArray());<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    }<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span><a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>    /**<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     * @param bytes A pb serialized {@link ModifyableTableDescriptor} instance<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * with pb magic prefix<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     * @return An instance of {@link ModifyableTableDescriptor} made from<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * &lt;code&gt;bytes&lt;/code&gt;<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @throws DeserializationException<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     * @see #toByteArray()<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     */<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    private static TableDescriptor parseFrom(final byte[] bytes)<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>            throws DeserializationException {<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>      if (!ProtobufUtil.isPBMagicPrefix(bytes)) {<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        throw new DeserializationException("Expected PB encoded ModifyableTableDescriptor");<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>      }<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>      HBaseProtos.TableSchema.Builder builder = HBaseProtos.TableSchema.newBuilder();<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>      try {<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>        ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>        return ProtobufUtil.toTableDescriptor(builder.build());<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>      } catch (IOException e) {<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>        throw new DeserializationException(e);<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>      }<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>    }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>    @Override<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    public int getColumnFamilyCount() {<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>      return families.size();<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    }<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span><a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>    @Override<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>    public Optional&lt;String&gt; getRegionServerGroup() {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      Bytes value = values.get(RSGROUP_KEY);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>      if (value != null) {<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>        return Optional.of(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      } else {<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>        return Optional.empty();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    }<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  }<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span><a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>  /**<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>   * This method is mostly intended for internal use. However, it it also relied on by hbase-shell<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>   * for backwards compatibility.<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>   */<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>  private static Optional&lt;CoprocessorDescriptor&gt; toCoprocessorDescriptor(String spec) {<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>    Matcher matcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(spec);<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>    if (matcher.matches()) {<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      // jar file path can be empty if the cp class can be loaded<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      // from class loader.<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      String path = matcher.group(1).trim().isEmpty() ?<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        null : matcher.group(1).trim();<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>      String className = matcher.group(2).trim();<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>      if (className.isEmpty()) {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        return Optional.empty();<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>      }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      String priorityStr = matcher.group(3).trim();<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>      int priority = priorityStr.isEmpty() ?<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        Coprocessor.PRIORITY_USER : Integer.parseInt(priorityStr);<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>      String cfgSpec = null;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>      try {<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>        cfgSpec = matcher.group(4);<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>      } catch (IndexOutOfBoundsException ex) {<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>        // ignore<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      }<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>      Map&lt;String, String&gt; ourConf = new TreeMap&lt;&gt;();<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>      if (cfgSpec != null &amp;&amp; !cfgSpec.trim().equals("|")) {<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>        cfgSpec = cfgSpec.substring(cfgSpec.indexOf('|') + 1);<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>        Matcher m = CP_HTD_ATTR_VALUE_PARAM_PATTERN.matcher(cfgSpec);<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>        while (m.find()) {<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          ourConf.put(m.group(1), m.group(2));<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>        }<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>      }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>      return Optional.of(CoprocessorDescriptorBuilder.newBuilder(className)<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        .setJarPath(path)<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        .setPriority(priority)<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        .setProperties(ourConf)<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>        .build());<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>    }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>    return Optional.empty();<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>  }<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>}<a name="line.1645"></a>
+<span class="sourceLineNo">254</span>      case MEMSTORE_FLUSHSIZE:<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        return PrettyPrinter.Unit.BYTE;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      default:<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        return PrettyPrinter.Unit.NONE;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
+<span class="sourceLineNo">260</span><a name="line.260"></a>
+<span class="sourceLineNo">261</span>  /**<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   *             any more.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @InterfaceAudience.Private<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @Deprecated<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  public final static String NAMESPACE_FAMILY_INFO = "info";<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   *             any more.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  @InterfaceAudience.Private<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  @Deprecated<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  public final static byte[] NAMESPACE_FAMILY_INFO_BYTES = Bytes.toBytes(NAMESPACE_FAMILY_INFO);<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   *             any more.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   */<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  @InterfaceAudience.Private<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  @Deprecated<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public final static byte[] NAMESPACE_COL_DESC_BYTES = Bytes.toBytes("d");<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  /**<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * &lt;pre&gt;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Pattern that matches a coprocessor specification. Form is:<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * {@code &lt;coprocessor jar file location&gt; '|' &lt;class name&gt; ['|' &lt;priority&gt; ['|' &lt;arguments&gt;]]}<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * where arguments are {@code &lt;KEY&gt; '=' &lt;VALUE&gt; [,...]}<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * For example: {@code hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2}<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * &lt;/pre&gt;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  private static final Pattern CP_HTD_ATTR_VALUE_PATTERN =<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    Pattern.compile("(^[^\\|]*)\\|([^\\|]+)\\|[\\s]*([\\d]*)[\\s]*(\\|.*)?$");<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN = "[^=,]+";<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN = "[^,]+";<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  private static final Pattern CP_HTD_ATTR_VALUE_PARAM_PATTERN = Pattern.compile(<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    "(" + CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN + ")=(" +<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN + "),?");<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  private static final Pattern CP_HTD_ATTR_KEY_PATTERN =<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Pattern.compile("^coprocessor\\$([0-9]+)$", Pattern.CASE_INSENSITIVE);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Table descriptor for namespace table<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @deprecated since 3.0.0 and will be removed in 4.0.0. We have folded the data in namespace<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   *   table into meta table, so do not use it any more.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21154"&gt;HBASE-21154&lt;/a&gt;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  @Deprecated<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public static final TableDescriptor NAMESPACE_TABLEDESC =<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TableDescriptorBuilder.newBuilder(TableName.NAMESPACE_TABLE_NAME)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(NAMESPACE_FAMILY_INFO_BYTES)<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        // Ten is arbitrary number. Keep versions to help debugging.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        .setMaxVersions(10).setInMemory(true).setBlocksize(8 * 1024)<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        .setScope(HConstants.REPLICATION_SCOPE_LOCAL).build())<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      .build();<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private final ModifyableTableDescriptor desc;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  /**<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @param desc The table descriptor to serialize<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public static byte[] toByteArray(TableDescriptor desc) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    if (desc instanceof ModifyableTableDescriptor) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      return ((ModifyableTableDescriptor) desc).toByteArray();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    return new ModifyableTableDescriptor(desc).toByteArray();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  /**<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * The input should be created by {@link #toByteArray}.<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * @param pbBytes A pb serialized TableDescriptor instance with pb magic prefix<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * @throws org.apache.hadoop.hbase.exceptions.DeserializationException<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static TableDescriptor parseFrom(byte[] pbBytes) throws DeserializationException {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    return ModifyableTableDescriptor.parseFrom(pbBytes);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public static TableDescriptorBuilder newBuilder(final TableName name) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    return new TableDescriptorBuilder(name);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  public static TableDescriptor copy(TableDescriptor desc) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return new ModifyableTableDescriptor(desc);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public static TableDescriptor copy(TableName name, TableDescriptor desc) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    return new ModifyableTableDescriptor(name, desc);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * Copy all values, families, and name from the input.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param desc The desciptor to copy<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @return A clone of input<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static TableDescriptorBuilder newBuilder(final TableDescriptor desc) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    return new TableDescriptorBuilder(desc);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  private TableDescriptorBuilder(final TableName name) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    this.desc = new ModifyableTableDescriptor(name);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private TableDescriptorBuilder(final TableDescriptor desc) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    this.desc = new ModifyableTableDescriptor(desc);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public TableDescriptorBuilder setCoprocessor(String className) throws IOException {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    return setCoprocessor(CoprocessorDescriptorBuilder.of(className));<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>  public TableDescriptorBuilder setCoprocessor(CoprocessorDescriptor cpDesc) throws IOException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    desc.setCoprocessor(Objects.requireNonNull(cpDesc));<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return this;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public TableDescriptorBuilder setCoprocessors(Collection&lt;CoprocessorDescriptor&gt; cpDescs)<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    throws IOException {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    for (CoprocessorDescriptor cpDesc : cpDescs) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      desc.setCoprocessor(cpDesc);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return this;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  public boolean hasCoprocessor(String classNameToMatch) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return desc.hasCoprocessor(classNameToMatch);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  public TableDescriptorBuilder setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    desc.setColumnFamily(Objects.requireNonNull(family));<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    return this;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  public TableDescriptorBuilder setColumnFamilies(<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    final Collection&lt;ColumnFamilyDescriptor&gt; families) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    families.forEach(desc::setColumnFamily);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    return this;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public TableDescriptorBuilder modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    desc.modifyColumnFamily(Objects.requireNonNull(family));<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    return this;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public TableDescriptorBuilder removeValue(final String key) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    desc.removeValue(key);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    return this;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>  public TableDescriptorBuilder removeValue(Bytes key) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    desc.removeValue(key);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    return this;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>  public TableDescriptorBuilder removeValue(byte[] key) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    desc.removeValue(key);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    return this;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  public TableDescriptorBuilder removeValue(BiPredicate&lt;Bytes, Bytes&gt; predicate) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    List&lt;Bytes&gt; toRemove =<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      desc.getValues().entrySet().stream().filter(e -&gt; predicate.test(e.getKey(), e.getValue()))<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        .map(Map.Entry::getKey).collect(Collectors.toList());<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    for (Bytes key : toRemove) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      removeValue(key);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    return this;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>  public TableDescriptorBuilder removeColumnFamily(final byte[] name) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    desc.removeColumnFamily(name);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return this;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  public TableDescriptorBuilder removeCoprocessor(String className) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    desc.removeCoprocessor(className);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return this;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public TableDescriptorBuilder setCompactionEnabled(final boolean isEnable) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    desc.setCompactionEnabled(isEnable);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    return this;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public TableDescriptorBuilder setSplitEnabled(final boolean isEnable) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    desc.setSplitEnabled(isEnable);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return this;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  public TableDescriptorBuilder setMergeEnabled(final boolean isEnable) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    desc.setMergeEnabled(isEnable);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    return this;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public TableDescriptorBuilder setDurability(Durability durability) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    desc.setDurability(durability);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    return this;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public TableDescriptorBuilder setFlushPolicyClassName(String clazz) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    desc.setFlushPolicyClassName(clazz);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    return this;<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  public TableDescriptorBuilder setMaxFileSize(long maxFileSize) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    desc.setMaxFileSize(maxFileSize);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    return this;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  }<a name="line.471"></a>
+<span class="sourceLineNo">472</span><a name="line.472"></a>
+<span class="sourceLineNo">473</span>  public TableDescriptorBuilder setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    desc.setMaxFileSize(maxFileSize);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return this;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public TableDescriptorBuilder setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    desc.setMemStoreFlushSize(memstoreFlushSize);<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    return this;<a name="line.480"></a>
+<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  public TableDescriptorBuilder setMemStoreFlushSize(String memStoreFlushSize)<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    throws HBaseException {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    desc.setMemStoreFlushSize(memStoreFlushSize);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    return this;<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  public TableDescriptorBuilder setNormalizerTargetRegionCount(final int regionCount) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    desc.setNormalizerTargetRegionCount(regionCount);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    return this;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>  public TableDescriptorBuilder setNormalizerTargetRegionSize(final long regionSize) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    desc.setNormalizerTargetRegionSize(regionSize);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    return this;<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public TableDescriptorBuilder setNormalizationEnabled(final boolean isEnable) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    desc.setNormalizationEnabled(isEnable);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    return this;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>  public TableDescriptorBuilder setPriority(int priority) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    desc.setPriority(priority);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    return this;<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>  public TableDescriptorBuilder setReadOnly(final boolean readOnly) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    desc.setReadOnly(readOnly);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    return this;<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  }<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>  public TableDescriptorBuilder setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    desc.setRegionMemStoreReplication(memstoreReplication);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    return this;<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public TableDescriptorBuilder setRegionReplication(int regionReplication) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    desc.setRegionReplication(regionReplication);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    return this;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>  public TableDescriptorBuilder setRegionSplitPolicyClassName(String clazz) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    desc.setRegionSplitPolicyClassName(clazz);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    return this;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
+<span class="sourceLineNo">528</span><a name="line.528"></a>
+<span class="sourceLineNo">529</span>  public TableDescriptorBuilder setValue(final String key, final String value) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    desc.setValue(key, value);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    return this;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  public TableDescriptorBuilder setValue(final Bytes key, final Bytes value) {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    desc.setValue(key, value);<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    return this;<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  }<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public TableDescriptorBuilder setValue(final byte[] key, final byte[] value) {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    desc.setValue(key, value);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    return this;<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>  public String getValue(String key) {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    return desc.getValue(key);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * Sets replication scope all &amp; only the columns already in the builder. Columns added later won't<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * be backfilled with replication scope.<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param scope replication scope<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @return a TableDescriptorBuilder<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
+<span class="sourceLineNo">554</span>  public TableDescriptorBuilder setReplicationScope(int scope) {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    Map&lt;byte[], ColumnFamilyDescriptor&gt; newFamilies = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    newFamilies.putAll(desc.families);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    newFamilies<a name="line.557"></a>
+<span class="sourceLineNo">558</span>        .forEach((cf, cfDesc) -&gt; {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>          desc.removeColumnFamily(cf);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>          desc.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(cfDesc).setScope(scope)<a name="line.560"></a>
+<span class="sourceLineNo">561</span>              .build());<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        });<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    return this;<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
+<span class="sourceLineNo">565</span><a name="line.565"></a>
+<span class="sourceLineNo">566</span>  public TableDescriptorBuilder setRegionServerGroup(String group) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    desc.setValue(RSGROUP_KEY, group);<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return this;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  public TableDescriptor build() {<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    return new ModifyableTableDescriptor(desc);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>  }<a name="line.573"></a>
+<span class="sourceLineNo">574</span><a name="line.574"></a>
+<span class="sourceLineNo">575</span>  private static final class ModifyableTableDescriptor<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    implements TableDescriptor, Comparable&lt;ModifyableTableDescriptor&gt; {<a name="line.576"></a>
+<span class="sourceLineNo">577</span><a name="line.577"></a>
+<span class="sourceLineNo">578</span>    private final TableName name;<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>    /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>     * A map which holds the metadata information of the table. This metadata<a name="line.581"></a>
+<span class="sourceLineNo">582</span>     * includes values like IS_META, SPLIT_POLICY, MAX_FILE_SIZE,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>     * READONLY, MEMSTORE_FLUSHSIZE etc...<a name="line.583"></a>
+<span class="sourceLineNo">584</span>     */<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    private final Map&lt;Bytes, Bytes&gt; values = new HashMap&lt;&gt;();<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>    /**<a name="line.587"></a>
+<span class="sourceLineNo">588</span>     * Maps column family name to the respective FamilyDescriptors<a name="line.588"></a>
+<span class="sourceLineNo">589</span>     */<a name="line.589"></a>
+<span class="sourceLineNo">590</span>    private final Map&lt;byte[], ColumnFamilyDescriptor&gt; families<a name="line.590"></a>
+<span class="sourceLineNo">591</span>            = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.591"></a>
+<span class="sourceLineNo">592</span><a name="line.592"></a>
+<span class="sourceLineNo">593</span>    /**<a name="line.593"></a>
+<span class="sourceLineNo">594</span>     * Construct a table descriptor specifying a TableName object<a name="line.594"></a>
+<span class="sourceLineNo">595</span>     *<a name="line.595"></a>
+<span class="sourceLineNo">596</span>     * @param name Table name.<a name="line.596"></a>
+<span class="sourceLineNo">597</span>     */<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    private ModifyableTableDescriptor(final TableName name) {<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      this(name, Collections.emptyList(), Collections.emptyMap());<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    }<a name="line.600"></a>
+<span class="sourceLineNo">601</span><a name="line.601"></a>
+<span class="sourceLineNo">602</span>    private ModifyableTableDescriptor(final TableDescriptor desc) {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>      this(desc.getTableName(), Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>    /**<a name="line.606"></a>
+<span class="sourceLineNo">607</span>     * Construct a table descriptor by cloning the descriptor passed as a<a name="line.607"></a>
+<span class="sourceLineNo">608</span>     * parameter.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>     * &lt;p&gt;<a name="line.609"></a>
+<span class="sourceLineNo">610</span>     * Makes a deep copy of the supplied descriptor.<a name="line.610"></a>
+<span class="sourceLineNo">611</span>     * @param name The new name<a name="line.611"></a>
+<span class="sourceLineNo">612</span>     * @param desc The descriptor.<a name="line.612"></a>
+<span class="sourceLineNo">613</span>     */<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    private ModifyableTableDescriptor(final TableName name, final TableDescriptor desc) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      this(name, Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    }<a name="line.616"></a>
+<span class="sourceLineNo">617</span><a name="line.617"></a>
+<span class="sourceLineNo">618</span>    private ModifyableTableDescriptor(final TableName name, final Collection&lt;ColumnFamilyDescriptor&gt; families,<a name="line.618"></a>
+<span class="sourceLineNo">619</span>            Map&lt;Bytes, Bytes&gt; values) {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      this.name = name;<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      families.forEach(c -&gt; this.families.put(c.getName(), ColumnFamilyDescriptorBuilder.copy(c)));<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      this.values.putAll(values);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      this.values.put(IS_META_KEY,<a name="line.623"></a>
+<span class="sourceLineNo">624</span>        new Bytes(Bytes.toBytes(Boolean.toString(name.equals(TableName.META_TABLE_NAME)))));<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    }<a name="line.625"></a>
+<span class="sourceLineNo">626</span><a name="line.626"></a>
+<span class="sourceLineNo">627</span>    /**<a name="line.627"></a>
+<span class="sourceLineNo">628</span>     * Checks if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.628"></a>
+<span class="sourceLineNo">629</span>     *<a name="line.629"></a>
+<span class="sourceLineNo">630</span>     * @return true if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region<a name="line.630"></a>
+<span class="sourceLineNo">631</span>     */<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    @Override<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    public boolean isMetaRegion() {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      return getOrDefault(IS_META_KEY, Boolean::valueOf, false);<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    }<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>    /**<a name="line.637"></a>
+<span class="sourceLineNo">638</span>     * Checks if the table is a &lt;code&gt;hbase:meta&lt;/code&gt; table<a name="line.638"></a>
+<span class="sourceLineNo">639</span>     *<a name="line.639"></a>
+<span class="sourceLineNo">640</span>     * @return true if table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.640"></a>
+<span class="sourceLineNo">641</span>     */<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    @Override<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    public boolean isMetaTable() {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      return isMetaRegion();<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    }<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>    @Override<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    public Bytes getValue(Bytes key) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      Bytes rval = values.get(key);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      return rval == null ? null : new Bytes(rval.copyBytes());<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span><a name="line.652"></a>
+<span class="sourceLineNo">653</span>    @Override<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    public String getValue(String key) {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      Bytes rval = values.get(new Bytes(Bytes.toBytes(key)));<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      return rval == null ? null : Bytes.toString(rval.get(), rval.getOffset(), rval.getLength());<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    }<a name="line.657"></a>
+<span class="sourceLineNo">658</span><a name="line.658"></a>
+<span class="sourceLineNo">659</span>    @Override<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    public byte[] getValue(byte[] key) {<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      Bytes value = values.get(new Bytes(key));<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      return value == null ? null : value.copyBytes();<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    }<a name="line.663"></a>
+<span class="sourceLineNo">664</span><a name="line.664"></a>
+<span class="sourceLineNo">665</span>    private &lt;T&gt; T getOrDefault(Bytes key, Function&lt;String, T&gt; function, T defaultValue) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      Bytes value = values.get(key);<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      if (value == null) {<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        return defaultValue;<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      } else {<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return function.apply(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    }<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    /**<a name="line.674"></a>
+<span class="sourceLineNo">675</span>     * Getter for fetching an unmodifiable {@link #values} map.<a name="line.675"></a>
+<span class="sourceLineNo">676</span>     *<a name="line.676"></a>
+<span class="sourceLineNo">677</span>     * @return unmodifiable map {@link #values}.<a name="line.677"></a>
+<span class="sourceLineNo">678</span>     * @see #values<a name="line.678"></a>
+<span class="sourceLineNo">679</span>     */<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    @Override<a name="line.680"></a>
+<span class="sourceLineNo">681</span>    public Map&lt;Bytes, Bytes&gt; getValues() {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      // shallow pointer copy<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      return Collections.unmodifiableMap(values);<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    }<a name="line.684"></a>
+<span class="sourceLineNo">685</span><a name="line.685"></a>
+<span class="sourceLineNo">686</span>    /**<a name="line.686"></a>
+<span class="sourceLineNo">687</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.687"></a>
+<span class="sourceLineNo">688</span>     *<a name="line.688"></a>
+<span class="sourceLineNo">689</span>     * @param key The key.<a name="line.689"></a>
+<span class="sourceLineNo">690</span>     * @param value The value. If null, removes the setting.<a name="line.690"></a>
+<span class="sourceLineNo">691</span>     * @return the modifyable TD<a name="line.691"></a>
+<span class="sourceLineNo">692</span>     * @see #values<a name="line.692"></a>
+<span class="sourceLineNo">693</span>     */<a name="line.693"></a>
+<span class="sourceLineNo">694</span>    public ModifyableTableDescriptor setValue(byte[] key, byte[] value) {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>      return setValue(toBytesOrNull(key, v -&gt; v),<a name="line.695"></a>
+<span class="sourceLineNo">696</span>              toBytesOrNull(value, v -&gt; v));<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    }<a name="line.697"></a>
+<span class="sourceLineNo">698</span><a name="line.698"></a>
+<span class="sourceLineNo">699</span>    public ModifyableTableDescriptor setValue(String key, String value) {<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      return setValue(toBytesOrNull(key, Bytes::toBytes),<a name="line.700"></a>
+<span class="sourceLineNo">701</span>              toBytesOrNull(value, Bytes::toBytes));<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    }<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>    /*<a name="line.704"></a>
+<span class="sourceLineNo">705</span>     * @param key The key.<a name="line.705"></a>
+<span class="sourceLineNo">706</span>     * @param value The value. If null, removes the setting.<a name="line.706"></a>
+<span class="sourceLineNo">707</span>     */<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    private ModifyableTableDescriptor setValue(final Bytes key,<a name="line.708"></a>
+<span class="sourceLineNo">709</span>            final String value) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      return setValue(key, toBytesOrNull(value, Bytes::toBytes));<a name="line.710"></a>
+<span class="sourceLineNo">711</span>    }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>    /*<a name="line.713"></a>
+<span class="sourceLineNo">714</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.714"></a>
+<span class="sourceLineNo">715</span>     *<a name="line.715"></a>
+<span class="sourceLineNo">716</span>     * @param key The key.<a name="line.716"></a>
+<span class="sourceLineNo">717</span>     * @param value The value. If null, removes the setting.<a name="line.717"></a>
+<span class="sourceLineNo">718</span>     */<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    public ModifyableTableDescriptor setValue(final Bytes key, final Bytes value) {<a name="line.719"></a>
+<span class="sourceLineNo">720</span>      if (value == null) {<a name="line.720"></a>
+<span class="sourceLineNo">721</span>        values.remove(key);<a name="line.721"></a>
+<span class="sourceLineNo">722</span>      } else {<a name="line.722"></a>
+<span class="sourceLineNo">723</span>        values.put(key, value);<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      }<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      return this;<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    }<a name="line.726"></a>
+<span class="sourceLineNo">727</span><a name="line.727"></a>
+<span class="sourceLineNo">728</span>    private static &lt;T&gt; Bytes toBytesOrNull(T t, Function&lt;T, byte[]&gt; f) {<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      if (t == null) {<a name="line.729"></a>
+<span class="sourceLineNo">730</span>        return null;<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      } else {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>        return new Bytes(f.apply(t));<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      }<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    }<a name="line.734"></a>
+<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">736</span>    /**<a name="line.736"></a>
+<span class="sourceLineNo">737</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.737"></a>
+<span class="sourceLineNo">738</span>     *<a name="line.738"></a>
+<span class="sourceLineNo">739</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.739"></a>
+<span class="sourceLineNo">740</span>     * parameters.<a name="line.740"></a>
+<span class="sourceLineNo">741</span>     * @return the modifyable TD<a name="line.741"></a>
+<span class="sourceLineNo">742</span>     */<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    public ModifyableTableDescriptor removeValue(final String key) {<a name="line.743"></a>
+<span class="sourceLineNo">744</span>      return setValue(key, (String) null);<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    }<a name="line.745"></a>
+<span class="sourceLineNo">746</span><a name="line.746"></a>
+<span class="sourceLineNo">747</span>    /**<a name="line.747"></a>
+<span class="sourceLineNo">748</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.748"></a>
+<span class="sourceLineNo">749</span>     *<a name="line.749"></a>
+<span class="sourceLineNo">750</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.750"></a>
+<span class="sourceLineNo">751</span>     * parameters.<a name="line.751"></a>
+<span class="sourceLineNo">752</span>     * @return the modifyable TD<a name="line.752"></a>
+<span class="sourceLineNo">753</span>     */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    public ModifyableTableDescriptor removeValue(Bytes key) {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      return setValue(key, (Bytes) null);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    }<a name="line.756"></a>
+<span class="sourceLineNo">757</span><a name="line.757"></a>
+<span class="sourceLineNo">758</span>    /**<a name="line.758"></a>
+<span class="sourceLineNo">759</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.759"></a>
+<span class="sourceLineNo">760</span>     *<a name="line.760"></a>
+<span class="sourceLineNo">761</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.761"></a>
+<span class="sourceLineNo">762</span>     * parameters.<a name="line.762"></a>
+<span class="sourceLineNo">763</span>     * @return the modifyable TD<a name="line.763"></a>
+<span class="sourceLineNo">764</span>     */<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    public ModifyableTableDescriptor removeValue(final byte[] key) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span>      return removeValue(new Bytes(key));<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    }<a name="line.767"></a>
+<span class="sourceLineNo">768</span><a name="line.768"></a>
+<span class="sourceLineNo">769</span>    /**<a name="line.769"></a>
+<span class="sourceLineNo">770</span>     * Check if the readOnly flag of the table is set. If the readOnly flag is<a name="line.770"></a>
+<span class="sourceLineNo">771</span>     * set then the contents of the table can only be read from but not<a name="line.771"></a>
+<span class="sourceLineNo">772</span>     * modified.<a name="line.772"></a>
+<span class="sourceLineNo">773</span>     *<a name="line.773"></a>
+<span class="sourceLineNo">774</span>     * @return true if all columns in the table should be read only<a name="line.774"></a>
+<span class="sourceLineNo">775</span>     */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    @Override<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    public boolean isReadOnly() {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      return getOrDefault(READONLY_KEY, Boolean::valueOf, DEFAULT_READONLY);<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    }<a name="line.779"></a>
+<span class="sourceLineNo">780</span><a name="line.780"></a>
+<span class="sourceLineNo">781</span>    /**<a name="line.781"></a>
+<span class="sourceLineNo">782</span>     * Setting the table as read only sets all the columns in the table as read<a name="line.782"></a>
+<span class="sourceLineNo">783</span>     * only. By default all tables are modifiable, but if the readOnly flag is<a name="line.783"></a>
+<span class="sourceLineNo">784</span>     * set to true then the contents of the table can only be read but not<a name="line.784"></a>
+<span class="sourceLineNo">785</span>     * modified.<a name="line.785"></a>
+<span class="sourceLineNo">786</span>     *<a name="line.786"></a>
+<span class="sourceLineNo">787</span>     * @param readOnly True if all of the columns in the table should be read<a name="line.787"></a>
+<span class="sourceLineNo">788</span>     * only.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>     * @return the modifyable TD<a name="line.789"></a>
+<span class="sourceLineNo">790</span>     */<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    public ModifyableTableDescriptor setReadOnly(final boolean readOnly) {<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      return setValue(READONLY_KEY, Boolean.toString(readOnly));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>    /**<a name="line.795"></a>
+<span class="sourceLineNo">796</span>     * Check if the compaction enable flag of the table is true. If flag is<a name="line.796"></a>
+<span class="sourceLineNo">797</span>     * false then no minor/major compactions will be done in real.<a name="line.797"></a>
+<span class="sourceLineNo">798</span>     *<a name="line.798"></a>
+<span class="sourceLineNo">799</span>     * @return true if table compaction enabled<a name="line.799"></a>
+<span class="sourceLineNo">800</span>     */<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    @Override<a name="line.801"></a>
+<span class="sourceLineNo">802</span>    public boolean isCompactionEnabled() {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>      return getOrDefault(COMPACTION_ENABLED_KEY, Boolean::valueOf, DEFAULT_COMPACTION_ENABLED);<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    }<a name="line.804"></a>
+<span class="sourceLineNo">805</span><a name="line.805"></a>
+<span class="sourceLineNo">806</span>    /**<a name="line.806"></a>
+<span class="sourceLineNo">807</span>     * Setting the table compaction enable flag.<a name="line.807"></a>
+<span class="sourceLineNo">808</span>     *<a name="line.808"></a>
+<span class="sourceLineNo">809</span>     * @param isEnable True if enable compaction.<a name="line.809"></a>
+<span class="sourceLineNo">810</span>     * @return the modifyable TD<a name="line.810"></a>
+<span class="sourceLineNo">811</span>     */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    public ModifyableTableDescriptor setCompactionEnabled(final boolean isEnable) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      return setValue(COMPACTION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    }<a name="line.814"></a>
+<span class="sourceLineNo">815</span><a name="line.815"></a>
+<span class="sourceLineNo">816</span>    /**<a name="line.816"></a>
+<span class="sourceLineNo">817</span>     * Check if the split enable flag of the table is true. If flag is false then no split will be<a name="line.817"></a>
+<span class="sourceLineNo">818</span>     * done.<a name="line.818"></a>
+<span class="sourceLineNo">819</span>     *<a name="line.819"></a>
+<span class="sourceLineNo">820</span>     * @return true if table region split enabled<a name="line.820"></a>
+<span class="sourceLineNo">821</span>     */<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    @Override<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    public boolean isSplitEnabled() {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>      return getOrDefault(SPLIT_ENABLED_KEY, Boolean::valueOf, DEFAULT_SPLIT_ENABLED);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    }<a name="line.825"></a>
+<span class="sourceLineNo">826</span><a name="line.826"></a>
+<span class="sourceLineNo">827</span>    /**<a name="line.827"></a>
+<span class="sourceLineNo">828</span>     * Setting the table region split enable flag.<a name="line.828"></a>
+<span class="sourceLineNo">829</span>     * @param isEnable True if enable region split.<a name="line.829"></a>
+<span class="sourceLineNo">830</span>     *<a name="line.830"></a>
+<span class="sourceLineNo">831</span>     * @return the modifyable TD<a name="line.831"></a>
+<span class="sourceLineNo">832</span>     */<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    public ModifyableTableDescriptor setSplitEnabled(final boolean isEnable) {<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      return setValue(SPLIT_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span>    /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span>     * Check if the region merge enable flag of the table is true. If flag is false then no merge<a name="line.838"></a>
+<span class="sourceLineNo">839</span>     * will be done.<a name="line.839"></a>
+<span class="sourceLineNo">840</span>     *<a name="line.840"></a>
+<span class="sourceLineNo">841</span>     * @return true if table region merge enabled<a name="line.841"></a>
+<span class="sourceLineNo">842</span>     */<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    @Override<a name="line.843"></a>
+<span class="sourceLineNo">844</span>    public boolean isMergeEnabled() {<a name="line.844"></a>
+<span class="sourceLineNo">845</span>      return getOrDefault(MERGE_ENABLED_KEY, Boolean::valueOf, DEFAULT_MERGE_ENABLED);<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>    /**<a name="line.848"></a>
+<span class="sourceLineNo">849</span>     * Setting the table region merge enable flag.<a name="line.849"></a>
+<span class="sourceLineNo">850</span>     * @param isEnable True if enable region merge.<a name="line.850"></a>
+<span class="sourceLineNo">851</span>     *<a name="line.851"></a>
+<span class="sourceLineNo">852</span>     * @return the modifyable TD<a name="line.852"></a>
+<span class="sourceLineNo">853</span>     */<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    public ModifyableTableDescriptor setMergeEnabled(final boolean isEnable) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      return setValue(MERGE_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>    /**<a name="line.858"></a>
+<span class="sourceLineNo">859</span>     * Check if normalization enable flag of the table is true. If flag is false<a name="line.859"></a>
+<span class="sourceLineNo">860</span>     * then no region normalizer won't attempt to normalize this table.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>     *<a name="line.861"></a>
+<span class="sourceLineNo">862</span>     * @return true if region normalization is enabled for this table<a name="line.862"></a>
+<span class="sourceLineNo">863</span>     */<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    @Override<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    public boolean isNormalizationEnabled() {<a name="line.865"></a>
+<span class="sourceLineNo">866</span>      return getOrDefault(NORMALIZATION_ENABLED_KEY, Boolean::valueOf, DEFAULT_NORMALIZATION_ENABLED);<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    }<a name="line.867"></a>
+<span class="sourceLineNo">868</span><a name="line.868"></a>
+<span class="sourceLineNo">869</span>    /**<a name="line.869"></a>
+<span class="sourceLineNo">870</span>     * Check if there is the target region count. If so, the normalize plan will be calculated based<a name="line.870"></a>
+<span class="sourceLineNo">871</span>     * on the target region count.<a name="line.871"></a>
+<span class="sourceLineNo">872</span>     * @return target region count after normalize done<a name="line.872"></a>
+<span class="sourceLineNo">873</span>     */<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    @Override<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    public int getNormalizerTargetRegionCount() {<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      return getOrDefault(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer::valueOf,<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        Integer.valueOf(-1));<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    }<a name="line.878"></a>
+<span class="sourceLineNo">879</span><a name="line.879"></a>
+<span class="sourceLineNo">880</span>    /**<a name="line.880"></a>
+<span class="sourceLineNo">881</span>     * Check if there is the target region size. If so, the normalize plan will be calculated based<a name="line.881"></a>
+<span class="sourceLineNo">882</span>     * on the target region size.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>     * @return target region size after normalize done<a name="line.883"></a>
+<span class="sourceLineNo">884</span>     */<a name="line.884"></a>
+<span class="sourceLineNo">885</span>    @Override<a name="line.885"></a>
+<span class="sourceLineNo">886</span>    public long getNormalizerTargetRegionSize() {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      return getOrDefault(NORMALIZER_TARGET_REGION_SIZE_KEY, Long::valueOf, Long.valueOf(-1));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>    }<a name="line.888"></a>
+<span class="sourceLineNo">889</span><a name="line.889"></a>
+<span class="sourceLineNo">890</span>    /**<a name="line.890"></a>
+<span class="sourceLineNo">891</span>     * Setting the table normalization enable flag.<a name="line.891"></a>
+<span class="sourceLineNo">892</span>     *<a name="line.892"></a>
+<span class="sourceLineNo">893</span>     * @param isEnable True if enable normalization.<a name="line.893"></a>
+<span class="sourceLineNo">894</span>     * @return the modifyable TD<a name="line.894"></a>
+<span class="sourceLineNo">895</span>     */<a name="line.895"></a>
+<span class="sourceLineNo">896</span>    public ModifyableTableDescriptor setNormalizationEnabled(final boolean isEnable) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      return setValue(NORMALIZATION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.897"></a>
+<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>    /**<a name="line.900"></a>
+<span class="sourceLineNo">901</span>     * Setting the target region count of table normalization .<a name="line.901"></a>
+<span class="sourceLineNo">902</span>     * @param regionCount the target region count.<a name="line.902"></a>
+<span class="sourceLineNo">903</span>     * @return the modifyable TD<a name="line.903"></a>
+<span class="sourceLineNo">904</span>     */<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    public ModifyableTableDescriptor setNormalizerTargetRegionCount(final int regionCount) {<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      return setValue(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer.toString(regionCount));<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    }<a name="line.907"></a>
+<span class="sourceLineNo">908</span><a name="line.908"></a>
+<span class="sourceLineNo">909</span>    /**<a name="line.909"></a>
+<span class="sourceLineNo">910</span>     * Setting the target region size of table normalization.<a name="line.910"></a>
+<span class="sourceLineNo">911</span>     * @param regionSize the target region size.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>     * @return the modifyable TD<a name="line.912"></a>
+<span class="sourceLineNo">913</span>     */<a name="line.913"></a>
+<span class="sourceLineNo">914</span>    public ModifyableTableDescriptor setNormalizerTargetRegionSize(final long regionSize) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      return setValue(NORMALIZER_TARGET_REGION_SIZE_KEY, Long.toString(regionSize));<a name="line.915"></a>
+<span class="sourceLineNo">916</span>    }<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>    /**<a name="line.918"></a>
+<span class="sourceLineNo">919</span>     * Sets the {@link Durability} setting for the table. This defaults to<a name="line.919"></a>
+<span class="sourceLineNo">920</span>     * Durability.USE_DEFAULT.<a name="line.920"></a>
+<span class="sourceLineNo">921</span>     *<a name="line.921"></a>
+<span class="sourceLineNo">922</span>     * @param durability enum value<a name="line.922"></a>
+<span class="sourceLineNo">923</span>     * @return the modifyable TD<a name="line.923"></a>
+<span class="sourceLineNo">924</span>     */<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    public ModifyableTableDescriptor setDurability(Durability durability) {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>      return setValue(DURABILITY_KEY, durability.name());<a name="line.926"></a>
+<span class="sourceLineNo">927</span>    }<a name="line.927"></a>
+<span class="sourceLineNo">928</span><a name="line.928"></a>
+<span class="sourceLineNo">929</span>    /**<a name="line.929"></a>
+<span class="sourceLineNo">930</span>     * Returns the durability setting for the table.<a name="line.930"></a>
+<span class="sourceLineNo">931</span>     *<a name="line.931"></a>
+<span class="sourceLineNo">932</span>     * @return durability setting for the table.<a name="line.932"></a>
+<span class="sourceLineNo">933</span>     */<a name="line.933"></a>
+<span class="sourceLineNo">934</span>    @Override<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    public Durability getDurability() {<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      return getOrDefault(DURABILITY_KEY, Durability::valueOf, DEFAULT_DURABLITY);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    }<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>    /**<a name="line.939"></a>
+<span class="sourceLineNo">940</span>     * Get the name of the table<a name="line.940"></a>
+<span class="sourceLineNo">941</span>     *<a name="line.941"></a>
+<span class="sourceLineNo">942</span>     * @return TableName<a name="line.942"></a>
+<span class="sourceLineNo">943</span>     */<a name="line.943"></a>
+<span class="sourceLineNo">944</span>    @Override<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    public TableName getTableName() {<a name="line.945"></a>
+<span class="sourceLineNo">946</span>      return name;<a name="line.946"></a>
+<span class="sourceLineNo">947</span>    }<a name="line.947"></a>
+<span class="sourceLineNo">948</span><a name="line.948"></a>
+<span class="sourceLineNo">949</span>    /**<a name="line.949"></a>
+<span class="sourceLineNo">950</span>     * This sets the class associated with the region split policy which<a name="line.950"></a>
+<span class="sourceLineNo">951</span>     * determines when a region split should occur. The class used by default is<a name="line.951"></a>
+<span class="sourceLineNo">952</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.952"></a>
+<span class="sourceLineNo">953</span>     *<a name="line.953"></a>
+<span class="sourceLineNo">954</span>     * @param clazz the class name<a name="line.954"></a>
+<span class="sourceLineNo">955</span>     * @return the modifyable TD<a name="line.955"></a>
+<span class="sourceLineNo">956</span>     */<a name="line.956"></a>
+<span class="sourceLineNo">957</span>    public ModifyableTableDescriptor setRegionSplitPolicyClassName(String clazz) {<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      return setValue(SPLIT_POLICY_KEY, clazz);<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">960</span><a name="line.960"></a>
+<span class="sourceLineNo">961</span>    /**<a name="line.961"></a>
+<span class="sourceLineNo">962</span>     * This gets the class associated with the region split policy which<a name="line.962"></a>
+<span class="sourceLineNo">963</span>     * determines when a region split should occur. The class used by default is<a name="line.963"></a>
+<span class="sourceLineNo">964</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.964"></a>
+<span class="sourceLineNo">965</span>     *<a name="line.965"></a>
+<span class="sourceLineNo">966</span>     * @return the class name of the region split policy for this table. If this<a name="line.966"></a>
+<span class="sourceLineNo">967</span>     * returns null, the default split policy is used.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>     */<a name="line.968"></a>
+<span class="sourceLineNo">969</span>    @Override<a name="line.969"></a>
+<span class="sourceLineNo">970</span>    public String getRegionSplitPolicyClassName() {<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      return getOrDefault(SPLIT_POLICY_KEY, Function.identity(), null);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>    }<a name="line.972"></a>
+<span class="sourceLineNo">973</span><a name="line.973"></a>
+<span class="sourceLineNo">974</span>    /**<a name="line.974"></a>
+<span class="sourceLineNo">975</span>     * Returns the maximum size upto which a region can grow to after which a<a name="line.975"></a>
+<span class="sourceLineNo">976</span>     * region split is triggered. The region size is represented by the size of<a name="line.976"></a>
+<span class="sourceLineNo">977</span>     * the biggest store file in that region.<a name="line.977"></a>
+<span class="sourceLineNo">978</span>     *<a name="line.978"></a>
+<span class="sourceLineNo">979</span>     * @return max hregion size for table, -1 if not set.<a name="line.979"></a>
+<span class="sourceLineNo">980</span>     *<a name="line.980"></a>
+<span class="sourceLineNo">981</span>     * @see #setMaxFileSize(long)<a name="line.981"></a>
+<span class="sourceLineNo">982</span>     */<a name="line.982"></a>
+<span class="sourceLineNo">983</span>    @Override<a name="line.983"></a>
+<span class="sourceLineNo">984</span>    public long getMaxFileSize() {<a name="line.984"></a>
+<span class="sourceLineNo">985</span>      return getOrDefault(MAX_FILESIZE_KEY, Long::valueOf, (long) -1);<a name="line.985"></a>
+<span class="sourceLineNo">986</span>    }<a name="line.986"></a>
+<span class="sourceLineNo">987</span><a name="line.987"></a>
+<span class="sourceLineNo">988</span>    /**<a name="line.988"></a>
+<span class="sourceLineNo">989</span>     * Sets the maximum size upto which a region can grow to after which a<a name="line.989"></a>
+<span class="sourceLineNo">990</span>     * region split is triggered. The region size is represented by the size of<a name="line.990"></a>
+<span class="sourceLineNo">991</span>     * the biggest store file in that region, i.e. If the biggest store file<a name="line.991"></a>
+<span class="sourceLineNo">992</span>     * grows beyond the maxFileSize, then the region split is triggered. This<a name="line.992"></a>
+<span class="sourceLineNo">993</span>     * defaults to a value of 256 MB.<a name="line.993"></a>
+<span class="sourceLineNo">994</span>     * &lt;p&gt;<a name="line.994"></a>
+<span class="sourceLineNo">995</span>     * This is not an absolute value and might vary. Assume that a single row<a name="line.995"></a>
+<span class="sourceLineNo">996</span>     * exceeds the maxFileSize then the storeFileSize will be greater than<a name="line.996"></a>
+<span class="sourceLineNo">997</span>     * maxFileSize since a single row cannot be split across multiple regions<a name="line.997"></a>
+<span class="sourceLineNo">998</span>     * &lt;/p&gt;<a name="line.998"></a>
+<span class="sourceLineNo">999</span>     *<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>     * @param maxFileSize The maximum file size that a store file can grow to<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>     * before a split is triggered.<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>     * @return the modifyable TD<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>     */<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    public ModifyableTableDescriptor setMaxFileSize(long maxFileSize) {<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      return setValue(MAX_FILESIZE_KEY, Long.toString(maxFileSize));<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    }<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    public ModifyableTableDescriptor setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      return setMaxFileSize(Long.parseLong(PrettyPrinter.<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        valueOf(maxFileSize, PrettyPrinter.Unit.BYTE)));<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>    }<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span><a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>    /**<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>     * Returns the size of the memstore after which a flush to filesystem is<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>     * triggered.<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>     *<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>     * @return memory cache flush size for each hregion, -1 if not set.<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>     *<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>     * @see #setMemStoreFlushSize(long)<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>     */<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    @Override<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    public long getMemStoreFlushSize() {<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>      return getOrDefault(MEMSTORE_FLUSHSIZE_KEY, Long::valueOf, (long) -1);<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    }<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span><a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>    /**<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>     * Represents the maximum size of the memstore after which the contents of<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>     * the memstore are flushed to the filesystem. This defaults to a size of 64<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>     * MB.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>     *<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>     * @param memstoreFlushSize memory cache flush size for each hregion<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>     * @return the modifyable TD<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>     */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    public ModifyableTableDescriptor setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return setValue(MEMSTORE_FLUSHSIZE_KEY, Long.toString(memstoreFlushSize));<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>    public ModifyableTableDescriptor setMemStoreFlushSize(String memStoreFlushSize)<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      throws HBaseException {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>      return setMemStoreFlushSize(Long.parseLong(PrettyPrinter.valueOf(memStoreFlushSize,<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        PrettyPrinter.Unit.BYTE)));<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>    }<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span><a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>    /**<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>     * This sets the class associated with the flush policy which determines<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>     * determines the stores need to be flushed when flushing a region. The<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>     * class used by default is defined in<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>     * org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>     *<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>     * @param clazz the class name<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>     * @return the modifyable TD<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>     */<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>    public ModifyableTableDescriptor setFlushPolicyClassName(String clazz) {<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>      return setValue(FLUSH_POLICY_KEY, clazz);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>    }<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span><a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    /**<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>     * This gets the class associated with the flush policy which determines the<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>     * stores need to be flushed when flushing a region. The class used by<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>     * default is defined in org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>     *<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>     * @return the class name of the flush policy for this table. If this<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>     * returns null, the default flush policy is used.<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>     */<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>    @Override<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    public String getFlushPolicyClassName() {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>      return getOrDefault(FLUSH_POLICY_KEY, Function.identity(), null);<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    /**<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>     * Adds a column family. For the updating purpose please use<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>     * {@link #modifyColumnFamily(ColumnFamilyDescriptor)} instead.<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>     *<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>     * @param family to add.<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>     * @return the modifyable TD<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>     */<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>    public ModifyableTableDescriptor setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>      }<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      if (hasColumnFamily(family.getName())) {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        throw new IllegalArgumentException("Family '"<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>                + family.getNameAsString() + "' already exists so cannot be added");<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>      }<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>      return putColumnFamily(family);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>    }<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span><a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>    /**<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>     * Modifies the existing column family.<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>     *<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>     * @param family to update<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>     * @return this (for chained invocation)<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>     */<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>    public ModifyableTableDescriptor modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>      }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>      if (!hasColumnFamily(family.getName())) {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>        throw new IllegalArgumentException("Column family '" + family.getNameAsString()<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>                + "' does not exist");<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>      }<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>      return putColumnFamily(family);<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    }<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span><a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    private ModifyableTableDescriptor putColumnFamily(ColumnFamilyDescriptor family) {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      families.put(family.getName(), family);<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>      return this;<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>    /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>     * Checks to see if this table contains the given column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>     *<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>     * @param familyName Family name or column name.<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>     * @return true if the table contains the specified family name<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>     */<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>    @Override<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>    public boolean hasColumnFamily(final byte[] familyName) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>      return families.containsKey(familyName);<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>    }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span><a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>    /**<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>     * @return Name of this table and then a map of all of the column family descriptors.<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>     */<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>    @Override<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    public String toString() {<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>      StringBuilder s = new StringBuilder();<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>      s.append(getValues(true));<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>      families.values().forEach(f -&gt; s.append(", ").append(f));<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>      return s.toString();<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    }<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span><a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>    /**<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>     * @return Name of this table and then a map of all of the column family<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>     * descriptors (with only the non-default column family attributes)<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>     */<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>    @Override<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>    public String toStringCustomizedValues() {<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>      StringBuilder s = new StringBuilder();<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>      s.append(getValues(false));<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      families.values().forEach(hcd -&gt; s.append(", ").append(hcd.toStringCustomizedValues()));<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      return s.toString();<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    }<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span><a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>    /**<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>     * @return map of all table attributes formatted into string.<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>     */<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    public String toStringTableAttributes() {<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>      return getValues(true).toString();<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>    }<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span><a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    private StringBuilder getValues(boolean printDefaults) {<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>      StringBuilder s = new StringBuilder();<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>      // step 1: set partitioning and pruning<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>      Set&lt;Bytes&gt; reservedKeys = new TreeSet&lt;&gt;();<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>      Set&lt;Bytes&gt; userKeys = new TreeSet&lt;&gt;();<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>      for (Map.Entry&lt;Bytes, Bytes&gt; entry : values.entrySet()) {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>        if (entry.getKey() == null || entry.getKey().get() == null) {<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>          continue;<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>        }<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>        String key = Bytes.toString(entry.getKey().get());<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>        // in this section, print out reserved keywords + coprocessor info<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>        if (!RESERVED_KEYWORDS.contains(entry.getKey()) &amp;&amp; !key.startsWith("coprocessor$")) {<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span>          userKeys.add(entry.getKey());<a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>          continue;<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>        }<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span>        // only print out IS_META if true<a name="line.1169"></a>
+<span class="sourceLineNo">1170</span>        String value = Bytes.toString(entry.getValue().get());<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span>        if (key.equalsIgnoreCase(IS_META)) {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>          if (Boolean.valueOf(value) == false) {<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>            continue;<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>          }<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        }<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>        // see if a reserved key is a default value. may not want to print it out<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>        if (printDefaults<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span>                || !DEFAULT_VALUES.containsKey(key)<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>                || !DEFAULT_VALUES.get(key).equalsIgnoreCase(value)) {<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>          reservedKeys.add(entry.getKey());<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>        }<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>      }<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span><a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>      // early exit optimization<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>      boolean hasAttributes = !reservedKeys.isEmpty() || !userKeys.isEmpty();<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>      if (!hasAttributes) {<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>        return s;<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      }<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span><a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>      s.append(", {");<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>      // step 2: printing attributes<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span>      if (hasAttributes) {<a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>        s.append("TABLE_ATTRIBUTES =&gt; {");<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span><a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>        // print all reserved keys first<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>        boolean printCommaForAttr = false;<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>        for (Bytes k : reservedKeys) {<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>          String key = Bytes.toString(k.get());<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>          String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>          if (printCommaForAttr) {<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>            s.append(", ");<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>          }<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>          printCommaForAttr = true;<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>          s.append(key);<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>          s.append(" =&gt; ");<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span>          s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>        }<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span><a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>        if (!userKeys.isEmpty()) {<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          // print all non-reserved as a separate subset<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>          if (printCommaForAttr) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>            s.append(", ");<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>          }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span>          s.append(HConstants.METADATA).append(" =&gt; ");<a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>          s.append("{");<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>          boolean printCommaForCfg = false;<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>          for (Bytes k : userKeys) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>            String key = Bytes.toString(k.get());<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>            String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>            if (printCommaForCfg) {<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>              s.append(", ");<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>            }<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>            printCommaForCfg = true;<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>            s.append('\'').append(key).append('\'');<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>            s.append(" =&gt; ");<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>            s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>          }<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>          s.append("}");<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>        }<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span><a name="line.1230"></a>
+<span class="sourceLineNo">1231</span>        s.append("}");<a name="line.1231"></a>
+<span class="sourceLineNo">1232</span>      }<a name="line.1232"></a>
+<span class="sourceLineNo">1233</span><a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>      s.append("}"); // end METHOD<a name="line.1234"></a>
+<span class="sourceLineNo">1235</span>      return s;<a name="line.1235"></a>
+<span class="sourceLineNo">1236</span>    }<a name="line.1236"></a>
+<span class="sourceLineNo">1237</span><a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>    /**<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>     * Compare the contents of the descriptor with another one passed as a<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>     * parameter. Checks if the obj passed is an instance of ModifyableTableDescriptor,<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>     * if yes then the contents of the descriptors are compared.<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>     *<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>     * @param obj The object to compare<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>     * @return true if the contents of the the two descriptors exactly match<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>     *<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>     * @see java.lang.Object#equals(java.lang.Object)<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>     */<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    @Override<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    public boolean equals(Object obj) {<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>      if (this == obj) {<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>        return true;<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>      }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>      if (obj instanceof ModifyableTableDescriptor) {<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>        return TableDescriptor.COMPARATOR.compare(this, (ModifyableTableDescriptor) obj) == 0;<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>      }<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>      return false;<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span><a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    /**<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>     * @return hash code<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>     */<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    @Override<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>    public int hashCode() {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>      int result = this.name.hashCode();<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>      if (this.families.size() &gt; 0) {<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>        for (ColumnFamilyDescriptor e : this.families.values()) {<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>          result ^= e.hashCode();<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>        }<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>      }<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>      result ^= values.hashCode();<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      return result;<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>    }<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span><a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    // Comparable<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>    /**<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>     * Compares the descriptor with another descriptor which is passed as a<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>     * parameter. This compares the content of the two descriptors and not the<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>     * reference.<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>     *<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>     * @param other The MTD to compare<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>     * @return 0 if the contents of the descriptors are exactly matching, 1 if<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>     * there is a mismatch in the contents<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>     */<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>    @Override<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>    public int compareTo(final ModifyableTableDescriptor other) {<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>      return TableDescriptor.COMPARATOR.compare(this, other);<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span>    }<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span><a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>    @Override<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>    public ColumnFamilyDescriptor[] getColumnFamilies() {<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>      return families.values().toArray(new ColumnFamilyDescriptor[families.size()]);<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>    }<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span><a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>    /**<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>     * Returns the configured replicas per region<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>     */<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>    @Override<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>    public int getRegionReplication() {<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>      return getOrDefault(REGION_REPLICATION_KEY, Integer::valueOf, DEFAULT_REGION_REPLICATION);<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>    }<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span><a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>    /**<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span>     * Sets the number of replicas per region.<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>     *<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>     * @param regionReplication the replication factor per region<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>     * @return the modifyable TD<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>     */<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>    public ModifyableTableDescriptor setRegionReplication(int regionReplication) {<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>      return setValue(REGION_REPLICATION_KEY, Integer.toString(regionReplication));<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>    }<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span><a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>    /**<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span>     * @return true if the read-replicas memstore replication is enabled.<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span>     */<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>    @Override<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>    public boolean hasRegionMemStoreReplication() {<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>      return getOrDefault(REGION_MEMSTORE_REPLICATION_KEY, Boolean::valueOf, DEFAULT_REGION_MEMSTORE_REPLICATION);<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>    }<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span><a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>    /**<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>     * Enable or Disable the memstore replication from the primary region to the<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>     * replicas. The replication will be used only for meta operations (e.g.<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>     * flush, compaction, ...)<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>     *<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>     * @param memstoreReplication true if the new data written to the primary<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>     * region should be replicated. false if the secondaries can tollerate to<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>     * have new data only when the primary flushes the memstore.<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>     * @return the modifyable TD<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>     */<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>    public ModifyableTableDescriptor setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>      setValue(REGION_MEMSTORE_REPLICATION_KEY, Boolean.toString(memstoreReplication));<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>      // If the memstore replication is setup, we do not have to wait for observing a flush event<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>      // from primary before starting to serve reads, because gaps from replication is not applicable<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>      return setValue(REGION_REPLICA_WAIT_FOR_PRIMARY_FLUSH_CONF_KEY,<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span>              Boolean.toString(memstoreReplication));<a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>    }<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span><a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>    public ModifyableTableDescriptor setPriority(int priority) {<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>      return setValue(PRIORITY_KEY, Integer.toString(priority));<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>    }<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span><a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>    @Override<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>    public int getPriority() {<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>      return getOrDefault(PRIORITY_KEY, Integer::valueOf, DEFAULT_PRIORITY);<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span>    }<a name="line.1345"></a>
+<span class="sourceLineNo">1346</span><a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>    /**<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>     * Returns all the column family names of the current table. The map of<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>     * TableDescriptor contains mapping of family name to ColumnFamilyDescriptor.<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>     * This returns all the keys of the family map which represents the column<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>     * family names of the table.<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>     *<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span>     * @return Immutable sorted set of the keys of the families.<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span>     */<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>    @Override<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>    public Set&lt;byte[]&gt; getColumnFamilyNames() {<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>      return Collections.unmodifiableSet(this.families.keySet());<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    }<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span><a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>    /**<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>     * Returns the ColumnFamilyDescriptor for a specific column family with name as<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>     * specified by the parameter column.<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>     *<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>     * @param column Column family name<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>     * passed in column.<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>     */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>    @Override<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>    public ColumnFamilyDescriptor getColumnFamily(final byte[] column) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>      return this.families.get(column);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>    }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span><a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>    /**<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>     * Removes the ColumnFamilyDescriptor with name specified by the parameter column<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>     * from the table descriptor<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>     *<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>     * @param column Name of the column family to be removed.<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>     * passed in column.<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>     */<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>    public ColumnFamilyDescriptor removeColumnFamily(final byte[] column) {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>      return this.families.remove(column);<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>    }<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span><a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>    /**<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>     * loadable or not will be determined when a region is opened.<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>     *<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>     * @param className Full class name.<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>     * @throws IOException<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>     * @return the modifyable TD<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>     */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>    public ModifyableTableDescriptor setCoprocessor(String className) throws IOException {<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>      return setCoprocessor(<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        CoprocessorDescriptorBuilder.newBuilder(className).setPriority(Coprocessor.PRIORITY_USER)<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          .build());<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>    }<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span><a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>    /**<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>     * loadable or not will be determined when a region is opened.<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>     *<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>     * @throws IOException any illegal parameter key/value<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>     * @return the modifyable TD<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>     */<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>    public ModifyableTableDescriptor setCoprocessor(CoprocessorDescriptor cp)<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>            throws IOException {<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>      checkHasCoprocessor(cp.getClassName());<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>      if (cp.getPriority() &lt; 0) {<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        throw new IOException("Priority must be bigger than or equal with zero, current:"<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>          + cp.getPriority());<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>      }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>      // Validate parameter kvs and then add key/values to kvString.<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>      StringBuilder kvString = new StringBuilder();<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>      for (Map.Entry&lt;String, String&gt; e : cp.getProperties().entrySet()) {<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>        if (!e.getKey().matches(CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN)) {<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>          throw new IOException("Illegal parameter key = " + e.getKey());<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>        }<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>        if (!e.getValue().matches(CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN)) {<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>          throw new IOException("Illegal parameter (" + e.getKey()<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>                  + ") value = " + e.getValue());<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>        }<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>        if (kvString.length() != 0) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>          kvString.append(',');<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>        }<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>        kvString.append(e.getKey());<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>        kvString.append('=');<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>        kvString.append(e.getValue());<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>      }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span><a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>      String value = cp.getJarPath().orElse("")<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>              + "|" + cp.getClassName() + "|" + Integer.toString(cp.getPriority()) + "|"<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>              + kvString.toString();<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>      return setCoprocessorToMap(value);<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>    }<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span><a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>    /**<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span>     * loadable or not will be determined when a region is opened.<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>     *<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>     * @throws IOException<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>     * @return the modifyable TD<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span>     * @deprecated used by HTableDescriptor and admin.rb.<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>     *                       As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>     */<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>    @Deprecated<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>    public ModifyableTableDescriptor setCoprocessorWithSpec(final String specStr)<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>      throws IOException {<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>      CoprocessorDescriptor cpDesc = toCoprocessorDescriptor(specStr).orElseThrow(<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>        () -&gt; new IllegalArgumentException(<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          "Format does not match " + CP_HTD_ATTR_VALUE_PATTERN + ": " + specStr));<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>      checkHasCoprocessor(cpDesc.getClassName());<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>      return setCoprocessorToMap(specStr);<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>    }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>    private void checkHasCoprocessor(final String className) throws IOException {<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>      if (hasCoprocessor(className)) {<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>        throw new IOException("Coprocessor " + className + " already exists.");<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>      }<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>    }<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span><a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>    /**<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>     * Add coprocessor to values Map<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>     * @return Returns &lt;code&gt;this&lt;/code&gt;<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>     */<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>    private ModifyableTableDescriptor setCoprocessorToMap(final String specStr) {<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>      if (specStr == null) {<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>        return this;<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>      }<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      // generate a coprocessor key<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      int maxCoprocessorNumber = 0;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>      Matcher keyMatcher;<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values.entrySet()) {<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e.getKey().get()));<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>        if (!keyMatcher.matches()) {<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>          continue;<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>        }<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>        maxCoprocessorNumber = Math.max(Integer.parseInt(keyMatcher.group(1)), maxCoprocessorNumber);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>      }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>      maxCoprocessorNumber++;<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>      String key = "coprocessor$" + Integer.toString(maxCoprocessorNumber);<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>      return setValue(new Bytes(Bytes.toBytes(key)), new Bytes(Bytes.toBytes(specStr)));<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>    }<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span><a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    /**<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>     * Check if the table has an attached co-processor represented by the name<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>     * className<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>     *<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>     * @param classNameToMatch - Class name of the co-processor<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>     * @return true of the table has a co-processor className<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>     */<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>    @Override<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>    public boolean hasCoprocessor(String classNameToMatch) {<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      return getCoprocessorDescriptors().stream().anyMatch(cp -&gt; cp.getClassName()<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>        .equals(classNameToMatch));<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>    }<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>    /**<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>     * Return the list of attached co-processor represented by their name<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>     * className<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>     *<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>     * @return The list of co-processors classNames<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>     */<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>    @Override<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>    public List&lt;CoprocessorDescriptor&gt; getCoprocessorDescriptors() {<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>      List&lt;CoprocessorDescriptor&gt; result = new ArrayList&lt;&gt;();<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e: getValues().entrySet()) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        String key = Bytes.toString(e.getKey().get()).trim();<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>        if (CP_HTD_ATTR_KEY_PATTERN.matcher(key).matches()) {<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>          toCoprocessorDescriptor(Bytes.toString(e.getValue().get()).trim())<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>            .ifPresent(result::add);<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>        }<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>      }<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>      return result;<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>    }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span><a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>    /**<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>     * Remove a coprocessor from those set on the table<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>     *<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>     * @param className Class name of the co-processor<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>     */<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>    public void removeCoprocessor(String className) {<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>      Bytes match = null;<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>      Matcher keyMatcher;<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>      Matcher valueMatcher;<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>              .entrySet()) {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                .getKey().get()));<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (!keyMatcher.matches()) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          continue;<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>        }<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>        valueMatcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(Bytes<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>                .toString(e.getValue().get()));<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>        if (!valueMatcher.matches()) {<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>          continue;<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        }<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>        // get className and compare<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>        String clazz = valueMatcher.group(2).trim(); // classname is the 2nd field<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        // remove the CP if it is present<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        if (clazz.equals(className.trim())) {<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>          match = e.getKey();<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span>          break;<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>        }<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      }<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // if we found a match, remove it<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      if (match != null) {<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>        ModifyableTableDescriptor.this.removeValue(match);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>    }<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span><a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>    /**<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>     * @return the bytes in pb format<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>     */<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    private byte[] toByteArray() {<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>      return ProtobufUtil.prependPBMagic(ProtobufUtil.toTableSchema(this).toByteArray());<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>    }<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span><a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>    /**<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     * @param bytes A pb serialized {@link ModifyableTableDescriptor} instance<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * with pb magic prefix<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     * @return An instance of {@link ModifyableTableDescriptor} made from<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * &lt;code&gt;bytes&lt;/code&gt;<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @throws DeserializationException<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     * @see #toByteArray()<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>    private static TableDescriptor parseFrom(final byte[] bytes)<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>            throws DeserializationException {<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>      if (!ProtobufUtil.isPBMagicPrefix(bytes)) {<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        throw new DeserializationException("Expected PB encoded ModifyableTableDescriptor");<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>      }<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>      HBaseProtos.TableSchema.Builder builder = HBaseProtos.TableSchema.newBuilder();<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>      try {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>        ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>        return ProtobufUtil.toTableDescriptor(builder.build());<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>      } catch (IOException e) {<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        throw new DeserializationException(e);<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>    }<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span><a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>    @Override<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>    public int getColumnFamilyCount() {<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>      return families.size();<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    }<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span><a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    @Override<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    public Optional&lt;String&gt; getRegionServerGroup() {<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      Bytes value = values.get(RSGROUP_KEY);<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>      if (value != null) {<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>        return Optional.of(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      } else {<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>        return Optional.empty();<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>      }<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>    }<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>  }<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span><a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>  /**<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>   * This method is mostly intended for internal use. However, it it also relied on by hbase-shell<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>   * for backwards compatibility.<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>   */<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>  private static Optional&lt;CoprocessorDescriptor&gt; toCoprocessorDescriptor(String spec) {<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    Matcher matcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(spec);<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>    if (matcher.matches()) {<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>      // jar file path can be empty if the cp class can be loaded<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>      // from class loader.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>      String path = matcher.group(1).trim().isEmpty() ?<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>        null : matcher.group(1).trim();<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>      String className = matcher.group(2).trim();<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>      if (className.isEmpty()) {<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>        return Optional.empty();<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>      String priorityStr = matcher.group(3).trim();<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>      int priority = priorityStr.isEmpty() ?<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>        Coprocessor.PRIORITY_USER : Integer.parseInt(priorityStr);<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>      String cfgSpec = null;<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>      try {<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>        cfgSpec = matcher.group(4);<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      } catch (IndexOutOfBoundsException ex) {<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>        // ignore<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      }<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>      Map&lt;String, String&gt; ourConf = new TreeMap&lt;&gt;();<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>      if (cfgSpec != null &amp;&amp; !cfgSpec.trim().equals("|")) {<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>        cfgSpec = cfgSpec.substring(cfgSpec.indexOf('|') + 1);<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>        Matcher m = CP_HTD_ATTR_VALUE_PARAM_PATTERN.matcher(cfgSpec);<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>        while (m.find()) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>          ourConf.put(m.group(1), m.group(2));<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>        }<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>      }<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>      return Optional.of(CoprocessorDescriptorBuilder.newBuilder(className)<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>        .setJarPath(path)<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>        .setPriority(priority)<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>        .setProperties(ourConf)<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>        .build());<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>    }<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>    return Optional.empty();<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>  }<a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>}<a name="line.1646"></a>
 
 
 
diff --git a/book.html b/book.html
index f93296b..317e26c 100644
--- a/book.html
+++ b/book.html
@@ -46085,7 +46085,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2021-01-14 20:04:47 UTC
+Last updated 2021-01-15 20:04:36 UTC
 </div>
 </div>
 <link rel="stylesheet" href="./coderay-asciidoctor.css">
diff --git a/bulk-loads.html b/bulk-loads.html
index 0f42d57..962e043 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -172,7 +172,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2021
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-15</li>
 </p>
         </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/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 7c3d60f..eea80e8 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -16236,139 +16236,139 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>335</td></tr>
+<td>336</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
-<td>617</td></tr>
+<td>618</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>739</td></tr>
+<td>740</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>750</td></tr>
+<td>751</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>761</td></tr>
+<td>762</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>787</td></tr>
+<td>788</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
-<td>865</td></tr>
+<td>866</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>966</td></tr>
+<td>967</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1000</td></tr>
+<td>1001</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1062</td></tr>
+<td>1063</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1134</td></tr>
+<td>1135</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1281</td></tr>
+<td>1282</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 114).</td>
-<td>1316</td></tr>
+<td>1317</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1325</td></tr>
+<td>1326</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1326</td></tr>
+<td>1327</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>1332</td></tr>
+<td>1333</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1365</td></tr>
+<td>1366</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1378</td></tr>
+<td>1379</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1391</td></tr>
+<td>1392</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1447</td></tr>
+<td>1448</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>1485</td></tr>
+<td>1486</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1568</td></tr>
+<td>1569</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1571</td></tr></table></div>
+<td>1572</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TableState.java">org/apache/hadoop/hbase/client/TableState.java</h3>
 <table border="0" class="table table-striped">
@@ -40137,7 +40137,7 @@
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.slf4j.Logger' import.</td>
-<td>66</td></tr></table></div>
+<td>58</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.TestWarmupRegion.java">org/apache/hadoop/hbase/master/TestWarmupRegion.java</h3>
 <table border="0" class="table table-striped">
@@ -75561,7 +75561,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2021
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-15</li>
 </p>
         </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/coc.html b/coc.html
index eed5c8c..b54106b 100644
--- a/coc.html
+++ b/coc.html
@@ -241,7 +241,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2021
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-15</li>
 </p>
         </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/dependencies.html b/dependencies.html
index c518155..dd39644 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -313,7 +313,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2021
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-15</li>
 </p>
         </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/dependency-convergence.html b/dependency-convergence.html
index a8b278b..e83559c 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -824,7 +824,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2021
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-15</li>
 </p>
         </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/dependency-info.html b/dependency-info.html
index 584c01a..69a32ef 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -194,7 +194,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2021
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-15</li>
 </p>
         </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/dependency-management.html b/dependency-management.html
index 97fbfdf..0234f76 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1019,7 +1019,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2021
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-14</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2021-01-15</li>
 </p>
         </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/devapidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html b/devapidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html
index 63d3092..79d4860 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.574">TableDescriptorBuilder.ModifyableTableDescriptor</a>
+<pre>private static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.575">TableDescriptorBuilder.ModifyableTableDescriptor</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuild [...]
 </li>
@@ -689,7 +689,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.577">name</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.578">name</a></pre>
 </li>
 </ul>
 <a name="values">
@@ -698,7 +698,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>,<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuil [...]
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>,<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuil [...]
 <div class="block">A map which holds the metadata information of the table. This metadata
  includes values like IS_META, SPLIT_POLICY, MAX_FILE_SIZE,
  READONLY, MEMSTORE_FLUSHSIZE etc...</div>
@@ -710,7 +710,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockListLast">
 <li class="blockList">
 <h4>families</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.589">families</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.590">families</a></pre>
 <div class="block">Maps column family name to the respective FamilyDescriptors</div>
 </li>
 </ul>
@@ -728,7 +728,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>ModifyableTableDescriptor</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.597">ModifyableTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.598">ModifyableTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)</pre>
 <div class="block">Construct a table descriptor specifying a TableName object</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -742,7 +742,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>ModifyableTableDescriptor</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.601">ModifyableTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.602">ModifyableTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 </li>
 </ul>
 <a name="ModifyableTableDescriptor-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-">
@@ -751,7 +751,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>ModifyableTableDescriptor</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.613">ModifyableTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.614">ModifyableTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name,
                                   <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 <div class="block">Construct a table descriptor by cloning the descriptor passed as a
  parameter.
@@ -770,7 +770,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ModifyableTableDescriptor</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.617">ModifyableTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.618">ModifyableTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&gt;&nbsp;families,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>,<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&gt;&nbsp;values)</pre>
 </li>
@@ -789,7 +789,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>isMetaRegion</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.632">isMetaRegion</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.633">isMetaRegion</a>()</pre>
 <div class="block">Checks if this table is <code> hbase:meta </code> region.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -805,7 +805,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>isMetaTable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.642">isMetaTable</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.643">isMetaTable</a>()</pre>
 <div class="block">Checks if the table is a <code>hbase:meta</code> table</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -821,7 +821,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.647">getValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.648">getValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html#getValue-org.apache.hadoop.hbase.util.Bytes-">TableDescriptor</a></code></span></div>
 <div class="block">Getter for accessing the metadata associated with the key.</div>
 <dl>
@@ -840,7 +840,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getValue</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.653">getValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.654">getValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html#getValue-java.lang.String-">TableDescriptor</a></code></span></div>
 <div class="block">Getter for accessing the metadata associated with the key.</div>
 <dl>
@@ -859,7 +859,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getValue</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.659">getValue</a>(byte[]&nbsp;key)</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.660">getValue</a>(byte[]&nbsp;key)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html#getValue-byte:A-">TableDescriptor</a></code></span></div>
 <div class="block">Getter for accessing the metadata associated with the key.</div>
 <dl>
@@ -880,7 +880,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrDefault</h4>
-<pre>private&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.664">getOrDefault</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key,
+<pre>private&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.665">getOrDefault</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,T&gt;&nbsp;function,
                            T&nbsp;defaultValue)</pre>
 </li>
@@ -891,7 +891,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getValues</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>,<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilde [...]
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>,<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilde [...]
 <div class="block">Getter for fetching an unmodifiable <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#values"><code>values</code></a> map.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -909,7 +909,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.693">setValue</a>(byte[]&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.694">setValue</a>(byte[]&nbsp;key,
                                                                  byte[]&nbsp;value)</pre>
 <div class="block">Setter for storing metadata as a (key, value) pair in <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#values"><code>values</code></a> map</div>
 <dl>
@@ -929,7 +929,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.698">setValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface i [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.699">setValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface i [...]
                                                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 </li>
 </ul>
@@ -939,7 +939,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.707">setValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes< [...]
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.708">setValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes< [...]
                                                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 </li>
 </ul>
@@ -949,7 +949,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.718">setValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</ [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.719">setValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</ [...]
                                                                  <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;value)</pre>
 </li>
 </ul>
@@ -961,7 +961,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytesOrNull</h4>
-<pre>private static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.727">toBytesOrNull</a>(T&nbsp;t,
+<pre>private static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.728">toBytesOrNull</a>(T&nbsp;t,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;T,byte[]&gt;&nbsp;f)</pre>
 </li>
 </ul>
@@ -971,7 +971,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.742">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interfac [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.743">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interfac [...]
 <div class="block">Remove metadata represented by the key from the <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#values"><code>values</code></a> map</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -988,7 +988,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.753">removeValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Byte [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.754">removeValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Byte [...]
 <div class="block">Remove metadata represented by the key from the <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#values"><code>values</code></a> map</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1005,7 +1005,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.764">removeValue</a>(byte[]&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.765">removeValue</a>(byte[]&nbsp;key)</pre>
 <div class="block">Remove metadata represented by the key from the <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#values"><code>values</code></a> map</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1022,7 +1022,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>isReadOnly</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.776">isReadOnly</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.777">isReadOnly</a>()</pre>
 <div class="block">Check if the readOnly flag of the table is set. If the readOnly flag is
  set then the contents of the table can only be read from but not
  modified.</div>
@@ -1040,7 +1040,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setReadOnly</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.790">setReadOnly</a>(boolean&nbsp;readOnly)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.791">setReadOnly</a>(boolean&nbsp;readOnly)</pre>
 <div class="block">Setting the table as read only sets all the columns in the table as read
  only. By default all tables are modifiable, but if the readOnly flag is
  set to true then the contents of the table can only be read but not
@@ -1060,7 +1060,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>isCompactionEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.801">isCompactionEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.802">isCompactionEnabled</a>()</pre>
 <div class="block">Check if the compaction enable flag of the table is true. If flag is
  false then no minor/major compactions will be done in real.</div>
 <dl>
@@ -1077,7 +1077,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setCompactionEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.811">setCompactionEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.812">setCompactionEnabled</a>(boolean&nbsp;isEnable)</pre>
 <div class="block">Setting the table compaction enable flag.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1093,7 +1093,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>isSplitEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.822">isSplitEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.823">isSplitEnabled</a>()</pre>
 <div class="block">Check if the split enable flag of the table is true. If flag is false then no split will be
  done.</div>
 <dl>
@@ -1110,7 +1110,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setSplitEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.832">setSplitEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.833">setSplitEnabled</a>(boolean&nbsp;isEnable)</pre>
 <div class="block">Setting the table region split enable flag.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1126,7 +1126,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>isMergeEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.843">isMergeEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.844">isMergeEnabled</a>()</pre>
 <div class="block">Check if the region merge enable flag of the table is true. If flag is false then no merge
  will be done.</div>
 <dl>
@@ -1143,7 +1143,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setMergeEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.853">setMergeEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.854">setMergeEnabled</a>(boolean&nbsp;isEnable)</pre>
 <div class="block">Setting the table region merge enable flag.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1159,7 +1159,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>isNormalizationEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.864">isNormalizationEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.865">isNormalizationEnabled</a>()</pre>
 <div class="block">Check if normalization enable flag of the table is true. If flag is false
  then no region normalizer won't attempt to normalize this table.</div>
 <dl>
@@ -1176,7 +1176,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getNormalizerTargetRegionCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.874">getNormalizerTargetRegionCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.875">getNormalizerTargetRegionCount</a>()</pre>
 <div class="block">Check if there is the target region count. If so, the normalize plan will be calculated based
  on the target region count.</div>
 <dl>
@@ -1193,7 +1193,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getNormalizerTargetRegionSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.885">getNormalizerTargetRegionSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.886">getNormalizerTargetRegionSize</a>()</pre>
 <div class="block">Check if there is the target region size. If so, the normalize plan will be calculated based
  on the target region size.</div>
 <dl>
@@ -1210,7 +1210,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizationEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.895">setNormalizationEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.896">setNormalizationEnabled</a>(boolean&nbsp;isEnable)</pre>
 <div class="block">Setting the table normalization enable flag.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1226,7 +1226,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizerTargetRegionCount</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.904">setNormalizerTargetRegionCount</a>(int&nbsp;regionCount)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.905">setNormalizerTargetRegionCount</a>(int&nbsp;regionCount)</pre>
 <div class="block">Setting the target region count of table normalization .</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1242,7 +1242,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizerTargetRegionSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.913">setNormalizerTargetRegionSize</a>(long&nbsp;regionSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.914">setNormalizerTargetRegionSize</a>(long&nbsp;regionSize)</pre>
 <div class="block">Setting the target region size of table normalization.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1258,7 +1258,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setDurability</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.924">setDurability</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.cl [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.925">setDurability</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.cl [...]
 <div class="block">Sets the <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><code>Durability</code></a> setting for the table. This defaults to
  Durability.USE_DEFAULT.</div>
 <dl>
@@ -1275,7 +1275,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getDurability</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.934">getDurability</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.935">getDurability</a>()</pre>
 <div class="block">Returns the durability setting for the table.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1291,7 +1291,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.944">getTableName</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.945">getTableName</a>()</pre>
 <div class="block">Get the name of the table</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1307,7 +1307,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionSplitPolicyClassName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.956">setRegionSplitPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title= [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.957">setRegionSplitPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title= [...]
 <div class="block">This sets the class associated with the region split policy which
  determines when a region split should occur. The class used by default is
  defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy</div>
@@ -1325,7 +1325,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionSplitPolicyClassName</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.969">getRegionSplitPolicyClassName</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.970">getRegionSplitPolicyClassName</a>()</pre>
 <div class="block">This gets the class associated with the region split policy which
  determines when a region split should occur. The class used by default is
  defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy</div>
@@ -1344,7 +1344,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxFileSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.983">getMaxFileSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.984">getMaxFileSize</a>()</pre>
 <div class="block">Returns the maximum size upto which a region can grow to after which a
  region split is triggered. The region size is represented by the size of
  the biggest store file in that region.</div>
@@ -1364,7 +1364,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxFileSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1003">setMaxFileSize</a>(long&nbsp;maxFileSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1004">setMaxFileSize</a>(long&nbsp;maxFileSize)</pre>
 <div class="block">Sets the maximum size upto which a region can grow to after which a
  region split is triggered. The region size is represented by the size of
  the biggest store file in that region, i.e. If the biggest store file
@@ -1390,7 +1390,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxFileSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1007">setMaxFileSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or inte [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1008">setMaxFileSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or inte [...]
                                                                 throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/HBaseException.html" title="class in org.apache.hadoop.hbase.exceptions">HBaseException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1404,7 +1404,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreFlushSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1021">getMemStoreFlushSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1022">getMemStoreFlushSize</a>()</pre>
 <div class="block">Returns the size of the memstore after which a flush to filesystem is
  triggered.</div>
 <dl>
@@ -1423,7 +1423,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setMemStoreFlushSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1033">setMemStoreFlushSize</a>(long&nbsp;memstoreFlushSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1034">setMemStoreFlushSize</a>(long&nbsp;memstoreFlushSize)</pre>
 <div class="block">Represents the maximum size of the memstore after which the contents of
  the memstore are flushed to the filesystem. This defaults to a size of 64
  MB.</div>
@@ -1441,7 +1441,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setMemStoreFlushSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1037">setMemStoreFlushSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class o [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1038">setMemStoreFlushSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class o [...]
                                                                       throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/HBaseException.html" title="class in org.apache.hadoop.hbase.exceptions">HBaseException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1455,7 +1455,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setFlushPolicyClassName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1052">setFlushPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="clas [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1053">setFlushPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="clas [...]
 <div class="block">This sets the class associated with the flush policy which determines
  determines the stores need to be flushed when flushing a region. The
  class used by default is defined in
@@ -1474,7 +1474,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushPolicyClassName</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1065">getFlushPolicyClassName</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1066">getFlushPolicyClassName</a>()</pre>
 <div class="block">This gets the class associated with the flush policy which determines the
  stores need to be flushed when flushing a region. The class used by
  default is defined in org.apache.hadoop.hbase.regionserver.FlushPolicy.</div>
@@ -1493,7 +1493,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1076">setColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.ap [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1077">setColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.ap [...]
 <div class="block">Adds a column family. For the updating purpose please use
  <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#modifyColumnFamily-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-"><code>modifyColumnFamily(ColumnFamilyDescriptor)</code></a> instead.</div>
 <dl>
@@ -1510,7 +1510,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1093">modifyColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1094">modifyColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org [...]
 <div class="block">Modifies the existing column family.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1526,7 +1526,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>putColumnFamily</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1104">putColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.a [...]
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1105">putColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.a [...]
 </li>
 </ul>
 <a name="hasColumnFamily-byte:A-">
@@ -1535,7 +1535,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>hasColumnFamily</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1116">hasColumnFamily</a>(byte[]&nbsp;familyName)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1117">hasColumnFamily</a>(byte[]&nbsp;familyName)</pre>
 <div class="block">Checks to see if this table contains the given column family</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1553,7 +1553,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1124">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1125">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1568,7 +1568,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringCustomizedValues</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1137">toStringCustomizedValues</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1138">toStringCustomizedValues</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html#toStringCustomizedValues--">toStringCustomizedValues</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></code></dd>
@@ -1584,7 +1584,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringTableAttributes</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1148">toStringTableAttributes</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1149">toStringTableAttributes</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>map of all table attributes formatted into string.</dd>
@@ -1597,7 +1597,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getValues</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1152">getValues</a>(boolean&nbsp;printDefaults)</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1153">getValues</a>(boolean&nbsp;printDefaults)</pre>
 </li>
 </ul>
 <a name="equals-java.lang.Object-">
@@ -1606,7 +1606,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1248">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1249">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
 <div class="block">Compare the contents of the descriptor with another one passed as a
  parameter. Checks if the obj passed is an instance of ModifyableTableDescriptor,
  if yes then the contents of the descriptors are compared.</div>
@@ -1628,7 +1628,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1262">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1263">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1643,7 +1643,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1284">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;other)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1285">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;other)</pre>
 <div class="block">Compares the descriptor with another descriptor which is passed as a
  parameter. This compares the content of the two descriptors and not the
  reference.</div>
@@ -1664,7 +1664,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilies</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1289">getColumnFamilies</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1290">getColumnFamilies</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html#getColumnFamilies--">TableDescriptor</a></code></span></div>
 <div class="block">Returns an unmodifiable collection of all the <a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client"><code>ColumnFamilyDescriptor</code></a> of
  all the column families of the table.</div>
@@ -1683,7 +1683,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionReplication</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1297">getRegionReplication</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1298">getRegionReplication</a>()</pre>
 <div class="block">Returns the configured replicas per region</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1699,7 +1699,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionReplication</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1307">setRegionReplication</a>(int&nbsp;regionReplication)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1308">setRegionReplication</a>(int&nbsp;regionReplication)</pre>
 <div class="block">Sets the number of replicas per region.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1715,7 +1715,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>hasRegionMemStoreReplication</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1315">hasRegionMemStoreReplication</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1316">hasRegionMemStoreReplication</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html#hasRegionMemStoreReplication--">hasRegionMemStoreReplication</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></code></dd>
@@ -1730,7 +1730,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionMemStoreReplication</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1329">setRegionMemStoreReplication</a>(boolean&nbsp;memstoreReplication)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1330">setRegionMemStoreReplication</a>(boolean&nbsp;memstoreReplication)</pre>
 <div class="block">Enable or Disable the memstore replication from the primary region to the
  replicas. The replication will be used only for meta operations (e.g.
  flush, compaction, ...)</div>
@@ -1750,7 +1750,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setPriority</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1337">setPriority</a>(int&nbsp;priority)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1338">setPriority</a>(int&nbsp;priority)</pre>
 </li>
 </ul>
 <a name="getPriority--">
@@ -1759,7 +1759,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getPriority</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1342">getPriority</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1343">getPriority</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html#getPriority--">getPriority</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></code></dd>
@@ -1772,7 +1772,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilyNames</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1355">getColumnFamilyNames</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1356">getColumnFamilyNames</a>()</pre>
 <div class="block">Returns all the column family names of the current table. The map of
  TableDescriptor contains mapping of family name to ColumnFamilyDescriptor.
  This returns all the keys of the family map which represents the column
@@ -1791,7 +1791,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1368">getColumnFamily</a>(byte[]&nbsp;column)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1369">getColumnFamily</a>(byte[]&nbsp;column)</pre>
 <div class="block">Returns the ColumnFamilyDescriptor for a specific column family with name as
  specified by the parameter column.</div>
 <dl>
@@ -1811,7 +1811,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>removeColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1380">removeColumnFamily</a>(byte[]&nbsp;column)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1381">removeColumnFamily</a>(byte[]&nbsp;column)</pre>
 <div class="block">Removes the ColumnFamilyDescriptor with name specified by the parameter column
  from the table descriptor</div>
 <dl>
@@ -1829,7 +1829,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1394">setCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or inte [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1395">setCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or inte [...]
                                                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add a table coprocessor to this table. The coprocessor type must be
  org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't
@@ -1851,7 +1851,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <ul class="blockList">
 <li class="blockList">
 <h4>setCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1409">setCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apac [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1410">setCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apac [...]
                                                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add a table coprocessor to this table. The coprocessor type must be
  org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't
@@ -1872,7 +1872,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/TableDescripto
 <li class="blockList">
 <h4>setCoprocessorWithSpec</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1453">setCoprocessorWithSpec</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or i [...]
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1454">setCoprocessorWithSpec</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or i [...]
                                                                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">used by HTableDescriptor and admin.rb.
                        As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
@@ -1896,7 +1896,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescript
 <ul class="blockList">
 <li class="blockList">
 <h4>checkHasCoprocessor</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1462">checkHasCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1463">checkHasCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1910,7 +1910,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescript
 <ul class="blockList">
 <li class="blockList">
 <h4>setCoprocessorToMap</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1473">setCoprocessorToMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class o [...]
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1474">setCoprocessorToMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class o [...]
 <div class="block">Add coprocessor to values Map</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1926,7 +1926,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescript
 <ul class="blockList">
 <li class="blockList">
 <h4>hasCoprocessor</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1500">hasCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;classNameToMatch)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1501">hasCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;classNameToMatch)</pre>
 <div class="block">Check if the table has an attached co-processor represented by the name
  className</div>
 <dl>
@@ -1945,7 +1945,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescript
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoprocessorDescriptors</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apache.hadoop.hbase.client">CoprocessorDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1512">getCoprocessorDescriptors</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apache.hadoop.hbase.client">CoprocessorDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1513">getCoprocessorDescriptors</a>()</pre>
 <div class="block">Return the list of attached co-processor represented by their name
  className</div>
 <dl>
@@ -1962,7 +1962,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescript
 <ul class="blockList">
 <li class="blockList">
 <h4>removeCoprocessor</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1529">removeCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1530">removeCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
 <div class="block">Remove a coprocessor from those set on the table</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1976,7 +1976,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescript
 <ul class="blockList">
 <li class="blockList">
 <h4>toByteArray</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1562">toByteArray</a>()</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1563">toByteArray</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the bytes in pb format</dd>
@@ -1989,7 +1989,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescript
 <ul class="blockList">
 <li class="blockList">
 <h4>parseFrom</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1574">parseFrom</a>(byte[]&nbsp;bytes)
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1575">parseFrom</a>(byte[]&nbsp;bytes)
                                   throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2011,7 +2011,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescript
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilyCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1590">getColumnFamilyCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1591">getColumnFamilyCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html#getColumnFamilyCount--">TableDescriptor</a></code></span></div>
 <div class="block">Returns the count of the column families of the table.</div>
 <dl>
@@ -2028,7 +2028,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescript
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getRegionServerGroup</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1595">getRegionServerGroup</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#line.1596">getRegionServerGroup</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html#getRegionServerGroup--">TableDescriptor</a></code></span></div>
 <div class="block">Get the region server group this table belongs to. The regions of this table will be placed
  only on the region servers within this group. If not present, will be placed on
diff --git a/devapidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html b/devapidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
index 43844f4..2fa3e17 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
@@ -1289,7 +1289,7 @@ public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java
 <h4>NAMESPACE_FAMILY_INFO</h4>
 <pre>@InterfaceAudience.Private
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.266">NAMESPACE_FAMILY_INFO</a></pre>
+public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.267">NAMESPACE_FAMILY_INFO</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">namespace table has been folded into the ns family in meta table, do not use this
              any more.</span></div>
 <dl>
@@ -1306,7 +1306,7 @@ public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java
 <h4>NAMESPACE_FAMILY_INFO_BYTES</h4>
 <pre>@InterfaceAudience.Private
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.274">NAMESPACE_FAMILY_INFO_BYTES</a></pre>
+public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.275">NAMESPACE_FAMILY_INFO_BYTES</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">namespace table has been folded into the ns family in meta table, do not use this
              any more.</span></div>
 </li>
@@ -1319,7 +1319,7 @@ public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hado
 <h4>NAMESPACE_COL_DESC_BYTES</h4>
 <pre>@InterfaceAudience.Private
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.282">NAMESPACE_COL_DESC_BYTES</a></pre>
+public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.283">NAMESPACE_COL_DESC_BYTES</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">namespace table has been folded into the ns family in meta table, do not use this
              any more.</span></div>
 </li>
@@ -1330,7 +1330,7 @@ public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>CP_HTD_ATTR_VALUE_PATTERN</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.292">CP_HTD_ATTR_VALUE_PATTERN</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.293">CP_HTD_ATTR_VALUE_PATTERN</a></pre>
 <div class="block"><pre>
  Pattern that matches a coprocessor specification. Form is:
  <code> &lt;coprocessor jar file location&gt; '|' &lt;class name&gt; ['|' &lt;priority&gt; ['|' &lt;arguments&gt;]]</code>
@@ -1345,7 +1345,7 @@ public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.295">CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.296">CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.TableDescriptorBuilder.CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN">Constant Field Values</a></dd>
@@ -1358,7 +1358,7 @@ public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.296">CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.297">CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.TableDescriptorBuilder.CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN">Constant Field Values</a></dd>
@@ -1371,7 +1371,7 @@ public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>CP_HTD_ATTR_VALUE_PARAM_PATTERN</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.297">CP_HTD_ATTR_VALUE_PARAM_PATTERN</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.298">CP_HTD_ATTR_VALUE_PARAM_PATTERN</a></pre>
 </li>
 </ul>
 <a name="CP_HTD_ATTR_KEY_PATTERN">
@@ -1380,7 +1380,7 @@ public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>CP_HTD_ATTR_KEY_PATTERN</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.300">CP_HTD_ATTR_KEY_PATTERN</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.301">CP_HTD_ATTR_KEY_PATTERN</a></pre>
 </li>
 </ul>
 <a name="NAMESPACE_TABLEDESC">
@@ -1390,7 +1390,7 @@ public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hado
 <li class="blockList">
 <h4>NAMESPACE_TABLEDESC</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.310">NAMESPACE_TABLEDESC</a></pre>
+public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.311">NAMESPACE_TABLEDESC</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 3.0.0 and will be removed in 4.0.0. We have folded the data in namespace
    table into meta table, so do not use it any more.</span></div>
 <div class="block">Table descriptor for namespace table</div>
@@ -1406,7 +1406,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>desc</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.318">desc</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder.ModifyableTableDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.319">desc</a></pre>
 </li>
 </ul>
 </li>
@@ -1423,7 +1423,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>TableDescriptorBuilder</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.362">TableDescriptorBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.363">TableDescriptorBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)</pre>
 </li>
 </ul>
 <a name="TableDescriptorBuilder-org.apache.hadoop.hbase.client.TableDescriptor-">
@@ -1432,7 +1432,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableDescriptorBuilder</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.366">TableDescriptorBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.367">TableDescriptorBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 </li>
 </ul>
 </li>
@@ -1458,7 +1458,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>toByteArray</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.324">toByteArray</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.325">toByteArray</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>desc</code> - The table descriptor to serialize</dd>
@@ -1473,7 +1473,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>parseFrom</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.337">parseFrom</a>(byte[]&nbsp;pbBytes)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.338">parseFrom</a>(byte[]&nbsp;pbBytes)
                                  throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></pre>
 <div class="block">The input should be created by <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#toByteArray-org.apache.hadoop.hbase.client.TableDescriptor-"><code>toByteArray(org.apache.hadoop.hbase.client.TableDescriptor)</code></a>.</div>
 <dl>
@@ -1492,7 +1492,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>newBuilder</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.341">newBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.342">newBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)</pre>
 </li>
 </ul>
 <a name="copy-org.apache.hadoop.hbase.client.TableDescriptor-">
@@ -1501,7 +1501,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>copy</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.345">copy</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.346">copy</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 </li>
 </ul>
 <a name="copy-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-">
@@ -1510,7 +1510,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>copy</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.349">copy</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.350">copy</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name,
                                    <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 </li>
 </ul>
@@ -1520,7 +1520,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>newBuilder</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.358">newBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.359">newBuilder</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 <div class="block">Copy all values, families, and name from the input.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1536,7 +1536,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.370">setCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.371">setCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1550,7 +1550,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.374">setCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apache.hadoop.hbase.client">CoprocessorDescriptor</a>&nbsp;cpDesc)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.375">setCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apache.hadoop.hbase.client">CoprocessorDescriptor</a>&nbsp;cpDesc)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1564,7 +1564,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setCoprocessors</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.379">setCoprocessors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/h [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.380">setCoprocessors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/h [...]
                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1578,7 +1578,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>hasCoprocessor</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.387">hasCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;classNameToMatch)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.388">hasCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;classNameToMatch)</pre>
 </li>
 </ul>
 <a name="setColumnFamily-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">
@@ -1587,7 +1587,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.391">setColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.392">setColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
 </li>
 </ul>
 <a name="setColumnFamilies-java.util.Collection-">
@@ -1596,7 +1596,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setColumnFamilies</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.396">setColumnFamilies</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.397">setColumnFamilies</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache [...]
 </li>
 </ul>
 <a name="modifyColumnFamily-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">
@@ -1605,7 +1605,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.402">modifyColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.403">modifyColumnFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
 </li>
 </ul>
 <a name="removeValue-java.lang.String-">
@@ -1614,7 +1614,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.407">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.408">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 </li>
 </ul>
 <a name="removeValue-org.apache.hadoop.hbase.util.Bytes-">
@@ -1623,7 +1623,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.412">removeValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.413">removeValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key)</pre>
 </li>
 </ul>
 <a name="removeValue-byte:A-">
@@ -1632,7 +1632,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.417">removeValue</a>(byte[]&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.418">removeValue</a>(byte[]&nbsp;key)</pre>
 </li>
 </ul>
 <a name="removeValue-java.util.function.BiPredicate-">
@@ -1641,7 +1641,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.422">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/BiPredicate.html?is-external=true" title="class or interface in java.util.function">BiPredicate</a>&lt;<a href="../../../.. [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.423">removeValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/BiPredicate.html?is-external=true" title="class or interface in java.util.function">BiPredicate</a>&lt;<a href="../../../.. [...]
 </li>
 </ul>
 <a name="removeColumnFamily-byte:A-">
@@ -1650,7 +1650,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.432">removeColumnFamily</a>(byte[]&nbsp;name)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.433">removeColumnFamily</a>(byte[]&nbsp;name)</pre>
 </li>
 </ul>
 <a name="removeCoprocessor-java.lang.String-">
@@ -1659,7 +1659,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>removeCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.437">removeCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.438">removeCoprocessor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;className)</pre>
 </li>
 </ul>
 <a name="setCompactionEnabled-boolean-">
@@ -1668,7 +1668,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setCompactionEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.442">setCompactionEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.443">setCompactionEnabled</a>(boolean&nbsp;isEnable)</pre>
 </li>
 </ul>
 <a name="setSplitEnabled-boolean-">
@@ -1677,7 +1677,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setSplitEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.447">setSplitEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.448">setSplitEnabled</a>(boolean&nbsp;isEnable)</pre>
 </li>
 </ul>
 <a name="setMergeEnabled-boolean-">
@@ -1686,7 +1686,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMergeEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.452">setMergeEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.453">setMergeEnabled</a>(boolean&nbsp;isEnable)</pre>
 </li>
 </ul>
 <a name="setDurability-org.apache.hadoop.hbase.client.Durability-">
@@ -1695,7 +1695,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setDurability</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.457">setDurability</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.458">setDurability</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)</pre>
 </li>
 </ul>
 <a name="setFlushPolicyClassName-java.lang.String-">
@@ -1704,7 +1704,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setFlushPolicyClassName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.462">setFlushPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clazz)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.463">setFlushPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clazz)</pre>
 </li>
 </ul>
 <a name="setMaxFileSize-long-">
@@ -1713,7 +1713,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxFileSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.467">setMaxFileSize</a>(long&nbsp;maxFileSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.468">setMaxFileSize</a>(long&nbsp;maxFileSize)</pre>
 </li>
 </ul>
 <a name="setMaxFileSize-java.lang.String-">
@@ -1722,7 +1722,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxFileSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.472">setMaxFileSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;maxFileSize)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.473">setMaxFileSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;maxFileSize)
                                       throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/HBaseException.html" title="class in org.apache.hadoop.hbase.exceptions">HBaseException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1736,7 +1736,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMemStoreFlushSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.477">setMemStoreFlushSize</a>(long&nbsp;memstoreFlushSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.478">setMemStoreFlushSize</a>(long&nbsp;memstoreFlushSize)</pre>
 </li>
 </ul>
 <a name="setMemStoreFlushSize-java.lang.String-">
@@ -1745,7 +1745,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setMemStoreFlushSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.482">setMemStoreFlushSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;memStoreFlushSize)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.483">setMemStoreFlushSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;memStoreFlushSize)
                                             throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/HBaseException.html" title="class in org.apache.hadoop.hbase.exceptions">HBaseException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1759,7 +1759,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizerTargetRegionCount</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.488">setNormalizerTargetRegionCount</a>(int&nbsp;regionCount)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.489">setNormalizerTargetRegionCount</a>(int&nbsp;regionCount)</pre>
 </li>
 </ul>
 <a name="setNormalizerTargetRegionSize-long-">
@@ -1768,7 +1768,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizerTargetRegionSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.493">setNormalizerTargetRegionSize</a>(long&nbsp;regionSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.494">setNormalizerTargetRegionSize</a>(long&nbsp;regionSize)</pre>
 </li>
 </ul>
 <a name="setNormalizationEnabled-boolean-">
@@ -1777,7 +1777,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizationEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.498">setNormalizationEnabled</a>(boolean&nbsp;isEnable)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.499">setNormalizationEnabled</a>(boolean&nbsp;isEnable)</pre>
 </li>
 </ul>
 <a name="setPriority-int-">
@@ -1786,7 +1786,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setPriority</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.503">setPriority</a>(int&nbsp;priority)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.504">setPriority</a>(int&nbsp;priority)</pre>
 </li>
 </ul>
 <a name="setReadOnly-boolean-">
@@ -1795,7 +1795,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setReadOnly</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.508">setReadOnly</a>(boolean&nbsp;readOnly)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.509">setReadOnly</a>(boolean&nbsp;readOnly)</pre>
 </li>
 </ul>
 <a name="setRegionMemStoreReplication-boolean-">
@@ -1804,7 +1804,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionMemStoreReplication</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.513">setRegionMemStoreReplication</a>(boolean&nbsp;memstoreReplication)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.514">setRegionMemStoreReplication</a>(boolean&nbsp;memstoreReplication)</pre>
 </li>
 </ul>
 <a name="setRegionReplication-int-">
@@ -1813,7 +1813,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionReplication</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.518">setRegionReplication</a>(int&nbsp;regionReplication)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.519">setRegionReplication</a>(int&nbsp;regionReplication)</pre>
 </li>
 </ul>
 <a name="setRegionSplitPolicyClassName-java.lang.String-">
@@ -1822,7 +1822,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionSplitPolicyClassName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.523">setRegionSplitPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clazz)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.524">setRegionSplitPolicyClassName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;clazz)</pre>
 </li>
 </ul>
 <a name="setValue-java.lang.String-java.lang.String-">
@@ -1831,7 +1831,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.528">setValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.529">setValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
 </li>
 </ul>
@@ -1841,7 +1841,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.533">setValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.534">setValue</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;key,
                                        <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;value)</pre>
 </li>
 </ul>
@@ -1851,7 +1851,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.538">setValue</a>(byte[]&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.539">setValue</a>(byte[]&nbsp;key,
                                        byte[]&nbsp;value)</pre>
 </li>
 </ul>
@@ -1861,7 +1861,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>getValue</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.543">getValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.544">getValue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 </li>
 </ul>
 <a name="setReplicationScope-int-">
@@ -1870,7 +1870,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setReplicationScope</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.553">setReplicationScope</a>(int&nbsp;scope)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.554">setReplicationScope</a>(int&nbsp;scope)</pre>
 <div class="block">Sets replication scope all & only the columns already in the builder. Columns added later won't
  be backfilled with replication scope.</div>
 <dl>
@@ -1887,7 +1887,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>setRegionServerGroup</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.565">setRegionServerGroup</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;group)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.566">setRegionServerGroup</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;group)</pre>
 </li>
 </ul>
 <a name="build--">
@@ -1896,7 +1896,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockList">
 <li class="blockList">
 <h4>build</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.570">build</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.571">build</a>()</pre>
 </li>
 </ul>
 <a name="toCoprocessorDescriptor-java.lang.String-">
@@ -1905,7 +1905,7 @@ public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toCoprocessorDescriptor</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apache.hadoop.hbase.client">CoprocessorDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.1609">toCoprocessorDescriptor</a>(<a href="https:// [...]
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/CoprocessorDescriptor.html" title="interface in org.apache.hadoop.hbase.client">CoprocessorDescriptor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#line.1610">toCoprocessorDescriptor</a>(<a href="https:// [...]
 <div class="block">This method is mostly intended for internal use. However, it it also relied on by hbase-shell
  for backwards compatibility.</div>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/TableDescriptorChecker.html b/devapidocs/org/apache/hadoop/hbase/util/TableDescriptorChecker.html
index 50f26e0..06add40 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/TableDescriptorChecker.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/TableDescriptorChecker.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.46">TableDescriptorChecker</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.47">TableDescriptorChecker</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Only used for master to sanity check <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client"><code>TableDescriptor</code></a>.</div>
 </li>
@@ -262,7 +262,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.47">LOG</a></pre>
+<pre>private static&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.48">LOG</a></pre>
 </li>
 </ul>
 <a name="TABLE_SANITY_CHECKS">
@@ -271,7 +271,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_SANITY_CHECKS</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.49">TABLE_SANITY_CHECKS</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.50">TABLE_SANITY_CHECKS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.TableDescriptorChecker.TABLE_SANITY_CHECKS">Constant Field Values</a></dd>
@@ -284,7 +284,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_TABLE_SANITY_CHECKS</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.50">DEFAULT_TABLE_SANITY_CHECKS</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.51">DEFAULT_TABLE_SANITY_CHECKS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.TableDescriptorChecker.DEFAULT_TABLE_SANITY_CHECKS">Constant Field Values</a></dd>
@@ -297,7 +297,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER_CHECK_COMPRESSION</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.53">MASTER_CHECK_COMPRESSION</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.54">MASTER_CHECK_COMPRESSION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.TableDescriptorChecker.MASTER_CHECK_COMPRESSION">Constant Field Values</a></dd>
@@ -310,7 +310,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MASTER_CHECK_COMPRESSION</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.54">DEFAULT_MASTER_CHECK_COMPRESSION</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.55">DEFAULT_MASTER_CHECK_COMPRESSION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.TableDescriptorChecker.DEFAULT_MASTER_CHECK_COMPRESSION">Constant Field Values</a></dd>
@@ -323,7 +323,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER_CHECK_ENCRYPTION</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.57">MASTER_CHECK_ENCRYPTION</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.58">MASTER_CHECK_ENCRYPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.TableDescriptorChecker.MASTER_CHECK_ENCRYPTION">Constant Field Values</a></dd>
@@ -336,7 +336,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEFAULT_MASTER_CHECK_ENCRYPTION</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.58">DEFAULT_MASTER_CHECK_ENCRYPTION</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.59">DEFAULT_MASTER_CHECK_ENCRYPTION</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.util.TableDescriptorChecker.DEFAULT_MASTER_CHECK_ENCRYPTION">Constant Field Values</a></dd>
@@ -357,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableDescriptorChecker</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.60">TableDescriptorChecker</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.61">TableDescriptorChecker</a>()</pre>
 </li>
 </ul>
 </li>
@@ -374,7 +374,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>sanityCheck</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.67">sanityCheck</a>(org.apache.hadoop.conf.Configuration&nbsp;c,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.68">sanityCheck</a>(org.apache.hadoop.conf.Configuration&nbsp;c,
                                <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;td)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Checks whether the table conforms to some sane limits, and configured
@@ -391,7 +391,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkReplicationScope</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.211">checkReplicationScope</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;cfd)
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.214">checkReplicationScope</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;cfd)
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -405,7 +405,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkCompactionPolicy</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.224">checkCompactionPolicy</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.227">checkCompactionPolicy</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                           <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;td)
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -420,7 +420,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkBloomFilterType</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.280">checkBloomFilterType</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;cfd)
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.283">checkBloomFilterType</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;cfd)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -434,7 +434,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkCompression</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.289">checkCompression</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;td)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.292">checkCompression</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;td)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -448,7 +448,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkEncryption</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.296">checkEncryption</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.299">checkEncryption</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                    <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;td)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -463,7 +463,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkClassLoading</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.303">checkClassLoading</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.306">checkClassLoading</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                      <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;td)
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -478,7 +478,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>warnOrThrowExceptionForFailure</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.310">warnOrThrowExceptionForFailure</a>(boolean&nbsp;logWarn,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TableDescriptorChecker.html#line.313">warnOrThrowExceptionForFailure</a>(boolean&nbsp;logWarn,
                                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;message,
                                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;cause)
                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html
index 9506b60..87edfdb 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html
@@ -259,1398 +259,1399 @@
 <span class="sourceLineNo">251</span>  public static PrettyPrinter.Unit getUnit(String key) {<a name="line.251"></a>
 <span class="sourceLineNo">252</span>    switch (key) {<a name="line.252"></a>
 <span class="sourceLineNo">253</span>      case MAX_FILESIZE:<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        return PrettyPrinter.Unit.BYTE;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      default:<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        return PrettyPrinter.Unit.NONE;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>  /**<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   *             any more.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  @InterfaceAudience.Private<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  @Deprecated<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  public final static String NAMESPACE_FAMILY_INFO = "info";<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>  /**<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   *             any more.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   */<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @InterfaceAudience.Private<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  @Deprecated<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public final static byte[] NAMESPACE_FAMILY_INFO_BYTES = Bytes.toBytes(NAMESPACE_FAMILY_INFO);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   *             any more.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  @InterfaceAudience.Private<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  @Deprecated<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public final static byte[] NAMESPACE_COL_DESC_BYTES = Bytes.toBytes("d");<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  /**<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * &lt;pre&gt;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * Pattern that matches a coprocessor specification. Form is:<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * {@code &lt;coprocessor jar file location&gt; '|' &lt;class name&gt; ['|' &lt;priority&gt; ['|' &lt;arguments&gt;]]}<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * where arguments are {@code &lt;KEY&gt; '=' &lt;VALUE&gt; [,...]}<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * For example: {@code hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2}<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * &lt;/pre&gt;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  private static final Pattern CP_HTD_ATTR_VALUE_PATTERN =<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    Pattern.compile("(^[^\\|]*)\\|([^\\|]+)\\|[\\s]*([\\d]*)[\\s]*(\\|.*)?$");<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN = "[^=,]+";<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN = "[^,]+";<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  private static final Pattern CP_HTD_ATTR_VALUE_PARAM_PATTERN = Pattern.compile(<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    "(" + CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN + ")=(" +<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN + "),?");<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private static final Pattern CP_HTD_ATTR_KEY_PATTERN =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Pattern.compile("^coprocessor\\$([0-9]+)$", Pattern.CASE_INSENSITIVE);<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  /**<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * Table descriptor for namespace table<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * @deprecated since 3.0.0 and will be removed in 4.0.0. We have folded the data in namespace<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   *   table into meta table, so do not use it any more.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21154"&gt;HBASE-21154&lt;/a&gt;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Deprecated<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public static final TableDescriptor NAMESPACE_TABLEDESC =<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    TableDescriptorBuilder.newBuilder(TableName.NAMESPACE_TABLE_NAME)<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(NAMESPACE_FAMILY_INFO_BYTES)<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        // Ten is arbitrary number. Keep versions to help debugging.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        .setMaxVersions(10).setInMemory(true).setBlocksize(8 * 1024)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        .setScope(HConstants.REPLICATION_SCOPE_LOCAL).build())<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      .build();<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  private final ModifyableTableDescriptor desc;<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /**<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param desc The table descriptor to serialize<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static byte[] toByteArray(TableDescriptor desc) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    if (desc instanceof ModifyableTableDescriptor) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      return ((ModifyableTableDescriptor) desc).toByteArray();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    return new ModifyableTableDescriptor(desc).toByteArray();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  /**<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * The input should be created by {@link #toByteArray}.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * @param pbBytes A pb serialized TableDescriptor instance with pb magic prefix<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @throws org.apache.hadoop.hbase.exceptions.DeserializationException<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public static TableDescriptor parseFrom(byte[] pbBytes) throws DeserializationException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return ModifyableTableDescriptor.parseFrom(pbBytes);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public static TableDescriptorBuilder newBuilder(final TableName name) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return new TableDescriptorBuilder(name);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public static TableDescriptor copy(TableDescriptor desc) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return new ModifyableTableDescriptor(desc);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static TableDescriptor copy(TableName name, TableDescriptor desc) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return new ModifyableTableDescriptor(name, desc);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Copy all values, families, and name from the input.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @param desc The desciptor to copy<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @return A clone of input<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public static TableDescriptorBuilder newBuilder(final TableDescriptor desc) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    return new TableDescriptorBuilder(desc);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private TableDescriptorBuilder(final TableName name) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    this.desc = new ModifyableTableDescriptor(name);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private TableDescriptorBuilder(final TableDescriptor desc) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    this.desc = new ModifyableTableDescriptor(desc);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public TableDescriptorBuilder setCoprocessor(String className) throws IOException {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    return setCoprocessor(CoprocessorDescriptorBuilder.of(className));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public TableDescriptorBuilder setCoprocessor(CoprocessorDescriptor cpDesc) throws IOException {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    desc.setCoprocessor(Objects.requireNonNull(cpDesc));<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    return this;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  }<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  public TableDescriptorBuilder setCoprocessors(Collection&lt;CoprocessorDescriptor&gt; cpDescs)<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    throws IOException {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (CoprocessorDescriptor cpDesc : cpDescs) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      desc.setCoprocessor(cpDesc);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    return this;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  public boolean hasCoprocessor(String classNameToMatch) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    return desc.hasCoprocessor(classNameToMatch);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  }<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public TableDescriptorBuilder setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    desc.setColumnFamily(Objects.requireNonNull(family));<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    return this;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  public TableDescriptorBuilder setColumnFamilies(<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    final Collection&lt;ColumnFamilyDescriptor&gt; families) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    families.forEach(desc::setColumnFamily);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    return this;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public TableDescriptorBuilder modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    desc.modifyColumnFamily(Objects.requireNonNull(family));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    return this;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  }<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public TableDescriptorBuilder removeValue(final String key) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    desc.removeValue(key);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    return this;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  }<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  public TableDescriptorBuilder removeValue(Bytes key) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    desc.removeValue(key);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    return this;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  public TableDescriptorBuilder removeValue(byte[] key) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    desc.removeValue(key);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    return this;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public TableDescriptorBuilder removeValue(BiPredicate&lt;Bytes, Bytes&gt; predicate) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    List&lt;Bytes&gt; toRemove =<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      desc.getValues().entrySet().stream().filter(e -&gt; predicate.test(e.getKey(), e.getValue()))<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        .map(Map.Entry::getKey).collect(Collectors.toList());<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    for (Bytes key : toRemove) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      removeValue(key);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return this;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public TableDescriptorBuilder removeColumnFamily(final byte[] name) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    desc.removeColumnFamily(name);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return this;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  public TableDescriptorBuilder removeCoprocessor(String className) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    desc.removeCoprocessor(className);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return this;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public TableDescriptorBuilder setCompactionEnabled(final boolean isEnable) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    desc.setCompactionEnabled(isEnable);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return this;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public TableDescriptorBuilder setSplitEnabled(final boolean isEnable) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    desc.setSplitEnabled(isEnable);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return this;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public TableDescriptorBuilder setMergeEnabled(final boolean isEnable) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    desc.setMergeEnabled(isEnable);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return this;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public TableDescriptorBuilder setDurability(Durability durability) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    desc.setDurability(durability);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    return this;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public TableDescriptorBuilder setFlushPolicyClassName(String clazz) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    desc.setFlushPolicyClassName(clazz);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return this;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  public TableDescriptorBuilder setMaxFileSize(long maxFileSize) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    desc.setMaxFileSize(maxFileSize);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return this;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public TableDescriptorBuilder setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    desc.setMaxFileSize(maxFileSize);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return this;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  public TableDescriptorBuilder setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    desc.setMemStoreFlushSize(memstoreFlushSize);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    return this;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public TableDescriptorBuilder setMemStoreFlushSize(String memStoreFlushSize)<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    throws HBaseException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    desc.setMemStoreFlushSize(memStoreFlushSize);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return this;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  public TableDescriptorBuilder setNormalizerTargetRegionCount(final int regionCount) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    desc.setNormalizerTargetRegionCount(regionCount);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return this;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  }<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span>  public TableDescriptorBuilder setNormalizerTargetRegionSize(final long regionSize) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    desc.setNormalizerTargetRegionSize(regionSize);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return this;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  public TableDescriptorBuilder setNormalizationEnabled(final boolean isEnable) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    desc.setNormalizationEnabled(isEnable);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    return this;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>  public TableDescriptorBuilder setPriority(int priority) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    desc.setPriority(priority);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    return this;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public TableDescriptorBuilder setReadOnly(final boolean readOnly) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    desc.setReadOnly(readOnly);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return this;<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  }<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public TableDescriptorBuilder setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    desc.setRegionMemStoreReplication(memstoreReplication);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    return this;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>  public TableDescriptorBuilder setRegionReplication(int regionReplication) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    desc.setRegionReplication(regionReplication);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    return this;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span>  public TableDescriptorBuilder setRegionSplitPolicyClassName(String clazz) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    desc.setRegionSplitPolicyClassName(clazz);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    return this;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  public TableDescriptorBuilder setValue(final String key, final String value) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    desc.setValue(key, value);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    return this;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>  public TableDescriptorBuilder setValue(final Bytes key, final Bytes value) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    desc.setValue(key, value);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    return this;<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  public TableDescriptorBuilder setValue(final byte[] key, final byte[] value) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    desc.setValue(key, value);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    return this;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>  public String getValue(String key) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return desc.getValue(key);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Sets replication scope all &amp; only the columns already in the builder. Columns added later won't<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * be backfilled with replication scope.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param scope replication scope<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @return a TableDescriptorBuilder<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   */<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  public TableDescriptorBuilder setReplicationScope(int scope) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    Map&lt;byte[], ColumnFamilyDescriptor&gt; newFamilies = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    newFamilies.putAll(desc.families);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    newFamilies<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        .forEach((cf, cfDesc) -&gt; {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>          desc.removeColumnFamily(cf);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>          desc.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(cfDesc).setScope(scope)<a name="line.559"></a>
-<span class="sourceLineNo">560</span>              .build());<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        });<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    return this;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  }<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>  public TableDescriptorBuilder setRegionServerGroup(String group) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    desc.setValue(RSGROUP_KEY, group);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    return this;<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  }<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>  public TableDescriptor build() {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    return new ModifyableTableDescriptor(desc);<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  private static final class ModifyableTableDescriptor<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    implements TableDescriptor, Comparable&lt;ModifyableTableDescriptor&gt; {<a name="line.575"></a>
-<span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sourceLineNo">577</span>    private final TableName name;<a name="line.577"></a>
-<span class="sourceLineNo">578</span><a name="line.578"></a>
-<span class="sourceLineNo">579</span>    /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>     * A map which holds the metadata information of the table. This metadata<a name="line.580"></a>
-<span class="sourceLineNo">581</span>     * includes values like IS_META, SPLIT_POLICY, MAX_FILE_SIZE,<a name="line.581"></a>
-<span class="sourceLineNo">582</span>     * READONLY, MEMSTORE_FLUSHSIZE etc...<a name="line.582"></a>
-<span class="sourceLineNo">583</span>     */<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    private final Map&lt;Bytes, Bytes&gt; values = new HashMap&lt;&gt;();<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>    /**<a name="line.586"></a>
-<span class="sourceLineNo">587</span>     * Maps column family name to the respective FamilyDescriptors<a name="line.587"></a>
-<span class="sourceLineNo">588</span>     */<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    private final Map&lt;byte[], ColumnFamilyDescriptor&gt; families<a name="line.589"></a>
-<span class="sourceLineNo">590</span>            = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>    /**<a name="line.592"></a>
-<span class="sourceLineNo">593</span>     * Construct a table descriptor specifying a TableName object<a name="line.593"></a>
-<span class="sourceLineNo">594</span>     *<a name="line.594"></a>
-<span class="sourceLineNo">595</span>     * @param name Table name.<a name="line.595"></a>
-<span class="sourceLineNo">596</span>     */<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    private ModifyableTableDescriptor(final TableName name) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      this(name, Collections.emptyList(), Collections.emptyMap());<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span><a name="line.600"></a>
-<span class="sourceLineNo">601</span>    private ModifyableTableDescriptor(final TableDescriptor desc) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      this(desc.getTableName(), Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>    /**<a name="line.605"></a>
-<span class="sourceLineNo">606</span>     * Construct a table descriptor by cloning the descriptor passed as a<a name="line.606"></a>
-<span class="sourceLineNo">607</span>     * parameter.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>     * &lt;p&gt;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     * Makes a deep copy of the supplied descriptor.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>     * @param name The new name<a name="line.610"></a>
-<span class="sourceLineNo">611</span>     * @param desc The descriptor.<a name="line.611"></a>
-<span class="sourceLineNo">612</span>     */<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    private ModifyableTableDescriptor(final TableName name, final TableDescriptor desc) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      this(name, Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>    private ModifyableTableDescriptor(final TableName name, final Collection&lt;ColumnFamilyDescriptor&gt; families,<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            Map&lt;Bytes, Bytes&gt; values) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>      this.name = name;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      families.forEach(c -&gt; this.families.put(c.getName(), ColumnFamilyDescriptorBuilder.copy(c)));<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      this.values.putAll(values);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.values.put(IS_META_KEY,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        new Bytes(Bytes.toBytes(Boolean.toString(name.equals(TableName.META_TABLE_NAME)))));<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    /**<a name="line.626"></a>
-<span class="sourceLineNo">627</span>     * Checks if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.627"></a>
-<span class="sourceLineNo">628</span>     *<a name="line.628"></a>
-<span class="sourceLineNo">629</span>     * @return true if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region<a name="line.629"></a>
-<span class="sourceLineNo">630</span>     */<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    @Override<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    public boolean isMetaRegion() {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      return getOrDefault(IS_META_KEY, Boolean::valueOf, false);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    }<a name="line.634"></a>
-<span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>    /**<a name="line.636"></a>
-<span class="sourceLineNo">637</span>     * Checks if the table is a &lt;code&gt;hbase:meta&lt;/code&gt; table<a name="line.637"></a>
-<span class="sourceLineNo">638</span>     *<a name="line.638"></a>
-<span class="sourceLineNo">639</span>     * @return true if table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>     */<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    @Override<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public boolean isMetaTable() {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      return isMetaRegion();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    }<a name="line.644"></a>
-<span class="sourceLineNo">645</span><a name="line.645"></a>
-<span class="sourceLineNo">646</span>    @Override<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    public Bytes getValue(Bytes key) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      Bytes rval = values.get(key);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      return rval == null ? null : new Bytes(rval.copyBytes());<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>    @Override<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    public String getValue(String key) {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      Bytes rval = values.get(new Bytes(Bytes.toBytes(key)));<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      return rval == null ? null : Bytes.toString(rval.get(), rval.getOffset(), rval.getLength());<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>    @Override<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public byte[] getValue(byte[] key) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      Bytes value = values.get(new Bytes(key));<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      return value == null ? null : value.copyBytes();<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    private &lt;T&gt; T getOrDefault(Bytes key, Function&lt;String, T&gt; function, T defaultValue) {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      Bytes value = values.get(key);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (value == null) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        return defaultValue;<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      } else {<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        return function.apply(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>    /**<a name="line.673"></a>
-<span class="sourceLineNo">674</span>     * Getter for fetching an unmodifiable {@link #values} map.<a name="line.674"></a>
-<span class="sourceLineNo">675</span>     *<a name="line.675"></a>
-<span class="sourceLineNo">676</span>     * @return unmodifiable map {@link #values}.<a name="line.676"></a>
-<span class="sourceLineNo">677</span>     * @see #values<a name="line.677"></a>
-<span class="sourceLineNo">678</span>     */<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    @Override<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    public Map&lt;Bytes, Bytes&gt; getValues() {<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      // shallow pointer copy<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      return Collections.unmodifiableMap(values);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    }<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>    /**<a name="line.685"></a>
-<span class="sourceLineNo">686</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.686"></a>
-<span class="sourceLineNo">687</span>     *<a name="line.687"></a>
-<span class="sourceLineNo">688</span>     * @param key The key.<a name="line.688"></a>
-<span class="sourceLineNo">689</span>     * @param value The value. If null, removes the setting.<a name="line.689"></a>
-<span class="sourceLineNo">690</span>     * @return the modifyable TD<a name="line.690"></a>
-<span class="sourceLineNo">691</span>     * @see #values<a name="line.691"></a>
-<span class="sourceLineNo">692</span>     */<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    public ModifyableTableDescriptor setValue(byte[] key, byte[] value) {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      return setValue(toBytesOrNull(key, v -&gt; v),<a name="line.694"></a>
-<span class="sourceLineNo">695</span>              toBytesOrNull(value, v -&gt; v));<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    }<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>    public ModifyableTableDescriptor setValue(String key, String value) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      return setValue(toBytesOrNull(key, Bytes::toBytes),<a name="line.699"></a>
-<span class="sourceLineNo">700</span>              toBytesOrNull(value, Bytes::toBytes));<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    /*<a name="line.703"></a>
-<span class="sourceLineNo">704</span>     * @param key The key.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>     * @param value The value. If null, removes the setting.<a name="line.705"></a>
-<span class="sourceLineNo">706</span>     */<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    private ModifyableTableDescriptor setValue(final Bytes key,<a name="line.707"></a>
-<span class="sourceLineNo">708</span>            final String value) {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      return setValue(key, toBytesOrNull(value, Bytes::toBytes));<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>    /*<a name="line.712"></a>
-<span class="sourceLineNo">713</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.713"></a>
-<span class="sourceLineNo">714</span>     *<a name="line.714"></a>
-<span class="sourceLineNo">715</span>     * @param key The key.<a name="line.715"></a>
-<span class="sourceLineNo">716</span>     * @param value The value. If null, removes the setting.<a name="line.716"></a>
-<span class="sourceLineNo">717</span>     */<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    public ModifyableTableDescriptor setValue(final Bytes key, final Bytes value) {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      if (value == null) {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>        values.remove(key);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>      } else {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        values.put(key, value);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>      return this;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span>    private static &lt;T&gt; Bytes toBytesOrNull(T t, Function&lt;T, byte[]&gt; f) {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      if (t == null) {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>        return null;<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      } else {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>        return new Bytes(f.apply(t));<a name="line.731"></a>
-<span class="sourceLineNo">732</span>      }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    }<a name="line.733"></a>
-<span class="sourceLineNo">734</span><a name="line.734"></a>
-<span class="sourceLineNo">735</span>    /**<a name="line.735"></a>
-<span class="sourceLineNo">736</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.736"></a>
-<span class="sourceLineNo">737</span>     *<a name="line.737"></a>
-<span class="sourceLineNo">738</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.738"></a>
-<span class="sourceLineNo">739</span>     * parameters.<a name="line.739"></a>
-<span class="sourceLineNo">740</span>     * @return the modifyable TD<a name="line.740"></a>
-<span class="sourceLineNo">741</span>     */<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    public ModifyableTableDescriptor removeValue(final String key) {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      return setValue(key, (String) null);<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    }<a name="line.744"></a>
-<span class="sourceLineNo">745</span><a name="line.745"></a>
-<span class="sourceLineNo">746</span>    /**<a name="line.746"></a>
-<span class="sourceLineNo">747</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.747"></a>
-<span class="sourceLineNo">748</span>     *<a name="line.748"></a>
-<span class="sourceLineNo">749</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.749"></a>
-<span class="sourceLineNo">750</span>     * parameters.<a name="line.750"></a>
-<span class="sourceLineNo">751</span>     * @return the modifyable TD<a name="line.751"></a>
-<span class="sourceLineNo">752</span>     */<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    public ModifyableTableDescriptor removeValue(Bytes key) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      return setValue(key, (Bytes) null);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>    /**<a name="line.757"></a>
-<span class="sourceLineNo">758</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.758"></a>
-<span class="sourceLineNo">759</span>     *<a name="line.759"></a>
-<span class="sourceLineNo">760</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.760"></a>
-<span class="sourceLineNo">761</span>     * parameters.<a name="line.761"></a>
-<span class="sourceLineNo">762</span>     * @return the modifyable TD<a name="line.762"></a>
-<span class="sourceLineNo">763</span>     */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    public ModifyableTableDescriptor removeValue(final byte[] key) {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      return removeValue(new Bytes(key));<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    }<a name="line.766"></a>
-<span class="sourceLineNo">767</span><a name="line.767"></a>
-<span class="sourceLineNo">768</span>    /**<a name="line.768"></a>
-<span class="sourceLineNo">769</span>     * Check if the readOnly flag of the table is set. If the readOnly flag is<a name="line.769"></a>
-<span class="sourceLineNo">770</span>     * set then the contents of the table can only be read from but not<a name="line.770"></a>
-<span class="sourceLineNo">771</span>     * modified.<a name="line.771"></a>
-<span class="sourceLineNo">772</span>     *<a name="line.772"></a>
-<span class="sourceLineNo">773</span>     * @return true if all columns in the table should be read only<a name="line.773"></a>
-<span class="sourceLineNo">774</span>     */<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    @Override<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    public boolean isReadOnly() {<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      return getOrDefault(READONLY_KEY, Boolean::valueOf, DEFAULT_READONLY);<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    }<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>    /**<a name="line.780"></a>
-<span class="sourceLineNo">781</span>     * Setting the table as read only sets all the columns in the table as read<a name="line.781"></a>
-<span class="sourceLineNo">782</span>     * only. By default all tables are modifiable, but if the readOnly flag is<a name="line.782"></a>
-<span class="sourceLineNo">783</span>     * set to true then the contents of the table can only be read but not<a name="line.783"></a>
-<span class="sourceLineNo">784</span>     * modified.<a name="line.784"></a>
-<span class="sourceLineNo">785</span>     *<a name="line.785"></a>
-<span class="sourceLineNo">786</span>     * @param readOnly True if all of the columns in the table should be read<a name="line.786"></a>
-<span class="sourceLineNo">787</span>     * only.<a name="line.787"></a>
-<span class="sourceLineNo">788</span>     * @return the modifyable TD<a name="line.788"></a>
-<span class="sourceLineNo">789</span>     */<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    public ModifyableTableDescriptor setReadOnly(final boolean readOnly) {<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      return setValue(READONLY_KEY, Boolean.toString(readOnly));<a name="line.791"></a>
-<span class="sourceLineNo">792</span>    }<a name="line.792"></a>
-<span class="sourceLineNo">793</span><a name="line.793"></a>
-<span class="sourceLineNo">794</span>    /**<a name="line.794"></a>
-<span class="sourceLineNo">795</span>     * Check if the compaction enable flag of the table is true. If flag is<a name="line.795"></a>
-<span class="sourceLineNo">796</span>     * false then no minor/major compactions will be done in real.<a name="line.796"></a>
-<span class="sourceLineNo">797</span>     *<a name="line.797"></a>
-<span class="sourceLineNo">798</span>     * @return true if table compaction enabled<a name="line.798"></a>
-<span class="sourceLineNo">799</span>     */<a name="line.799"></a>
-<span class="sourceLineNo">800</span>    @Override<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    public boolean isCompactionEnabled() {<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return getOrDefault(COMPACTION_ENABLED_KEY, Boolean::valueOf, DEFAULT_COMPACTION_ENABLED);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>     * Setting the table compaction enable flag.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>     *<a name="line.807"></a>
-<span class="sourceLineNo">808</span>     * @param isEnable True if enable compaction.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>     * @return the modifyable TD<a name="line.809"></a>
-<span class="sourceLineNo">810</span>     */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    public ModifyableTableDescriptor setCompactionEnabled(final boolean isEnable) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      return setValue(COMPACTION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    }<a name="line.813"></a>
-<span class="sourceLineNo">814</span><a name="line.814"></a>
-<span class="sourceLineNo">815</span>    /**<a name="line.815"></a>
-<span class="sourceLineNo">816</span>     * Check if the split enable flag of the table is true. If flag is false then no split will be<a name="line.816"></a>
-<span class="sourceLineNo">817</span>     * done.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>     *<a name="line.818"></a>
-<span class="sourceLineNo">819</span>     * @return true if table region split enabled<a name="line.819"></a>
-<span class="sourceLineNo">820</span>     */<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    @Override<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    public boolean isSplitEnabled() {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return getOrDefault(SPLIT_ENABLED_KEY, Boolean::valueOf, DEFAULT_SPLIT_ENABLED);<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    }<a name="line.824"></a>
-<span class="sourceLineNo">825</span><a name="line.825"></a>
-<span class="sourceLineNo">826</span>    /**<a name="line.826"></a>
-<span class="sourceLineNo">827</span>     * Setting the table region split enable flag.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>     * @param isEnable True if enable region split.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>     *<a name="line.829"></a>
-<span class="sourceLineNo">830</span>     * @return the modifyable TD<a name="line.830"></a>
-<span class="sourceLineNo">831</span>     */<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    public ModifyableTableDescriptor setSplitEnabled(final boolean isEnable) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      return setValue(SPLIT_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    }<a name="line.834"></a>
-<span class="sourceLineNo">835</span><a name="line.835"></a>
-<span class="sourceLineNo">836</span>    /**<a name="line.836"></a>
-<span class="sourceLineNo">837</span>     * Check if the region merge enable flag of the table is true. If flag is false then no merge<a name="line.837"></a>
-<span class="sourceLineNo">838</span>     * will be done.<a name="line.838"></a>
-<span class="sourceLineNo">839</span>     *<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     * @return true if table region merge enabled<a name="line.840"></a>
-<span class="sourceLineNo">841</span>     */<a name="line.841"></a>
-<span class="sourceLineNo">842</span>    @Override<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    public boolean isMergeEnabled() {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      return getOrDefault(MERGE_ENABLED_KEY, Boolean::valueOf, DEFAULT_MERGE_ENABLED);<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    }<a name="line.845"></a>
-<span class="sourceLineNo">846</span><a name="line.846"></a>
-<span class="sourceLineNo">847</span>    /**<a name="line.847"></a>
-<span class="sourceLineNo">848</span>     * Setting the table region merge enable flag.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>     * @param isEnable True if enable region merge.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>     *<a name="line.850"></a>
-<span class="sourceLineNo">851</span>     * @return the modifyable TD<a name="line.851"></a>
-<span class="sourceLineNo">852</span>     */<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    public ModifyableTableDescriptor setMergeEnabled(final boolean isEnable) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      return setValue(MERGE_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span>    /**<a name="line.857"></a>
-<span class="sourceLineNo">858</span>     * Check if normalization enable flag of the table is true. If flag is false<a name="line.858"></a>
-<span class="sourceLineNo">859</span>     * then no region normalizer won't attempt to normalize this table.<a name="line.859"></a>
-<span class="sourceLineNo">860</span>     *<a name="line.860"></a>
-<span class="sourceLineNo">861</span>     * @return true if region normalization is enabled for this table<a name="line.861"></a>
-<span class="sourceLineNo">862</span>     */<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    @Override<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    public boolean isNormalizationEnabled() {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      return getOrDefault(NORMALIZATION_ENABLED_KEY, Boolean::valueOf, DEFAULT_NORMALIZATION_ENABLED);<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    }<a name="line.866"></a>
-<span class="sourceLineNo">867</span><a name="line.867"></a>
-<span class="sourceLineNo">868</span>    /**<a name="line.868"></a>
-<span class="sourceLineNo">869</span>     * Check if there is the target region count. If so, the normalize plan will be calculated based<a name="line.869"></a>
-<span class="sourceLineNo">870</span>     * on the target region count.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>     * @return target region count after normalize done<a name="line.871"></a>
-<span class="sourceLineNo">872</span>     */<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    @Override<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    public int getNormalizerTargetRegionCount() {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>      return getOrDefault(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer::valueOf,<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        Integer.valueOf(-1));<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    }<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    /**<a name="line.879"></a>
-<span class="sourceLineNo">880</span>     * Check if there is the target region size. If so, the normalize plan will be calculated based<a name="line.880"></a>
-<span class="sourceLineNo">881</span>     * on the target region size.<a name="line.881"></a>
-<span class="sourceLineNo">882</span>     * @return target region size after normalize done<a name="line.882"></a>
-<span class="sourceLineNo">883</span>     */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    @Override<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    public long getNormalizerTargetRegionSize() {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      return getOrDefault(NORMALIZER_TARGET_REGION_SIZE_KEY, Long::valueOf, Long.valueOf(-1));<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
-<span class="sourceLineNo">888</span><a name="line.888"></a>
-<span class="sourceLineNo">889</span>    /**<a name="line.889"></a>
-<span class="sourceLineNo">890</span>     * Setting the table normalization enable flag.<a name="line.890"></a>
-<span class="sourceLineNo">891</span>     *<a name="line.891"></a>
-<span class="sourceLineNo">892</span>     * @param isEnable True if enable normalization.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>     * @return the modifyable TD<a name="line.893"></a>
-<span class="sourceLineNo">894</span>     */<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    public ModifyableTableDescriptor setNormalizationEnabled(final boolean isEnable) {<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      return setValue(NORMALIZATION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    }<a name="line.897"></a>
-<span class="sourceLineNo">898</span><a name="line.898"></a>
-<span class="sourceLineNo">899</span>    /**<a name="line.899"></a>
-<span class="sourceLineNo">900</span>     * Setting the target region count of table normalization .<a name="line.900"></a>
-<span class="sourceLineNo">901</span>     * @param regionCount the target region count.<a name="line.901"></a>
-<span class="sourceLineNo">902</span>     * @return the modifyable TD<a name="line.902"></a>
-<span class="sourceLineNo">903</span>     */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>    public ModifyableTableDescriptor setNormalizerTargetRegionCount(final int regionCount) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>      return setValue(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer.toString(regionCount));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>    }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>    /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>     * Setting the target region size of table normalization.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>     * @param regionSize the target region size.<a name="line.910"></a>
-<span class="sourceLineNo">911</span>     * @return the modifyable TD<a name="line.911"></a>
-<span class="sourceLineNo">912</span>     */<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    public ModifyableTableDescriptor setNormalizerTargetRegionSize(final long regionSize) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      return setValue(NORMALIZER_TARGET_REGION_SIZE_KEY, Long.toString(regionSize));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>     * Sets the {@link Durability} setting for the table. This defaults to<a name="line.918"></a>
-<span class="sourceLineNo">919</span>     * Durability.USE_DEFAULT.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>     *<a name="line.920"></a>
-<span class="sourceLineNo">921</span>     * @param durability enum value<a name="line.921"></a>
-<span class="sourceLineNo">922</span>     * @return the modifyable TD<a name="line.922"></a>
-<span class="sourceLineNo">923</span>     */<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    public ModifyableTableDescriptor setDurability(Durability durability) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      return setValue(DURABILITY_KEY, durability.name());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    }<a name="line.926"></a>
-<span class="sourceLineNo">927</span><a name="line.927"></a>
-<span class="sourceLineNo">928</span>    /**<a name="line.928"></a>
-<span class="sourceLineNo">929</span>     * Returns the durability setting for the table.<a name="line.929"></a>
-<span class="sourceLineNo">930</span>     *<a name="line.930"></a>
-<span class="sourceLineNo">931</span>     * @return durability setting for the table.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>     */<a name="line.932"></a>
-<span class="sourceLineNo">933</span>    @Override<a name="line.933"></a>
-<span class="sourceLineNo">934</span>    public Durability getDurability() {<a name="line.934"></a>
-<span class="sourceLineNo">935</span>      return getOrDefault(DURABILITY_KEY, Durability::valueOf, DEFAULT_DURABLITY);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>    }<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>    /**<a name="line.938"></a>
-<span class="sourceLineNo">939</span>     * Get the name of the table<a name="line.939"></a>
-<span class="sourceLineNo">940</span>     *<a name="line.940"></a>
-<span class="sourceLineNo">941</span>     * @return TableName<a name="line.941"></a>
-<span class="sourceLineNo">942</span>     */<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    @Override<a name="line.943"></a>
-<span class="sourceLineNo">944</span>    public TableName getTableName() {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      return name;<a name="line.945"></a>
-<span class="sourceLineNo">946</span>    }<a name="line.946"></a>
-<span class="sourceLineNo">947</span><a name="line.947"></a>
-<span class="sourceLineNo">948</span>    /**<a name="line.948"></a>
-<span class="sourceLineNo">949</span>     * This sets the class associated with the region split policy which<a name="line.949"></a>
-<span class="sourceLineNo">950</span>     * determines when a region split should occur. The class used by default is<a name="line.950"></a>
-<span class="sourceLineNo">951</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.951"></a>
-<span class="sourceLineNo">952</span>     *<a name="line.952"></a>
-<span class="sourceLineNo">953</span>     * @param clazz the class name<a name="line.953"></a>
-<span class="sourceLineNo">954</span>     * @return the modifyable TD<a name="line.954"></a>
-<span class="sourceLineNo">955</span>     */<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    public ModifyableTableDescriptor setRegionSplitPolicyClassName(String clazz) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      return setValue(SPLIT_POLICY_KEY, clazz);<a name="line.957"></a>
-<span class="sourceLineNo">958</span>    }<a name="line.958"></a>
-<span class="sourceLineNo">959</span><a name="line.959"></a>
-<span class="sourceLineNo">960</span>    /**<a name="line.960"></a>
-<span class="sourceLineNo">961</span>     * This gets the class associated with the region split policy which<a name="line.961"></a>
-<span class="sourceLineNo">962</span>     * determines when a region split should occur. The class used by default is<a name="line.962"></a>
-<span class="sourceLineNo">963</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.963"></a>
-<span class="sourceLineNo">964</span>     *<a name="line.964"></a>
-<span class="sourceLineNo">965</span>     * @return the class name of the region split policy for this table. If this<a name="line.965"></a>
-<span class="sourceLineNo">966</span>     * returns null, the default split policy is used.<a name="line.966"></a>
-<span class="sourceLineNo">967</span>     */<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    @Override<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    public String getRegionSplitPolicyClassName() {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      return getOrDefault(SPLIT_POLICY_KEY, Function.identity(), null);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>    /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>     * Returns the maximum size upto which a region can grow to after which a<a name="line.974"></a>
-<span class="sourceLineNo">975</span>     * region split is triggered. The region size is represented by the size of<a name="line.975"></a>
-<span class="sourceLineNo">976</span>     * the biggest store file in that region.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>     *<a name="line.977"></a>
-<span class="sourceLineNo">978</span>     * @return max hregion size for table, -1 if not set.<a name="line.978"></a>
-<span class="sourceLineNo">979</span>     *<a name="line.979"></a>
-<span class="sourceLineNo">980</span>     * @see #setMaxFileSize(long)<a name="line.980"></a>
-<span class="sourceLineNo">981</span>     */<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    @Override<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    public long getMaxFileSize() {<a name="line.983"></a>
-<span class="sourceLineNo">984</span>      return getOrDefault(MAX_FILESIZE_KEY, Long::valueOf, (long) -1);<a name="line.984"></a>
-<span class="sourceLineNo">985</span>    }<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    /**<a name="line.987"></a>
-<span class="sourceLineNo">988</span>     * Sets the maximum size upto which a region can grow to after which a<a name="line.988"></a>
-<span class="sourceLineNo">989</span>     * region split is triggered. The region size is represented by the size of<a name="line.989"></a>
-<span class="sourceLineNo">990</span>     * the biggest store file in that region, i.e. If the biggest store file<a name="line.990"></a>
-<span class="sourceLineNo">991</span>     * grows beyond the maxFileSize, then the region split is triggered. This<a name="line.991"></a>
-<span class="sourceLineNo">992</span>     * defaults to a value of 256 MB.<a name="line.992"></a>
-<span class="sourceLineNo">993</span>     * &lt;p&gt;<a name="line.993"></a>
-<span class="sourceLineNo">994</span>     * This is not an absolute value and might vary. Assume that a single row<a name="line.994"></a>
-<span class="sourceLineNo">995</span>     * exceeds the maxFileSize then the storeFileSize will be greater than<a name="line.995"></a>
-<span class="sourceLineNo">996</span>     * maxFileSize since a single row cannot be split across multiple regions<a name="line.996"></a>
-<span class="sourceLineNo">997</span>     * &lt;/p&gt;<a name="line.997"></a>
-<span class="sourceLineNo">998</span>     *<a name="line.998"></a>
-<span class="sourceLineNo">999</span>     * @param maxFileSize The maximum file size that a store file can grow to<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>     * before a split is triggered.<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>     * @return the modifyable TD<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>     */<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>    public ModifyableTableDescriptor setMaxFileSize(long maxFileSize) {<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      return setValue(MAX_FILESIZE_KEY, Long.toString(maxFileSize));<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    }<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span><a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    public ModifyableTableDescriptor setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      return setMaxFileSize(Long.parseLong(PrettyPrinter.<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        valueOf(maxFileSize, PrettyPrinter.Unit.BYTE)));<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    }<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span><a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    /**<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>     * Returns the size of the memstore after which a flush to filesystem is<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>     * triggered.<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>     *<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>     * @return memory cache flush size for each hregion, -1 if not set.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>     *<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>     * @see #setMemStoreFlushSize(long)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>     */<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>    @Override<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>    public long getMemStoreFlushSize() {<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      return getOrDefault(MEMSTORE_FLUSHSIZE_KEY, Long::valueOf, (long) -1);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    }<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    /**<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>     * Represents the maximum size of the memstore after which the contents of<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>     * the memstore are flushed to the filesystem. This defaults to a size of 64<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>     * MB.<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>     *<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>     * @param memstoreFlushSize memory cache flush size for each hregion<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>     * @return the modifyable TD<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>     */<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    public ModifyableTableDescriptor setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>      return setValue(MEMSTORE_FLUSHSIZE_KEY, Long.toString(memstoreFlushSize));<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    }<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span><a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>    public ModifyableTableDescriptor setMemStoreFlushSize(String memStoreFlushSize)<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>      throws HBaseException {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      return setMemStoreFlushSize(Long.parseLong(PrettyPrinter.valueOf(memStoreFlushSize,<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        PrettyPrinter.Unit.BYTE)));<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span><a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>    /**<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>     * This sets the class associated with the flush policy which determines<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>     * determines the stores need to be flushed when flushing a region. The<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>     * class used by default is defined in<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>     * org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>     *<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>     * @param clazz the class name<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>     * @return the modifyable TD<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>     */<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>    public ModifyableTableDescriptor setFlushPolicyClassName(String clazz) {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>      return setValue(FLUSH_POLICY_KEY, clazz);<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span><a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>    /**<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>     * This gets the class associated with the flush policy which determines the<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>     * stores need to be flushed when flushing a region. The class used by<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>     * default is defined in org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>     *<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>     * @return the class name of the flush policy for this table. If this<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>     * returns null, the default flush policy is used.<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>     */<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    @Override<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    public String getFlushPolicyClassName() {<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>      return getOrDefault(FLUSH_POLICY_KEY, Function.identity(), null);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    }<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>    /**<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>     * Adds a column family. For the updating purpose please use<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>     * {@link #modifyColumnFamily(ColumnFamilyDescriptor)} instead.<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>     *<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>     * @param family to add.<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>     * @return the modifyable TD<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>     */<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    public ModifyableTableDescriptor setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      }<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>      if (hasColumnFamily(family.getName())) {<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        throw new IllegalArgumentException("Family '"<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>                + family.getNameAsString() + "' already exists so cannot be added");<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      }<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      return putColumnFamily(family);<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span><a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>    /**<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>     * Modifies the existing column family.<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>     *<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>     * @param family to update<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>     * @return this (for chained invocation)<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>     */<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>    public ModifyableTableDescriptor modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      }<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      if (!hasColumnFamily(family.getName())) {<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>        throw new IllegalArgumentException("Column family '" + family.getNameAsString()<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>                + "' does not exist");<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>      return putColumnFamily(family);<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span><a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    private ModifyableTableDescriptor putColumnFamily(ColumnFamilyDescriptor family) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>      families.put(family.getName(), family);<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      return this;<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span><a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    /**<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>     * Checks to see if this table contains the given column family<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>     *<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>     * @param familyName Family name or column name.<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>     * @return true if the table contains the specified family name<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>     */<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    @Override<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>    public boolean hasColumnFamily(final byte[] familyName) {<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      return families.containsKey(familyName);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span><a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>    /**<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>     * @return Name of this table and then a map of all of the column family descriptors.<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>     */<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    @Override<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    public String toString() {<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      StringBuilder s = new StringBuilder();<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>      s.append(getValues(true));<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>      families.values().forEach(f -&gt; s.append(", ").append(f));<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>      return s.toString();<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    }<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span><a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    /**<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>     * @return Name of this table and then a map of all of the column family<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>     * descriptors (with only the non-default column family attributes)<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>     */<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    @Override<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>    public String toStringCustomizedValues() {<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      StringBuilder s = new StringBuilder();<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      s.append(getValues(false));<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>      families.values().forEach(hcd -&gt; s.append(", ").append(hcd.toStringCustomizedValues()));<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      return s.toString();<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    }<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span><a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>    /**<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>     * @return map of all table attributes formatted into string.<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>     */<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>    public String toStringTableAttributes() {<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>      return getValues(true).toString();<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>    }<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span><a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>    private StringBuilder getValues(boolean printDefaults) {<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>      StringBuilder s = new StringBuilder();<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span><a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>      // step 1: set partitioning and pruning<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>      Set&lt;Bytes&gt; reservedKeys = new TreeSet&lt;&gt;();<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>      Set&lt;Bytes&gt; userKeys = new TreeSet&lt;&gt;();<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>      for (Map.Entry&lt;Bytes, Bytes&gt; entry : values.entrySet()) {<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>        if (entry.getKey() == null || entry.getKey().get() == null) {<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>          continue;<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>        }<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>        String key = Bytes.toString(entry.getKey().get());<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>        // in this section, print out reserved keywords + coprocessor info<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>        if (!RESERVED_KEYWORDS.contains(entry.getKey()) &amp;&amp; !key.startsWith("coprocessor$")) {<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>          userKeys.add(entry.getKey());<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>          continue;<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>        }<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>        // only print out IS_META if true<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>        String value = Bytes.toString(entry.getValue().get());<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>        if (key.equalsIgnoreCase(IS_META)) {<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>          if (Boolean.valueOf(value) == false) {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>            continue;<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>          }<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>        }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>        // see if a reserved key is a default value. may not want to print it out<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>        if (printDefaults<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>                || !DEFAULT_VALUES.containsKey(key)<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>                || !DEFAULT_VALUES.get(key).equalsIgnoreCase(value)) {<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>          reservedKeys.add(entry.getKey());<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>        }<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>      }<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span><a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>      // early exit optimization<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>      boolean hasAttributes = !reservedKeys.isEmpty() || !userKeys.isEmpty();<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>      if (!hasAttributes) {<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>        return s;<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>      }<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span><a name="line.1188"></a>
-<span class="sourceLineNo">1189</span>      s.append(", {");<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>      // step 2: printing attributes<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>      if (hasAttributes) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>        s.append("TABLE_ATTRIBUTES =&gt; {");<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span><a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>        // print all reserved keys first<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        boolean printCommaForAttr = false;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>        for (Bytes k : reservedKeys) {<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>          String key = Bytes.toString(k.get());<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>          String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>          if (printCommaForAttr) {<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>            s.append(", ");<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          }<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          printCommaForAttr = true;<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          s.append(key);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          s.append(" =&gt; ");<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>          s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        }<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span><a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>        if (!userKeys.isEmpty()) {<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          // print all non-reserved as a separate subset<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>          if (printCommaForAttr) {<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>            s.append(", ");<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          }<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>          s.append(HConstants.METADATA).append(" =&gt; ");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>          s.append("{");<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>          boolean printCommaForCfg = false;<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>          for (Bytes k : userKeys) {<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>            String key = Bytes.toString(k.get());<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>            String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>            if (printCommaForCfg) {<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>              s.append(", ");<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>            }<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>            printCommaForCfg = true;<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>            s.append('\'').append(key).append('\'');<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>            s.append(" =&gt; ");<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>            s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>          }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>          s.append("}");<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>        }<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span><a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>        s.append("}");<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>      }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span><a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>      s.append("}"); // end METHOD<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>      return s;<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>    }<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>    /**<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>     * Compare the contents of the descriptor with another one passed as a<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>     * parameter. Checks if the obj passed is an instance of ModifyableTableDescriptor,<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>     * if yes then the contents of the descriptors are compared.<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>     *<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>     * @param obj The object to compare<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>     * @return true if the contents of the the two descriptors exactly match<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>     *<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>     * @see java.lang.Object#equals(java.lang.Object)<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>     */<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    @Override<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>    public boolean equals(Object obj) {<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>      if (this == obj) {<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>        return true;<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>      }<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>      if (obj instanceof ModifyableTableDescriptor) {<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>        return TableDescriptor.COMPARATOR.compare(this, (ModifyableTableDescriptor) obj) == 0;<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      }<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>      return false;<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>    }<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>    /**<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>     * @return hash code<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>     */<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>    @Override<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    public int hashCode() {<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>      int result = this.name.hashCode();<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>      if (this.families.size() &gt; 0) {<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>        for (ColumnFamilyDescriptor e : this.families.values()) {<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>          result ^= e.hashCode();<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>        }<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>      }<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>      result ^= values.hashCode();<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>      return result;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>    }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>    // Comparable<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>    /**<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>     * Compares the descriptor with another descriptor which is passed as a<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>     * parameter. This compares the content of the two descriptors and not the<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>     * reference.<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>     *<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>     * @param other The MTD to compare<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>     * @return 0 if the contents of the descriptors are exactly matching, 1 if<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>     * there is a mismatch in the contents<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>     */<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>    @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>    public int compareTo(final ModifyableTableDescriptor other) {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>      return TableDescriptor.COMPARATOR.compare(this, other);<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>    }<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span><a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>    @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>    public ColumnFamilyDescriptor[] getColumnFamilies() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>      return families.values().toArray(new ColumnFamilyDescriptor[families.size()]);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>    /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>     * Returns the configured replicas per region<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>     */<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>    @Override<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>    public int getRegionReplication() {<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>      return getOrDefault(REGION_REPLICATION_KEY, Integer::valueOf, DEFAULT_REGION_REPLICATION);<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>    }<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span><a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>    /**<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>     * Sets the number of replicas per region.<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>     *<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>     * @param regionReplication the replication factor per region<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>     * @return the modifyable TD<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>     */<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    public ModifyableTableDescriptor setRegionReplication(int regionReplication) {<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>      return setValue(REGION_REPLICATION_KEY, Integer.toString(regionReplication));<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>    }<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span><a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>    /**<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>     * @return true if the read-replicas memstore replication is enabled.<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>     */<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>    @Override<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    public boolean hasRegionMemStoreReplication() {<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>      return getOrDefault(REGION_MEMSTORE_REPLICATION_KEY, Boolean::valueOf, DEFAULT_REGION_MEMSTORE_REPLICATION);<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>    }<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span><a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>    /**<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>     * Enable or Disable the memstore replication from the primary region to the<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>     * replicas. The replication will be used only for meta operations (e.g.<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>     * flush, compaction, ...)<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>     *<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>     * @param memstoreReplication true if the new data written to the primary<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>     * region should be replicated. false if the secondaries can tollerate to<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>     * have new data only when the primary flushes the memstore.<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>     * @return the modifyable TD<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>     */<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>    public ModifyableTableDescriptor setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>      setValue(REGION_MEMSTORE_REPLICATION_KEY, Boolean.toString(memstoreReplication));<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>      // If the memstore replication is setup, we do not have to wait for observing a flush event<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>      // from primary before starting to serve reads, because gaps from replication is not applicable<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>      return setValue(REGION_REPLICA_WAIT_FOR_PRIMARY_FLUSH_CONF_KEY,<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>              Boolean.toString(memstoreReplication));<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    }<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span><a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>    public ModifyableTableDescriptor setPriority(int priority) {<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>      return setValue(PRIORITY_KEY, Integer.toString(priority));<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>    }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span><a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>    @Override<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    public int getPriority() {<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>      return getOrDefault(PRIORITY_KEY, Integer::valueOf, DEFAULT_PRIORITY);<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>    }<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span><a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>    /**<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>     * Returns all the column family names of the current table. The map of<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>     * TableDescriptor contains mapping of family name to ColumnFamilyDescriptor.<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>     * This returns all the keys of the family map which represents the column<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>     * family names of the table.<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>     *<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>     * @return Immutable sorted set of the keys of the families.<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>     */<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>    @Override<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>    public Set&lt;byte[]&gt; getColumnFamilyNames() {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>      return Collections.unmodifiableSet(this.families.keySet());<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    }<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    /**<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>     * Returns the ColumnFamilyDescriptor for a specific column family with name as<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>     * specified by the parameter column.<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>     *<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>     * @param column Column family name<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>     * passed in column.<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>     */<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>    @Override<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>    public ColumnFamilyDescriptor getColumnFamily(final byte[] column) {<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      return this.families.get(column);<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>    }<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span><a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    /**<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>     * Removes the ColumnFamilyDescriptor with name specified by the parameter column<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>     * from the table descriptor<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>     *<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>     * @param column Name of the column family to be removed.<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>     * passed in column.<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>     */<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    public ColumnFamilyDescriptor removeColumnFamily(final byte[] column) {<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>      return this.families.remove(column);<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>    }<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span><a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>    /**<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>     * loadable or not will be determined when a region is opened.<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>     *<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>     * @param className Full class name.<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>     * @throws IOException<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>     * @return the modifyable TD<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>     */<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>    public ModifyableTableDescriptor setCoprocessor(String className) throws IOException {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>      return setCoprocessor(<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        CoprocessorDescriptorBuilder.newBuilder(className).setPriority(Coprocessor.PRIORITY_USER)<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          .build());<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>    }<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span><a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>    /**<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>     * loadable or not will be determined when a region is opened.<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>     *<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>     * @throws IOException any illegal parameter key/value<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>     * @return the modifyable TD<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>     */<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>    public ModifyableTableDescriptor setCoprocessor(CoprocessorDescriptor cp)<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>            throws IOException {<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>      checkHasCoprocessor(cp.getClassName());<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>      if (cp.getPriority() &lt; 0) {<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        throw new IOException("Priority must be bigger than or equal with zero, current:"<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>          + cp.getPriority());<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>      }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>      // Validate parameter kvs and then add key/values to kvString.<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>      StringBuilder kvString = new StringBuilder();<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>      for (Map.Entry&lt;String, String&gt; e : cp.getProperties().entrySet()) {<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>        if (!e.getKey().matches(CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN)) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>          throw new IOException("Illegal parameter key = " + e.getKey());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>        }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>        if (!e.getValue().matches(CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN)) {<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>          throw new IOException("Illegal parameter (" + e.getKey()<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>                  + ") value = " + e.getValue());<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>        }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>        if (kvString.length() != 0) {<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>          kvString.append(',');<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>        }<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>        kvString.append(e.getKey());<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>        kvString.append('=');<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>        kvString.append(e.getValue());<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>      }<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span><a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>      String value = cp.getJarPath().orElse("")<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>              + "|" + cp.getClassName() + "|" + Integer.toString(cp.getPriority()) + "|"<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>              + kvString.toString();<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>      return setCoprocessorToMap(value);<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>    }<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span><a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>    /**<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>     * loadable or not will be determined when a region is opened.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>     *<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>     * @throws IOException<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>     * @return the modifyable TD<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>     * @deprecated used by HTableDescriptor and admin.rb.<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>     *                       As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>     */<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>    @Deprecated<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>    public ModifyableTableDescriptor setCoprocessorWithSpec(final String specStr)<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>      throws IOException {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>      CoprocessorDescriptor cpDesc = toCoprocessorDescriptor(specStr).orElseThrow(<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>        () -&gt; new IllegalArgumentException(<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          "Format does not match " + CP_HTD_ATTR_VALUE_PATTERN + ": " + specStr));<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>      checkHasCoprocessor(cpDesc.getClassName());<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>      return setCoprocessorToMap(specStr);<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>    }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>    private void checkHasCoprocessor(final String className) throws IOException {<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>      if (hasCoprocessor(className)) {<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>        throw new IOException("Coprocessor " + className + " already exists.");<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>      }<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>    }<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span><a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>    /**<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>     * Add coprocessor to values Map<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>     * @return Returns &lt;code&gt;this&lt;/code&gt;<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>     */<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>    private ModifyableTableDescriptor setCoprocessorToMap(final String specStr) {<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>      if (specStr == null) {<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>        return this;<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      // generate a coprocessor key<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      int maxCoprocessorNumber = 0;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>      Matcher keyMatcher;<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values.entrySet()) {<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e.getKey().get()));<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>        if (!keyMatcher.matches()) {<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>          continue;<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>        }<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>        maxCoprocessorNumber = Math.max(Integer.parseInt(keyMatcher.group(1)), maxCoprocessorNumber);<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>      }<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>      maxCoprocessorNumber++;<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>      String key = "coprocessor$" + Integer.toString(maxCoprocessorNumber);<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      return setValue(new Bytes(Bytes.toBytes(key)), new Bytes(Bytes.toBytes(specStr)));<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>    }<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span><a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    /**<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>     * Check if the table has an attached co-processor represented by the name<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>     * className<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>     *<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>     * @param classNameToMatch - Class name of the co-processor<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>     * @return true of the table has a co-processor className<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>     */<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    @Override<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    public boolean hasCoprocessor(String classNameToMatch) {<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      return getCoprocessorDescriptors().stream().anyMatch(cp -&gt; cp.getClassName()<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>        .equals(classNameToMatch));<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>    }<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>    /**<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>     * Return the list of attached co-processor represented by their name<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>     * className<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>     *<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>     * @return The list of co-processors classNames<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>     */<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>    @Override<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>    public List&lt;CoprocessorDescriptor&gt; getCoprocessorDescriptors() {<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>      List&lt;CoprocessorDescriptor&gt; result = new ArrayList&lt;&gt;();<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e: getValues().entrySet()) {<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        String key = Bytes.toString(e.getKey().get()).trim();<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>        if (CP_HTD_ATTR_KEY_PATTERN.matcher(key).matches()) {<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>          toCoprocessorDescriptor(Bytes.toString(e.getValue().get()).trim())<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>            .ifPresent(result::add);<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>        }<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>      }<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>      return result;<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>    }<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span><a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>    /**<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>     * Remove a coprocessor from those set on the table<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>     *<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>     * @param className Class name of the co-processor<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>     */<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    public void removeCoprocessor(String className) {<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>      Bytes match = null;<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>      Matcher keyMatcher;<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>      Matcher valueMatcher;<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>              .entrySet()) {<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                .getKey().get()));<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (!keyMatcher.matches()) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          continue;<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>        }<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>        valueMatcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(Bytes<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>                .toString(e.getValue().get()));<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>        if (!valueMatcher.matches()) {<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>          continue;<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        }<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>        // get className and compare<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>        String clazz = valueMatcher.group(2).trim(); // classname is the 2nd field<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        // remove the CP if it is present<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        if (clazz.equals(className.trim())) {<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>          match = e.getKey();<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>          break;<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>        }<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      }<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // if we found a match, remove it<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      if (match != null) {<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>        ModifyableTableDescriptor.this.removeValue(match);<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      }<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>    }<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span><a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>    /**<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>     * @return the bytes in pb format<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>     */<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    private byte[] toByteArray() {<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>      return ProtobufUtil.prependPBMagic(ProtobufUtil.toTableSchema(this).toByteArray());<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    }<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span><a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>    /**<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     * @param bytes A pb serialized {@link ModifyableTableDescriptor} instance<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * with pb magic prefix<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     * @return An instance of {@link ModifyableTableDescriptor} made from<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * &lt;code&gt;bytes&lt;/code&gt;<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @throws DeserializationException<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     * @see #toByteArray()<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     */<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    private static TableDescriptor parseFrom(final byte[] bytes)<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>            throws DeserializationException {<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>      if (!ProtobufUtil.isPBMagicPrefix(bytes)) {<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        throw new DeserializationException("Expected PB encoded ModifyableTableDescriptor");<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>      }<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>      HBaseProtos.TableSchema.Builder builder = HBaseProtos.TableSchema.newBuilder();<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>      try {<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>        ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>        return ProtobufUtil.toTableDescriptor(builder.build());<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>      } catch (IOException e) {<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>        throw new DeserializationException(e);<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>      }<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>    }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>    @Override<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    public int getColumnFamilyCount() {<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>      return families.size();<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    }<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span><a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>    @Override<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>    public Optional&lt;String&gt; getRegionServerGroup() {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      Bytes value = values.get(RSGROUP_KEY);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>      if (value != null) {<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>        return Optional.of(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      } else {<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>        return Optional.empty();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    }<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  }<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span><a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>  /**<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>   * This method is mostly intended for internal use. However, it it also relied on by hbase-shell<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>   * for backwards compatibility.<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>   */<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>  private static Optional&lt;CoprocessorDescriptor&gt; toCoprocessorDescriptor(String spec) {<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>    Matcher matcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(spec);<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>    if (matcher.matches()) {<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      // jar file path can be empty if the cp class can be loaded<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      // from class loader.<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      String path = matcher.group(1).trim().isEmpty() ?<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        null : matcher.group(1).trim();<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>      String className = matcher.group(2).trim();<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>      if (className.isEmpty()) {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        return Optional.empty();<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>      }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      String priorityStr = matcher.group(3).trim();<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>      int priority = priorityStr.isEmpty() ?<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        Coprocessor.PRIORITY_USER : Integer.parseInt(priorityStr);<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>      String cfgSpec = null;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>      try {<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>        cfgSpec = matcher.group(4);<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>      } catch (IndexOutOfBoundsException ex) {<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>        // ignore<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      }<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>      Map&lt;String, String&gt; ourConf = new TreeMap&lt;&gt;();<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>      if (cfgSpec != null &amp;&amp; !cfgSpec.trim().equals("|")) {<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>        cfgSpec = cfgSpec.substring(cfgSpec.indexOf('|') + 1);<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>        Matcher m = CP_HTD_ATTR_VALUE_PARAM_PATTERN.matcher(cfgSpec);<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>        while (m.find()) {<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          ourConf.put(m.group(1), m.group(2));<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>        }<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>      }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>      return Optional.of(CoprocessorDescriptorBuilder.newBuilder(className)<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        .setJarPath(path)<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        .setPriority(priority)<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        .setProperties(ourConf)<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>        .build());<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>    }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>    return Optional.empty();<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>  }<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>}<a name="line.1645"></a>
+<span class="sourceLineNo">254</span>      case MEMSTORE_FLUSHSIZE:<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        return PrettyPrinter.Unit.BYTE;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      default:<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        return PrettyPrinter.Unit.NONE;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
+<span class="sourceLineNo">260</span><a name="line.260"></a>
+<span class="sourceLineNo">261</span>  /**<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   *             any more.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @InterfaceAudience.Private<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @Deprecated<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  public final static String NAMESPACE_FAMILY_INFO = "info";<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   *             any more.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  @InterfaceAudience.Private<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  @Deprecated<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  public final static byte[] NAMESPACE_FAMILY_INFO_BYTES = Bytes.toBytes(NAMESPACE_FAMILY_INFO);<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   *             any more.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   */<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  @InterfaceAudience.Private<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  @Deprecated<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public final static byte[] NAMESPACE_COL_DESC_BYTES = Bytes.toBytes("d");<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  /**<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * &lt;pre&gt;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Pattern that matches a coprocessor specification. Form is:<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * {@code &lt;coprocessor jar file location&gt; '|' &lt;class name&gt; ['|' &lt;priority&gt; ['|' &lt;arguments&gt;]]}<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * where arguments are {@code &lt;KEY&gt; '=' &lt;VALUE&gt; [,...]}<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * For example: {@code hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2}<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * &lt;/pre&gt;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  private static final Pattern CP_HTD_ATTR_VALUE_PATTERN =<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    Pattern.compile("(^[^\\|]*)\\|([^\\|]+)\\|[\\s]*([\\d]*)[\\s]*(\\|.*)?$");<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN = "[^=,]+";<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN = "[^,]+";<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  private static final Pattern CP_HTD_ATTR_VALUE_PARAM_PATTERN = Pattern.compile(<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    "(" + CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN + ")=(" +<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN + "),?");<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  private static final Pattern CP_HTD_ATTR_KEY_PATTERN =<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Pattern.compile("^coprocessor\\$([0-9]+)$", Pattern.CASE_INSENSITIVE);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Table descriptor for namespace table<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @deprecated since 3.0.0 and will be removed in 4.0.0. We have folded the data in namespace<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   *   table into meta table, so do not use it any more.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21154"&gt;HBASE-21154&lt;/a&gt;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  @Deprecated<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public static final TableDescriptor NAMESPACE_TABLEDESC =<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TableDescriptorBuilder.newBuilder(TableName.NAMESPACE_TABLE_NAME)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(NAMESPACE_FAMILY_INFO_BYTES)<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        // Ten is arbitrary number. Keep versions to help debugging.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        .setMaxVersions(10).setInMemory(true).setBlocksize(8 * 1024)<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        .setScope(HConstants.REPLICATION_SCOPE_LOCAL).build())<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      .build();<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private final ModifyableTableDescriptor desc;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  /**<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @param desc The table descriptor to serialize<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public static byte[] toByteArray(TableDescriptor desc) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    if (desc instanceof ModifyableTableDescriptor) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      return ((ModifyableTableDescriptor) desc).toByteArray();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    return new ModifyableTableDescriptor(desc).toByteArray();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  /**<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * The input should be created by {@link #toByteArray}.<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * @param pbBytes A pb serialized TableDescriptor instance with pb magic prefix<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * @throws org.apache.hadoop.hbase.exceptions.DeserializationException<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static TableDescriptor parseFrom(byte[] pbBytes) throws DeserializationException {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    return ModifyableTableDescriptor.parseFrom(pbBytes);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public static TableDescriptorBuilder newBuilder(final TableName name) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    return new TableDescriptorBuilder(name);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  public static TableDescriptor copy(TableDescriptor desc) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return new ModifyableTableDescriptor(desc);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public static TableDescriptor copy(TableName name, TableDescriptor desc) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    return new ModifyableTableDescriptor(name, desc);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * Copy all values, families, and name from the input.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param desc The desciptor to copy<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @return A clone of input<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static TableDescriptorBuilder newBuilder(final TableDescriptor desc) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    return new TableDescriptorBuilder(desc);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  private TableDescriptorBuilder(final TableName name) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    this.desc = new ModifyableTableDescriptor(name);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private TableDescriptorBuilder(final TableDescriptor desc) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    this.desc = new ModifyableTableDescriptor(desc);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public TableDescriptorBuilder setCoprocessor(String className) throws IOException {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    return setCoprocessor(CoprocessorDescriptorBuilder.of(className));<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>  public TableDescriptorBuilder setCoprocessor(CoprocessorDescriptor cpDesc) throws IOException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    desc.setCoprocessor(Objects.requireNonNull(cpDesc));<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return this;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public TableDescriptorBuilder setCoprocessors(Collection&lt;CoprocessorDescriptor&gt; cpDescs)<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    throws IOException {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    for (CoprocessorDescriptor cpDesc : cpDescs) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      desc.setCoprocessor(cpDesc);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return this;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  public boolean hasCoprocessor(String classNameToMatch) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return desc.hasCoprocessor(classNameToMatch);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  public TableDescriptorBuilder setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    desc.setColumnFamily(Objects.requireNonNull(family));<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    return this;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  public TableDescriptorBuilder setColumnFamilies(<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    final Collection&lt;ColumnFamilyDescriptor&gt; families) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    families.forEach(desc::setColumnFamily);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    return this;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public TableDescriptorBuilder modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    desc.modifyColumnFamily(Objects.requireNonNull(family));<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    return this;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public TableDescriptorBuilder removeValue(final String key) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    desc.removeValue(key);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    return this;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>  public TableDescriptorBuilder removeValue(Bytes key) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    desc.removeValue(key);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    return this;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>  public TableDescriptorBuilder removeValue(byte[] key) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    desc.removeValue(key);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    return this;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  public TableDescriptorBuilder removeValue(BiPredicate&lt;Bytes, Bytes&gt; predicate) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    List&lt;Bytes&gt; toRemove =<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      desc.getValues().entrySet().stream().filter(e -&gt; predicate.test(e.getKey(), e.getValue()))<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        .map(Map.Entry::getKey).collect(Collectors.toList());<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    for (Bytes key : toRemove) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      removeValue(key);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    return this;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>  public TableDescriptorBuilder removeColumnFamily(final byte[] name) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    desc.removeColumnFamily(name);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return this;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  public TableDescriptorBuilder removeCoprocessor(String className) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    desc.removeCoprocessor(className);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return this;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public TableDescriptorBuilder setCompactionEnabled(final boolean isEnable) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    desc.setCompactionEnabled(isEnable);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    return this;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public TableDescriptorBuilder setSplitEnabled(final boolean isEnable) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    desc.setSplitEnabled(isEnable);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return this;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  public TableDescriptorBuilder setMergeEnabled(final boolean isEnable) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    desc.setMergeEnabled(isEnable);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    return this;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public TableDescriptorBuilder setDurability(Durability durability) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    desc.setDurability(durability);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    return this;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public TableDescriptorBuilder setFlushPolicyClassName(String clazz) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    desc.setFlushPolicyClassName(clazz);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    return this;<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  public TableDescriptorBuilder setMaxFileSize(long maxFileSize) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    desc.setMaxFileSize(maxFileSize);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    return this;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  }<a name="line.471"></a>
+<span class="sourceLineNo">472</span><a name="line.472"></a>
+<span class="sourceLineNo">473</span>  public TableDescriptorBuilder setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    desc.setMaxFileSize(maxFileSize);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return this;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public TableDescriptorBuilder setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    desc.setMemStoreFlushSize(memstoreFlushSize);<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    return this;<a name="line.480"></a>
+<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  public TableDescriptorBuilder setMemStoreFlushSize(String memStoreFlushSize)<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    throws HBaseException {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    desc.setMemStoreFlushSize(memStoreFlushSize);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    return this;<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  public TableDescriptorBuilder setNormalizerTargetRegionCount(final int regionCount) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    desc.setNormalizerTargetRegionCount(regionCount);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    return this;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>  public TableDescriptorBuilder setNormalizerTargetRegionSize(final long regionSize) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    desc.setNormalizerTargetRegionSize(regionSize);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    return this;<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public TableDescriptorBuilder setNormalizationEnabled(final boolean isEnable) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    desc.setNormalizationEnabled(isEnable);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    return this;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>  public TableDescriptorBuilder setPriority(int priority) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    desc.setPriority(priority);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    return this;<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>  public TableDescriptorBuilder setReadOnly(final boolean readOnly) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    desc.setReadOnly(readOnly);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    return this;<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  }<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>  public TableDescriptorBuilder setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    desc.setRegionMemStoreReplication(memstoreReplication);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    return this;<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public TableDescriptorBuilder setRegionReplication(int regionReplication) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    desc.setRegionReplication(regionReplication);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    return this;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>  public TableDescriptorBuilder setRegionSplitPolicyClassName(String clazz) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    desc.setRegionSplitPolicyClassName(clazz);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    return this;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
+<span class="sourceLineNo">528</span><a name="line.528"></a>
+<span class="sourceLineNo">529</span>  public TableDescriptorBuilder setValue(final String key, final String value) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    desc.setValue(key, value);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    return this;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  public TableDescriptorBuilder setValue(final Bytes key, final Bytes value) {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    desc.setValue(key, value);<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    return this;<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  }<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public TableDescriptorBuilder setValue(final byte[] key, final byte[] value) {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    desc.setValue(key, value);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    return this;<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>  public String getValue(String key) {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    return desc.getValue(key);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * Sets replication scope all &amp; only the columns already in the builder. Columns added later won't<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * be backfilled with replication scope.<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param scope replication scope<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @return a TableDescriptorBuilder<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
+<span class="sourceLineNo">554</span>  public TableDescriptorBuilder setReplicationScope(int scope) {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    Map&lt;byte[], ColumnFamilyDescriptor&gt; newFamilies = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    newFamilies.putAll(desc.families);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    newFamilies<a name="line.557"></a>
+<span class="sourceLineNo">558</span>        .forEach((cf, cfDesc) -&gt; {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>          desc.removeColumnFamily(cf);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>          desc.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(cfDesc).setScope(scope)<a name="line.560"></a>
+<span class="sourceLineNo">561</span>              .build());<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        });<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    return this;<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
+<span class="sourceLineNo">565</span><a name="line.565"></a>
+<span class="sourceLineNo">566</span>  public TableDescriptorBuilder setRegionServerGroup(String group) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    desc.setValue(RSGROUP_KEY, group);<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return this;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  public TableDescriptor build() {<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    return new ModifyableTableDescriptor(desc);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>  }<a name="line.573"></a>
+<span class="sourceLineNo">574</span><a name="line.574"></a>
+<span class="sourceLineNo">575</span>  private static final class ModifyableTableDescriptor<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    implements TableDescriptor, Comparable&lt;ModifyableTableDescriptor&gt; {<a name="line.576"></a>
+<span class="sourceLineNo">577</span><a name="line.577"></a>
+<span class="sourceLineNo">578</span>    private final TableName name;<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>    /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>     * A map which holds the metadata information of the table. This metadata<a name="line.581"></a>
+<span class="sourceLineNo">582</span>     * includes values like IS_META, SPLIT_POLICY, MAX_FILE_SIZE,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>     * READONLY, MEMSTORE_FLUSHSIZE etc...<a name="line.583"></a>
+<span class="sourceLineNo">584</span>     */<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    private final Map&lt;Bytes, Bytes&gt; values = new HashMap&lt;&gt;();<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>    /**<a name="line.587"></a>
+<span class="sourceLineNo">588</span>     * Maps column family name to the respective FamilyDescriptors<a name="line.588"></a>
+<span class="sourceLineNo">589</span>     */<a name="line.589"></a>
+<span class="sourceLineNo">590</span>    private final Map&lt;byte[], ColumnFamilyDescriptor&gt; families<a name="line.590"></a>
+<span class="sourceLineNo">591</span>            = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.591"></a>
+<span class="sourceLineNo">592</span><a name="line.592"></a>
+<span class="sourceLineNo">593</span>    /**<a name="line.593"></a>
+<span class="sourceLineNo">594</span>     * Construct a table descriptor specifying a TableName object<a name="line.594"></a>
+<span class="sourceLineNo">595</span>     *<a name="line.595"></a>
+<span class="sourceLineNo">596</span>     * @param name Table name.<a name="line.596"></a>
+<span class="sourceLineNo">597</span>     */<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    private ModifyableTableDescriptor(final TableName name) {<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      this(name, Collections.emptyList(), Collections.emptyMap());<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    }<a name="line.600"></a>
+<span class="sourceLineNo">601</span><a name="line.601"></a>
+<span class="sourceLineNo">602</span>    private ModifyableTableDescriptor(final TableDescriptor desc) {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>      this(desc.getTableName(), Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>    /**<a name="line.606"></a>
+<span class="sourceLineNo">607</span>     * Construct a table descriptor by cloning the descriptor passed as a<a name="line.607"></a>
+<span class="sourceLineNo">608</span>     * parameter.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>     * &lt;p&gt;<a name="line.609"></a>
+<span class="sourceLineNo">610</span>     * Makes a deep copy of the supplied descriptor.<a name="line.610"></a>
+<span class="sourceLineNo">611</span>     * @param name The new name<a name="line.611"></a>
+<span class="sourceLineNo">612</span>     * @param desc The descriptor.<a name="line.612"></a>
+<span class="sourceLineNo">613</span>     */<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    private ModifyableTableDescriptor(final TableName name, final TableDescriptor desc) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      this(name, Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    }<a name="line.616"></a>
+<span class="sourceLineNo">617</span><a name="line.617"></a>
+<span class="sourceLineNo">618</span>    private ModifyableTableDescriptor(final TableName name, final Collection&lt;ColumnFamilyDescriptor&gt; families,<a name="line.618"></a>
+<span class="sourceLineNo">619</span>            Map&lt;Bytes, Bytes&gt; values) {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      this.name = name;<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      families.forEach(c -&gt; this.families.put(c.getName(), ColumnFamilyDescriptorBuilder.copy(c)));<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      this.values.putAll(values);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      this.values.put(IS_META_KEY,<a name="line.623"></a>
+<span class="sourceLineNo">624</span>        new Bytes(Bytes.toBytes(Boolean.toString(name.equals(TableName.META_TABLE_NAME)))));<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    }<a name="line.625"></a>
+<span class="sourceLineNo">626</span><a name="line.626"></a>
+<span class="sourceLineNo">627</span>    /**<a name="line.627"></a>
+<span class="sourceLineNo">628</span>     * Checks if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.628"></a>
+<span class="sourceLineNo">629</span>     *<a name="line.629"></a>
+<span class="sourceLineNo">630</span>     * @return true if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region<a name="line.630"></a>
+<span class="sourceLineNo">631</span>     */<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    @Override<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    public boolean isMetaRegion() {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      return getOrDefault(IS_META_KEY, Boolean::valueOf, false);<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    }<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>    /**<a name="line.637"></a>
+<span class="sourceLineNo">638</span>     * Checks if the table is a &lt;code&gt;hbase:meta&lt;/code&gt; table<a name="line.638"></a>
+<span class="sourceLineNo">639</span>     *<a name="line.639"></a>
+<span class="sourceLineNo">640</span>     * @return true if table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.640"></a>
+<span class="sourceLineNo">641</span>     */<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    @Override<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    public boolean isMetaTable() {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      return isMetaRegion();<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    }<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>    @Override<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    public Bytes getValue(Bytes key) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      Bytes rval = values.get(key);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      return rval == null ? null : new Bytes(rval.copyBytes());<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span><a name="line.652"></a>
+<span class="sourceLineNo">653</span>    @Override<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    public String getValue(String key) {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      Bytes rval = values.get(new Bytes(Bytes.toBytes(key)));<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      return rval == null ? null : Bytes.toString(rval.get(), rval.getOffset(), rval.getLength());<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    }<a name="line.657"></a>
+<span class="sourceLineNo">658</span><a name="line.658"></a>
+<span class="sourceLineNo">659</span>    @Override<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    public byte[] getValue(byte[] key) {<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      Bytes value = values.get(new Bytes(key));<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      return value == null ? null : value.copyBytes();<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    }<a name="line.663"></a>
+<span class="sourceLineNo">664</span><a name="line.664"></a>
+<span class="sourceLineNo">665</span>    private &lt;T&gt; T getOrDefault(Bytes key, Function&lt;String, T&gt; function, T defaultValue) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      Bytes value = values.get(key);<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      if (value == null) {<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        return defaultValue;<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      } else {<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return function.apply(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    }<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    /**<a name="line.674"></a>
+<span class="sourceLineNo">675</span>     * Getter for fetching an unmodifiable {@link #values} map.<a name="line.675"></a>
+<span class="sourceLineNo">676</span>     *<a name="line.676"></a>
+<span class="sourceLineNo">677</span>     * @return unmodifiable map {@link #values}.<a name="line.677"></a>
+<span class="sourceLineNo">678</span>     * @see #values<a name="line.678"></a>
+<span class="sourceLineNo">679</span>     */<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    @Override<a name="line.680"></a>
+<span class="sourceLineNo">681</span>    public Map&lt;Bytes, Bytes&gt; getValues() {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      // shallow pointer copy<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      return Collections.unmodifiableMap(values);<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    }<a name="line.684"></a>
+<span class="sourceLineNo">685</span><a name="line.685"></a>
+<span class="sourceLineNo">686</span>    /**<a name="line.686"></a>
+<span class="sourceLineNo">687</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.687"></a>
+<span class="sourceLineNo">688</span>     *<a name="line.688"></a>
+<span class="sourceLineNo">689</span>     * @param key The key.<a name="line.689"></a>
+<span class="sourceLineNo">690</span>     * @param value The value. If null, removes the setting.<a name="line.690"></a>
+<span class="sourceLineNo">691</span>     * @return the modifyable TD<a name="line.691"></a>
+<span class="sourceLineNo">692</span>     * @see #values<a name="line.692"></a>
+<span class="sourceLineNo">693</span>     */<a name="line.693"></a>
+<span class="sourceLineNo">694</span>    public ModifyableTableDescriptor setValue(byte[] key, byte[] value) {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>      return setValue(toBytesOrNull(key, v -&gt; v),<a name="line.695"></a>
+<span class="sourceLineNo">696</span>              toBytesOrNull(value, v -&gt; v));<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    }<a name="line.697"></a>
+<span class="sourceLineNo">698</span><a name="line.698"></a>
+<span class="sourceLineNo">699</span>    public ModifyableTableDescriptor setValue(String key, String value) {<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      return setValue(toBytesOrNull(key, Bytes::toBytes),<a name="line.700"></a>
+<span class="sourceLineNo">701</span>              toBytesOrNull(value, Bytes::toBytes));<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    }<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>    /*<a name="line.704"></a>
+<span class="sourceLineNo">705</span>     * @param key The key.<a name="line.705"></a>
+<span class="sourceLineNo">706</span>     * @param value The value. If null, removes the setting.<a name="line.706"></a>
+<span class="sourceLineNo">707</span>     */<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    private ModifyableTableDescriptor setValue(final Bytes key,<a name="line.708"></a>
+<span class="sourceLineNo">709</span>            final String value) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      return setValue(key, toBytesOrNull(value, Bytes::toBytes));<a name="line.710"></a>
+<span class="sourceLineNo">711</span>    }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>    /*<a name="line.713"></a>
+<span class="sourceLineNo">714</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.714"></a>
+<span class="sourceLineNo">715</span>     *<a name="line.715"></a>
+<span class="sourceLineNo">716</span>     * @param key The key.<a name="line.716"></a>
+<span class="sourceLineNo">717</span>     * @param value The value. If null, removes the setting.<a name="line.717"></a>
+<span class="sourceLineNo">718</span>     */<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    public ModifyableTableDescriptor setValue(final Bytes key, final Bytes value) {<a name="line.719"></a>
+<span class="sourceLineNo">720</span>      if (value == null) {<a name="line.720"></a>
+<span class="sourceLineNo">721</span>        values.remove(key);<a name="line.721"></a>
+<span class="sourceLineNo">722</span>      } else {<a name="line.722"></a>
+<span class="sourceLineNo">723</span>        values.put(key, value);<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      }<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      return this;<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    }<a name="line.726"></a>
+<span class="sourceLineNo">727</span><a name="line.727"></a>
+<span class="sourceLineNo">728</span>    private static &lt;T&gt; Bytes toBytesOrNull(T t, Function&lt;T, byte[]&gt; f) {<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      if (t == null) {<a name="line.729"></a>
+<span class="sourceLineNo">730</span>        return null;<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      } else {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>        return new Bytes(f.apply(t));<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      }<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    }<a name="line.734"></a>
+<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">736</span>    /**<a name="line.736"></a>
+<span class="sourceLineNo">737</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.737"></a>
+<span class="sourceLineNo">738</span>     *<a name="line.738"></a>
+<span class="sourceLineNo">739</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.739"></a>
+<span class="sourceLineNo">740</span>     * parameters.<a name="line.740"></a>
+<span class="sourceLineNo">741</span>     * @return the modifyable TD<a name="line.741"></a>
+<span class="sourceLineNo">742</span>     */<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    public ModifyableTableDescriptor removeValue(final String key) {<a name="line.743"></a>
+<span class="sourceLineNo">744</span>      return setValue(key, (String) null);<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    }<a name="line.745"></a>
+<span class="sourceLineNo">746</span><a name="line.746"></a>
+<span class="sourceLineNo">747</span>    /**<a name="line.747"></a>
+<span class="sourceLineNo">748</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.748"></a>
+<span class="sourceLineNo">749</span>     *<a name="line.749"></a>
+<span class="sourceLineNo">750</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.750"></a>
+<span class="sourceLineNo">751</span>     * parameters.<a name="line.751"></a>
+<span class="sourceLineNo">752</span>     * @return the modifyable TD<a name="line.752"></a>
+<span class="sourceLineNo">753</span>     */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    public ModifyableTableDescriptor removeValue(Bytes key) {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      return setValue(key, (Bytes) null);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    }<a name="line.756"></a>
+<span class="sourceLineNo">757</span><a name="line.757"></a>
+<span class="sourceLineNo">758</span>    /**<a name="line.758"></a>
+<span class="sourceLineNo">759</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.759"></a>
+<span class="sourceLineNo">760</span>     *<a name="line.760"></a>
+<span class="sourceLineNo">761</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.761"></a>
+<span class="sourceLineNo">762</span>     * parameters.<a name="line.762"></a>
+<span class="sourceLineNo">763</span>     * @return the modifyable TD<a name="line.763"></a>
+<span class="sourceLineNo">764</span>     */<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    public ModifyableTableDescriptor removeValue(final byte[] key) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span>      return removeValue(new Bytes(key));<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    }<a name="line.767"></a>
+<span class="sourceLineNo">768</span><a name="line.768"></a>
+<span class="sourceLineNo">769</span>    /**<a name="line.769"></a>
+<span class="sourceLineNo">770</span>     * Check if the readOnly flag of the table is set. If the readOnly flag is<a name="line.770"></a>
+<span class="sourceLineNo">771</span>     * set then the contents of the table can only be read from but not<a name="line.771"></a>
+<span class="sourceLineNo">772</span>     * modified.<a name="line.772"></a>
+<span class="sourceLineNo">773</span>     *<a name="line.773"></a>
+<span class="sourceLineNo">774</span>     * @return true if all columns in the table should be read only<a name="line.774"></a>
+<span class="sourceLineNo">775</span>     */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    @Override<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    public boolean isReadOnly() {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      return getOrDefault(READONLY_KEY, Boolean::valueOf, DEFAULT_READONLY);<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    }<a name="line.779"></a>
+<span class="sourceLineNo">780</span><a name="line.780"></a>
+<span class="sourceLineNo">781</span>    /**<a name="line.781"></a>
+<span class="sourceLineNo">782</span>     * Setting the table as read only sets all the columns in the table as read<a name="line.782"></a>
+<span class="sourceLineNo">783</span>     * only. By default all tables are modifiable, but if the readOnly flag is<a name="line.783"></a>
+<span class="sourceLineNo">784</span>     * set to true then the contents of the table can only be read but not<a name="line.784"></a>
+<span class="sourceLineNo">785</span>     * modified.<a name="line.785"></a>
+<span class="sourceLineNo">786</span>     *<a name="line.786"></a>
+<span class="sourceLineNo">787</span>     * @param readOnly True if all of the columns in the table should be read<a name="line.787"></a>
+<span class="sourceLineNo">788</span>     * only.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>     * @return the modifyable TD<a name="line.789"></a>
+<span class="sourceLineNo">790</span>     */<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    public ModifyableTableDescriptor setReadOnly(final boolean readOnly) {<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      return setValue(READONLY_KEY, Boolean.toString(readOnly));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>    /**<a name="line.795"></a>
+<span class="sourceLineNo">796</span>     * Check if the compaction enable flag of the table is true. If flag is<a name="line.796"></a>
+<span class="sourceLineNo">797</span>     * false then no minor/major compactions will be done in real.<a name="line.797"></a>
+<span class="sourceLineNo">798</span>     *<a name="line.798"></a>
+<span class="sourceLineNo">799</span>     * @return true if table compaction enabled<a name="line.799"></a>
+<span class="sourceLineNo">800</span>     */<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    @Override<a name="line.801"></a>
+<span class="sourceLineNo">802</span>    public boolean isCompactionEnabled() {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>      return getOrDefault(COMPACTION_ENABLED_KEY, Boolean::valueOf, DEFAULT_COMPACTION_ENABLED);<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    }<a name="line.804"></a>
+<span class="sourceLineNo">805</span><a name="line.805"></a>
+<span class="sourceLineNo">806</span>    /**<a name="line.806"></a>
+<span class="sourceLineNo">807</span>     * Setting the table compaction enable flag.<a name="line.807"></a>
+<span class="sourceLineNo">808</span>     *<a name="line.808"></a>
+<span class="sourceLineNo">809</span>     * @param isEnable True if enable compaction.<a name="line.809"></a>
+<span class="sourceLineNo">810</span>     * @return the modifyable TD<a name="line.810"></a>
+<span class="sourceLineNo">811</span>     */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    public ModifyableTableDescriptor setCompactionEnabled(final boolean isEnable) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      return setValue(COMPACTION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    }<a name="line.814"></a>
+<span class="sourceLineNo">815</span><a name="line.815"></a>
+<span class="sourceLineNo">816</span>    /**<a name="line.816"></a>
+<span class="sourceLineNo">817</span>     * Check if the split enable flag of the table is true. If flag is false then no split will be<a name="line.817"></a>
+<span class="sourceLineNo">818</span>     * done.<a name="line.818"></a>
+<span class="sourceLineNo">819</span>     *<a name="line.819"></a>
+<span class="sourceLineNo">820</span>     * @return true if table region split enabled<a name="line.820"></a>
+<span class="sourceLineNo">821</span>     */<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    @Override<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    public boolean isSplitEnabled() {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>      return getOrDefault(SPLIT_ENABLED_KEY, Boolean::valueOf, DEFAULT_SPLIT_ENABLED);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    }<a name="line.825"></a>
+<span class="sourceLineNo">826</span><a name="line.826"></a>
+<span class="sourceLineNo">827</span>    /**<a name="line.827"></a>
+<span class="sourceLineNo">828</span>     * Setting the table region split enable flag.<a name="line.828"></a>
+<span class="sourceLineNo">829</span>     * @param isEnable True if enable region split.<a name="line.829"></a>
+<span class="sourceLineNo">830</span>     *<a name="line.830"></a>
+<span class="sourceLineNo">831</span>     * @return the modifyable TD<a name="line.831"></a>
+<span class="sourceLineNo">832</span>     */<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    public ModifyableTableDescriptor setSplitEnabled(final boolean isEnable) {<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      return setValue(SPLIT_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span>    /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span>     * Check if the region merge enable flag of the table is true. If flag is false then no merge<a name="line.838"></a>
+<span class="sourceLineNo">839</span>     * will be done.<a name="line.839"></a>
+<span class="sourceLineNo">840</span>     *<a name="line.840"></a>
+<span class="sourceLineNo">841</span>     * @return true if table region merge enabled<a name="line.841"></a>
+<span class="sourceLineNo">842</span>     */<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    @Override<a name="line.843"></a>
+<span class="sourceLineNo">844</span>    public boolean isMergeEnabled() {<a name="line.844"></a>
+<span class="sourceLineNo">845</span>      return getOrDefault(MERGE_ENABLED_KEY, Boolean::valueOf, DEFAULT_MERGE_ENABLED);<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>    /**<a name="line.848"></a>
+<span class="sourceLineNo">849</span>     * Setting the table region merge enable flag.<a name="line.849"></a>
+<span class="sourceLineNo">850</span>     * @param isEnable True if enable region merge.<a name="line.850"></a>
+<span class="sourceLineNo">851</span>     *<a name="line.851"></a>
+<span class="sourceLineNo">852</span>     * @return the modifyable TD<a name="line.852"></a>
+<span class="sourceLineNo">853</span>     */<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    public ModifyableTableDescriptor setMergeEnabled(final boolean isEnable) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      return setValue(MERGE_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>    /**<a name="line.858"></a>
+<span class="sourceLineNo">859</span>     * Check if normalization enable flag of the table is true. If flag is false<a name="line.859"></a>
+<span class="sourceLineNo">860</span>     * then no region normalizer won't attempt to normalize this table.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>     *<a name="line.861"></a>
+<span class="sourceLineNo">862</span>     * @return true if region normalization is enabled for this table<a name="line.862"></a>
+<span class="sourceLineNo">863</span>     */<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    @Override<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    public boolean isNormalizationEnabled() {<a name="line.865"></a>
+<span class="sourceLineNo">866</span>      return getOrDefault(NORMALIZATION_ENABLED_KEY, Boolean::valueOf, DEFAULT_NORMALIZATION_ENABLED);<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    }<a name="line.867"></a>
+<span class="sourceLineNo">868</span><a name="line.868"></a>
+<span class="sourceLineNo">869</span>    /**<a name="line.869"></a>
+<span class="sourceLineNo">870</span>     * Check if there is the target region count. If so, the normalize plan will be calculated based<a name="line.870"></a>
+<span class="sourceLineNo">871</span>     * on the target region count.<a name="line.871"></a>
+<span class="sourceLineNo">872</span>     * @return target region count after normalize done<a name="line.872"></a>
+<span class="sourceLineNo">873</span>     */<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    @Override<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    public int getNormalizerTargetRegionCount() {<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      return getOrDefault(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer::valueOf,<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        Integer.valueOf(-1));<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    }<a name="line.878"></a>
+<span class="sourceLineNo">879</span><a name="line.879"></a>
+<span class="sourceLineNo">880</span>    /**<a name="line.880"></a>
+<span class="sourceLineNo">881</span>     * Check if there is the target region size. If so, the normalize plan will be calculated based<a name="line.881"></a>
+<span class="sourceLineNo">882</span>     * on the target region size.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>     * @return target region size after normalize done<a name="line.883"></a>
+<span class="sourceLineNo">884</span>     */<a name="line.884"></a>
+<span class="sourceLineNo">885</span>    @Override<a name="line.885"></a>
+<span class="sourceLineNo">886</span>    public long getNormalizerTargetRegionSize() {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      return getOrDefault(NORMALIZER_TARGET_REGION_SIZE_KEY, Long::valueOf, Long.valueOf(-1));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>    }<a name="line.888"></a>
+<span class="sourceLineNo">889</span><a name="line.889"></a>
+<span class="sourceLineNo">890</span>    /**<a name="line.890"></a>
+<span class="sourceLineNo">891</span>     * Setting the table normalization enable flag.<a name="line.891"></a>
+<span class="sourceLineNo">892</span>     *<a name="line.892"></a>
+<span class="sourceLineNo">893</span>     * @param isEnable True if enable normalization.<a name="line.893"></a>
+<span class="sourceLineNo">894</span>     * @return the modifyable TD<a name="line.894"></a>
+<span class="sourceLineNo">895</span>     */<a name="line.895"></a>
+<span class="sourceLineNo">896</span>    public ModifyableTableDescriptor setNormalizationEnabled(final boolean isEnable) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      return setValue(NORMALIZATION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.897"></a>
+<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>    /**<a name="line.900"></a>
+<span class="sourceLineNo">901</span>     * Setting the target region count of table normalization .<a name="line.901"></a>
+<span class="sourceLineNo">902</span>     * @param regionCount the target region count.<a name="line.902"></a>
+<span class="sourceLineNo">903</span>     * @return the modifyable TD<a name="line.903"></a>
+<span class="sourceLineNo">904</span>     */<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    public ModifyableTableDescriptor setNormalizerTargetRegionCount(final int regionCount) {<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      return setValue(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer.toString(regionCount));<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    }<a name="line.907"></a>
+<span class="sourceLineNo">908</span><a name="line.908"></a>
+<span class="sourceLineNo">909</span>    /**<a name="line.909"></a>
+<span class="sourceLineNo">910</span>     * Setting the target region size of table normalization.<a name="line.910"></a>
+<span class="sourceLineNo">911</span>     * @param regionSize the target region size.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>     * @return the modifyable TD<a name="line.912"></a>
+<span class="sourceLineNo">913</span>     */<a name="line.913"></a>
+<span class="sourceLineNo">914</span>    public ModifyableTableDescriptor setNormalizerTargetRegionSize(final long regionSize) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      return setValue(NORMALIZER_TARGET_REGION_SIZE_KEY, Long.toString(regionSize));<a name="line.915"></a>
+<span class="sourceLineNo">916</span>    }<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>    /**<a name="line.918"></a>
+<span class="sourceLineNo">919</span>     * Sets the {@link Durability} setting for the table. This defaults to<a name="line.919"></a>
+<span class="sourceLineNo">920</span>     * Durability.USE_DEFAULT.<a name="line.920"></a>
+<span class="sourceLineNo">921</span>     *<a name="line.921"></a>
+<span class="sourceLineNo">922</span>     * @param durability enum value<a name="line.922"></a>
+<span class="sourceLineNo">923</span>     * @return the modifyable TD<a name="line.923"></a>
+<span class="sourceLineNo">924</span>     */<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    public ModifyableTableDescriptor setDurability(Durability durability) {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>      return setValue(DURABILITY_KEY, durability.name());<a name="line.926"></a>
+<span class="sourceLineNo">927</span>    }<a name="line.927"></a>
+<span class="sourceLineNo">928</span><a name="line.928"></a>
+<span class="sourceLineNo">929</span>    /**<a name="line.929"></a>
+<span class="sourceLineNo">930</span>     * Returns the durability setting for the table.<a name="line.930"></a>
+<span class="sourceLineNo">931</span>     *<a name="line.931"></a>
+<span class="sourceLineNo">932</span>     * @return durability setting for the table.<a name="line.932"></a>
+<span class="sourceLineNo">933</span>     */<a name="line.933"></a>
+<span class="sourceLineNo">934</span>    @Override<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    public Durability getDurability() {<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      return getOrDefault(DURABILITY_KEY, Durability::valueOf, DEFAULT_DURABLITY);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    }<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>    /**<a name="line.939"></a>
+<span class="sourceLineNo">940</span>     * Get the name of the table<a name="line.940"></a>
+<span class="sourceLineNo">941</span>     *<a name="line.941"></a>
+<span class="sourceLineNo">942</span>     * @return TableName<a name="line.942"></a>
+<span class="sourceLineNo">943</span>     */<a name="line.943"></a>
+<span class="sourceLineNo">944</span>    @Override<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    public TableName getTableName() {<a name="line.945"></a>
+<span class="sourceLineNo">946</span>      return name;<a name="line.946"></a>
+<span class="sourceLineNo">947</span>    }<a name="line.947"></a>
+<span class="sourceLineNo">948</span><a name="line.948"></a>
+<span class="sourceLineNo">949</span>    /**<a name="line.949"></a>
+<span class="sourceLineNo">950</span>     * This sets the class associated with the region split policy which<a name="line.950"></a>
+<span class="sourceLineNo">951</span>     * determines when a region split should occur. The class used by default is<a name="line.951"></a>
+<span class="sourceLineNo">952</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.952"></a>
+<span class="sourceLineNo">953</span>     *<a name="line.953"></a>
+<span class="sourceLineNo">954</span>     * @param clazz the class name<a name="line.954"></a>
+<span class="sourceLineNo">955</span>     * @return the modifyable TD<a name="line.955"></a>
+<span class="sourceLineNo">956</span>     */<a name="line.956"></a>
+<span class="sourceLineNo">957</span>    public ModifyableTableDescriptor setRegionSplitPolicyClassName(String clazz) {<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      return setValue(SPLIT_POLICY_KEY, clazz);<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">960</span><a name="line.960"></a>
+<span class="sourceLineNo">961</span>    /**<a name="line.961"></a>
+<span class="sourceLineNo">962</span>     * This gets the class associated with the region split policy which<a name="line.962"></a>
+<span class="sourceLineNo">963</span>     * determines when a region split should occur. The class used by default is<a name="line.963"></a>
+<span class="sourceLineNo">964</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.964"></a>
+<span class="sourceLineNo">965</span>     *<a name="line.965"></a>
+<span class="sourceLineNo">966</span>     * @return the class name of the region split policy for this table. If this<a name="line.966"></a>
+<span class="sourceLineNo">967</span>     * returns null, the default split policy is used.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>     */<a name="line.968"></a>
+<span class="sourceLineNo">969</span>    @Override<a name="line.969"></a>
+<span class="sourceLineNo">970</span>    public String getRegionSplitPolicyClassName() {<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      return getOrDefault(SPLIT_POLICY_KEY, Function.identity(), null);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>    }<a name="line.972"></a>
+<span class="sourceLineNo">973</span><a name="line.973"></a>
+<span class="sourceLineNo">974</span>    /**<a name="line.974"></a>
+<span class="sourceLineNo">975</span>     * Returns the maximum size upto which a region can grow to after which a<a name="line.975"></a>
+<span class="sourceLineNo">976</span>     * region split is triggered. The region size is represented by the size of<a name="line.976"></a>
+<span class="sourceLineNo">977</span>     * the biggest store file in that region.<a name="line.977"></a>
+<span class="sourceLineNo">978</span>     *<a name="line.978"></a>
+<span class="sourceLineNo">979</span>     * @return max hregion size for table, -1 if not set.<a name="line.979"></a>
+<span class="sourceLineNo">980</span>     *<a name="line.980"></a>
+<span class="sourceLineNo">981</span>     * @see #setMaxFileSize(long)<a name="line.981"></a>
+<span class="sourceLineNo">982</span>     */<a name="line.982"></a>
+<span class="sourceLineNo">983</span>    @Override<a name="line.983"></a>
+<span class="sourceLineNo">984</span>    public long getMaxFileSize() {<a name="line.984"></a>
+<span class="sourceLineNo">985</span>      return getOrDefault(MAX_FILESIZE_KEY, Long::valueOf, (long) -1);<a name="line.985"></a>
+<span class="sourceLineNo">986</span>    }<a name="line.986"></a>
+<span class="sourceLineNo">987</span><a name="line.987"></a>
+<span class="sourceLineNo">988</span>    /**<a name="line.988"></a>
+<span class="sourceLineNo">989</span>     * Sets the maximum size upto which a region can grow to after which a<a name="line.989"></a>
+<span class="sourceLineNo">990</span>     * region split is triggered. The region size is represented by the size of<a name="line.990"></a>
+<span class="sourceLineNo">991</span>     * the biggest store file in that region, i.e. If the biggest store file<a name="line.991"></a>
+<span class="sourceLineNo">992</span>     * grows beyond the maxFileSize, then the region split is triggered. This<a name="line.992"></a>
+<span class="sourceLineNo">993</span>     * defaults to a value of 256 MB.<a name="line.993"></a>
+<span class="sourceLineNo">994</span>     * &lt;p&gt;<a name="line.994"></a>
+<span class="sourceLineNo">995</span>     * This is not an absolute value and might vary. Assume that a single row<a name="line.995"></a>
+<span class="sourceLineNo">996</span>     * exceeds the maxFileSize then the storeFileSize will be greater than<a name="line.996"></a>
+<span class="sourceLineNo">997</span>     * maxFileSize since a single row cannot be split across multiple regions<a name="line.997"></a>
+<span class="sourceLineNo">998</span>     * &lt;/p&gt;<a name="line.998"></a>
+<span class="sourceLineNo">999</span>     *<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>     * @param maxFileSize The maximum file size that a store file can grow to<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>     * before a split is triggered.<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>     * @return the modifyable TD<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>     */<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    public ModifyableTableDescriptor setMaxFileSize(long maxFileSize) {<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      return setValue(MAX_FILESIZE_KEY, Long.toString(maxFileSize));<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    }<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    public ModifyableTableDescriptor setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      return setMaxFileSize(Long.parseLong(PrettyPrinter.<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        valueOf(maxFileSize, PrettyPrinter.Unit.BYTE)));<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>    }<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span><a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>    /**<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>     * Returns the size of the memstore after which a flush to filesystem is<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>     * triggered.<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>     *<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>     * @return memory cache flush size for each hregion, -1 if not set.<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>     *<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>     * @see #setMemStoreFlushSize(long)<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>     */<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    @Override<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    public long getMemStoreFlushSize() {<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>      return getOrDefault(MEMSTORE_FLUSHSIZE_KEY, Long::valueOf, (long) -1);<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    }<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span><a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>    /**<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>     * Represents the maximum size of the memstore after which the contents of<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>     * the memstore are flushed to the filesystem. This defaults to a size of 64<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>     * MB.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>     *<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>     * @param memstoreFlushSize memory cache flush size for each hregion<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>     * @return the modifyable TD<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>     */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    public ModifyableTableDescriptor setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return setValue(MEMSTORE_FLUSHSIZE_KEY, Long.toString(memstoreFlushSize));<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>    public ModifyableTableDescriptor setMemStoreFlushSize(String memStoreFlushSize)<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      throws HBaseException {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>      return setMemStoreFlushSize(Long.parseLong(PrettyPrinter.valueOf(memStoreFlushSize,<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        PrettyPrinter.Unit.BYTE)));<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>    }<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span><a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>    /**<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>     * This sets the class associated with the flush policy which determines<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>     * determines the stores need to be flushed when flushing a region. The<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>     * class used by default is defined in<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>     * org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>     *<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>     * @param clazz the class name<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>     * @return the modifyable TD<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>     */<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>    public ModifyableTableDescriptor setFlushPolicyClassName(String clazz) {<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>      return setValue(FLUSH_POLICY_KEY, clazz);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>    }<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span><a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    /**<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>     * This gets the class associated with the flush policy which determines the<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>     * stores need to be flushed when flushing a region. The class used by<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>     * default is defined in org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>     *<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>     * @return the class name of the flush policy for this table. If this<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>     * returns null, the default flush policy is used.<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>     */<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>    @Override<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    public String getFlushPolicyClassName() {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>      return getOrDefault(FLUSH_POLICY_KEY, Function.identity(), null);<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    /**<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>     * Adds a column family. For the updating purpose please use<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>     * {@link #modifyColumnFamily(ColumnFamilyDescriptor)} instead.<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>     *<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>     * @param family to add.<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>     * @return the modifyable TD<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>     */<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>    public ModifyableTableDescriptor setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>      }<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      if (hasColumnFamily(family.getName())) {<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>        throw new IllegalArgumentException("Family '"<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>                + family.getNameAsString() + "' already exists so cannot be added");<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>      }<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>      return putColumnFamily(family);<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>    }<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span><a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>    /**<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>     * Modifies the existing column family.<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>     *<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>     * @param family to update<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>     * @return this (for chained invocation)<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>     */<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>    public ModifyableTableDescriptor modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>      }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>      if (!hasColumnFamily(family.getName())) {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>        throw new IllegalArgumentException("Column family '" + family.getNameAsString()<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>                + "' does not exist");<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>      }<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>      return putColumnFamily(family);<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>    }<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span><a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>    private ModifyableTableDescriptor putColumnFamily(ColumnFamilyDescriptor family) {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>      families.put(family.getName(), family);<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>      return this;<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>    }<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span><a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>    /**<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>     * Checks to see if this table contains the given column family<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>     *<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>     * @param familyName Family name or column name.<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>     * @return true if the table contains the specified family name<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>     */<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>    @Override<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>    public boolean hasColumnFamily(final byte[] familyName) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>      return families.containsKey(familyName);<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span>    }<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span><a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>    /**<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>     * @return Name of this table and then a map of all of the column family descriptors.<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>     */<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>    @Override<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>    public String toString() {<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>      StringBuilder s = new StringBuilder();<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>      s.append(getValues(true));<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>      families.values().forEach(f -&gt; s.append(", ").append(f));<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>      return s.toString();<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>    }<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span><a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>    /**<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>     * @return Name of this table and then a map of all of the column family<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>     * descriptors (with only the non-default column family attributes)<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>     */<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>    @Override<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>    public String toStringCustomizedValues() {<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>      StringBuilder s = new StringBuilder();<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>      s.append(getValues(false));<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>      families.values().forEach(hcd -&gt; s.append(", ").append(hcd.toStringCustomizedValues()));<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>      return s.toString();<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>    }<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span><a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>    /**<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>     * @return map of all table attributes formatted into string.<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>     */<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>    public String toStringTableAttributes() {<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>      return getValues(true).toString();<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>    }<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span><a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>    private StringBuilder getValues(boolean printDefaults) {<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>      StringBuilder s = new StringBuilder();<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span><a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>      // step 1: set partitioning and pruning<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>      Set&lt;Bytes&gt; reservedKeys = new TreeSet&lt;&gt;();<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>      Set&lt;Bytes&gt; userKeys = new TreeSet&lt;&gt;();<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>      for (Map.Entry&lt;Bytes, Bytes&gt; entry : values.entrySet()) {<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>        if (entry.getKey() == null || entry.getKey().get() == null) {<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>          continue;<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>        }<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>        String key = Bytes.toString(entry.getKey().get());<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>        // in this section, print out reserved keywords + coprocessor info<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>        if (!RESERVED_KEYWORDS.contains(entry.getKey()) &amp;&amp; !key.startsWith("coprocessor$")) {<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span>          userKeys.add(entry.getKey());<a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>          continue;<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>        }<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span>        // only print out IS_META if true<a name="line.1169"></a>
+<span class="sourceLineNo">1170</span>        String value = Bytes.toString(entry.getValue().get());<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span>        if (key.equalsIgnoreCase(IS_META)) {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>          if (Boolean.valueOf(value) == false) {<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>            continue;<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>          }<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        }<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>        // see if a reserved key is a default value. may not want to print it out<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>        if (printDefaults<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span>                || !DEFAULT_VALUES.containsKey(key)<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>                || !DEFAULT_VALUES.get(key).equalsIgnoreCase(value)) {<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>          reservedKeys.add(entry.getKey());<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>        }<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>      }<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span><a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>      // early exit optimization<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>      boolean hasAttributes = !reservedKeys.isEmpty() || !userKeys.isEmpty();<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span>      if (!hasAttributes) {<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span>        return s;<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span>      }<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span><a name="line.1189"></a>
+<span class="sourceLineNo">1190</span>      s.append(", {");<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span>      // step 2: printing attributes<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span>      if (hasAttributes) {<a name="line.1192"></a>
+<span class="sourceLineNo">1193</span>        s.append("TABLE_ATTRIBUTES =&gt; {");<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span><a name="line.1194"></a>
+<span class="sourceLineNo">1195</span>        // print all reserved keys first<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span>        boolean printCommaForAttr = false;<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span>        for (Bytes k : reservedKeys) {<a name="line.1197"></a>
+<span class="sourceLineNo">1198</span>          String key = Bytes.toString(k.get());<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span>          String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1199"></a>
+<span class="sourceLineNo">1200</span>          if (printCommaForAttr) {<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span>            s.append(", ");<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span>          }<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span>          printCommaForAttr = true;<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span>          s.append(key);<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span>          s.append(" =&gt; ");<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span>          s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1206"></a>
+<span class="sourceLineNo">1207</span>        }<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span><a name="line.1208"></a>
+<span class="sourceLineNo">1209</span>        if (!userKeys.isEmpty()) {<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span>          // print all non-reserved as a separate subset<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span>          if (printCommaForAttr) {<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span>            s.append(", ");<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span>          }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span>          s.append(HConstants.METADATA).append(" =&gt; ");<a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>          s.append("{");<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>          boolean printCommaForCfg = false;<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span>          for (Bytes k : userKeys) {<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>            String key = Bytes.toString(k.get());<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>            String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>            if (printCommaForCfg) {<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>              s.append(", ");<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>            }<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>            printCommaForCfg = true;<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span>            s.append('\'').append(key).append('\'');<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>            s.append(" =&gt; ");<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span>            s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>          }<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>          s.append("}");<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span>        }<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span><a name="line.1230"></a>
+<span class="sourceLineNo">1231</span>        s.append("}");<a name="line.1231"></a>
+<span class="sourceLineNo">1232</span>      }<a name="line.1232"></a>
+<span class="sourceLineNo">1233</span><a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>      s.append("}"); // end METHOD<a name="line.1234"></a>
+<span class="sourceLineNo">1235</span>      return s;<a name="line.1235"></a>
+<span class="sourceLineNo">1236</span>    }<a name="line.1236"></a>
+<span class="sourceLineNo">1237</span><a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>    /**<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>     * Compare the contents of the descriptor with another one passed as a<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>     * parameter. Checks if the obj passed is an instance of ModifyableTableDescriptor,<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>     * if yes then the contents of the descriptors are compared.<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>     *<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>     * @param obj The object to compare<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>     * @return true if the contents of the the two descriptors exactly match<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>     *<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>     * @see java.lang.Object#equals(java.lang.Object)<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>     */<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    @Override<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>    public boolean equals(Object obj) {<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span>      if (this == obj) {<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>        return true;<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>      }<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>      if (obj instanceof ModifyableTableDescriptor) {<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>        return TableDescriptor.COMPARATOR.compare(this, (ModifyableTableDescriptor) obj) == 0;<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>      }<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>      return false;<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>    }<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span><a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>    /**<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>     * @return hash code<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>     */<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    @Override<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>    public int hashCode() {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>      int result = this.name.hashCode();<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>      if (this.families.size() &gt; 0) {<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>        for (ColumnFamilyDescriptor e : this.families.values()) {<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>          result ^= e.hashCode();<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>        }<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>      }<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>      result ^= values.hashCode();<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>      return result;<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>    }<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span><a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>    // Comparable<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>    /**<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>     * Compares the descriptor with another descriptor which is passed as a<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>     * parameter. This compares the content of the two descriptors and not the<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>     * reference.<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>     *<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>     * @param other The MTD to compare<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>     * @return 0 if the contents of the descriptors are exactly matching, 1 if<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>     * there is a mismatch in the contents<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>     */<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>    @Override<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>    public int compareTo(final ModifyableTableDescriptor other) {<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>      return TableDescriptor.COMPARATOR.compare(this, other);<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span>    }<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span><a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>    @Override<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>    public ColumnFamilyDescriptor[] getColumnFamilies() {<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>      return families.values().toArray(new ColumnFamilyDescriptor[families.size()]);<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>    }<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span><a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>    /**<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>     * Returns the configured replicas per region<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>     */<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>    @Override<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>    public int getRegionReplication() {<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>      return getOrDefault(REGION_REPLICATION_KEY, Integer::valueOf, DEFAULT_REGION_REPLICATION);<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>    }<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span><a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>    /**<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span>     * Sets the number of replicas per region.<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>     *<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>     * @param regionReplication the replication factor per region<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>     * @return the modifyable TD<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>     */<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>    public ModifyableTableDescriptor setRegionReplication(int regionReplication) {<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>      return setValue(REGION_REPLICATION_KEY, Integer.toString(regionReplication));<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>    }<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span><a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>    /**<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span>     * @return true if the read-replicas memstore replication is enabled.<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span>     */<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>    @Override<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>    public boolean hasRegionMemStoreReplication() {<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>      return getOrDefault(REGION_MEMSTORE_REPLICATION_KEY, Boolean::valueOf, DEFAULT_REGION_MEMSTORE_REPLICATION);<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>    }<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span><a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>    /**<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>     * Enable or Disable the memstore replication from the primary region to the<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>     * replicas. The replication will be used only for meta operations (e.g.<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>     * flush, compaction, ...)<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>     *<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>     * @param memstoreReplication true if the new data written to the primary<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>     * region should be replicated. false if the secondaries can tollerate to<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>     * have new data only when the primary flushes the memstore.<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>     * @return the modifyable TD<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>     */<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>    public ModifyableTableDescriptor setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>      setValue(REGION_MEMSTORE_REPLICATION_KEY, Boolean.toString(memstoreReplication));<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>      // If the memstore replication is setup, we do not have to wait for observing a flush event<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>      // from primary before starting to serve reads, because gaps from replication is not applicable<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>      return setValue(REGION_REPLICA_WAIT_FOR_PRIMARY_FLUSH_CONF_KEY,<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span>              Boolean.toString(memstoreReplication));<a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>    }<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span><a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>    public ModifyableTableDescriptor setPriority(int priority) {<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>      return setValue(PRIORITY_KEY, Integer.toString(priority));<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>    }<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span><a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>    @Override<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>    public int getPriority() {<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>      return getOrDefault(PRIORITY_KEY, Integer::valueOf, DEFAULT_PRIORITY);<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span>    }<a name="line.1345"></a>
+<span class="sourceLineNo">1346</span><a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>    /**<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>     * Returns all the column family names of the current table. The map of<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>     * TableDescriptor contains mapping of family name to ColumnFamilyDescriptor.<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>     * This returns all the keys of the family map which represents the column<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>     * family names of the table.<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>     *<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span>     * @return Immutable sorted set of the keys of the families.<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span>     */<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>    @Override<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>    public Set&lt;byte[]&gt; getColumnFamilyNames() {<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>      return Collections.unmodifiableSet(this.families.keySet());<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    }<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span><a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>    /**<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>     * Returns the ColumnFamilyDescriptor for a specific column family with name as<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>     * specified by the parameter column.<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>     *<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>     * @param column Column family name<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>     * passed in column.<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>     */<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>    @Override<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>    public ColumnFamilyDescriptor getColumnFamily(final byte[] column) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>      return this.families.get(column);<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>    }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span><a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>    /**<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>     * Removes the ColumnFamilyDescriptor with name specified by the parameter column<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>     * from the table descriptor<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>     *<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>     * @param column Name of the column family to be removed.<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>     * passed in column.<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>     */<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>    public ColumnFamilyDescriptor removeColumnFamily(final byte[] column) {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>      return this.families.remove(column);<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>    }<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span><a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>    /**<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>     * loadable or not will be determined when a region is opened.<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>     *<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>     * @param className Full class name.<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>     * @throws IOException<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>     * @return the modifyable TD<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>     */<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>    public ModifyableTableDescriptor setCoprocessor(String className) throws IOException {<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>      return setCoprocessor(<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        CoprocessorDescriptorBuilder.newBuilder(className).setPriority(Coprocessor.PRIORITY_USER)<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          .build());<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>    }<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span><a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>    /**<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>     * loadable or not will be determined when a region is opened.<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>     *<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>     * @throws IOException any illegal parameter key/value<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>     * @return the modifyable TD<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>     */<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>    public ModifyableTableDescriptor setCoprocessor(CoprocessorDescriptor cp)<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>            throws IOException {<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>      checkHasCoprocessor(cp.getClassName());<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>      if (cp.getPriority() &lt; 0) {<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        throw new IOException("Priority must be bigger than or equal with zero, current:"<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>          + cp.getPriority());<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>      }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>      // Validate parameter kvs and then add key/values to kvString.<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>      StringBuilder kvString = new StringBuilder();<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>      for (Map.Entry&lt;String, String&gt; e : cp.getProperties().entrySet()) {<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>        if (!e.getKey().matches(CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN)) {<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>          throw new IOException("Illegal parameter key = " + e.getKey());<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>        }<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>        if (!e.getValue().matches(CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN)) {<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>          throw new IOException("Illegal parameter (" + e.getKey()<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>                  + ") value = " + e.getValue());<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>        }<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>        if (kvString.length() != 0) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>          kvString.append(',');<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>        }<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>        kvString.append(e.getKey());<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>        kvString.append('=');<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>        kvString.append(e.getValue());<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>      }<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span><a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>      String value = cp.getJarPath().orElse("")<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>              + "|" + cp.getClassName() + "|" + Integer.toString(cp.getPriority()) + "|"<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>              + kvString.toString();<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>      return setCoprocessorToMap(value);<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>    }<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span><a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>    /**<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span>     * loadable or not will be determined when a region is opened.<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>     *<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>     * @throws IOException<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>     * @return the modifyable TD<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span>     * @deprecated used by HTableDescriptor and admin.rb.<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>     *                       As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>     */<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>    @Deprecated<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>    public ModifyableTableDescriptor setCoprocessorWithSpec(final String specStr)<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>      throws IOException {<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>      CoprocessorDescriptor cpDesc = toCoprocessorDescriptor(specStr).orElseThrow(<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>        () -&gt; new IllegalArgumentException(<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          "Format does not match " + CP_HTD_ATTR_VALUE_PATTERN + ": " + specStr));<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>      checkHasCoprocessor(cpDesc.getClassName());<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>      return setCoprocessorToMap(specStr);<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>    }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>    private void checkHasCoprocessor(final String className) throws IOException {<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>      if (hasCoprocessor(className)) {<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>        throw new IOException("Coprocessor " + className + " already exists.");<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>      }<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>    }<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span><a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>    /**<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>     * Add coprocessor to values Map<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>     * @return Returns &lt;code&gt;this&lt;/code&gt;<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>     */<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>    private ModifyableTableDescriptor setCoprocessorToMap(final String specStr) {<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>      if (specStr == null) {<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>        return this;<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>      }<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      // generate a coprocessor key<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      int maxCoprocessorNumber = 0;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>      Matcher keyMatcher;<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values.entrySet()) {<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e.getKey().get()));<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>        if (!keyMatcher.matches()) {<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>          continue;<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>        }<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>        maxCoprocessorNumber = Math.max(Integer.parseInt(keyMatcher.group(1)), maxCoprocessorNumber);<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>      }<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>      maxCoprocessorNumber++;<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>      String key = "coprocessor$" + Integer.toString(maxCoprocessorNumber);<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>      return setValue(new Bytes(Bytes.toBytes(key)), new Bytes(Bytes.toBytes(specStr)));<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>    }<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span><a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    /**<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>     * Check if the table has an attached co-processor represented by the name<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>     * className<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>     *<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>     * @param classNameToMatch - Class name of the co-processor<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>     * @return true of the table has a co-processor className<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>     */<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>    @Override<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>    public boolean hasCoprocessor(String classNameToMatch) {<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      return getCoprocessorDescriptors().stream().anyMatch(cp -&gt; cp.getClassName()<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>        .equals(classNameToMatch));<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>    }<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>    /**<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>     * Return the list of attached co-processor represented by their name<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>     * className<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>     *<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>     * @return The list of co-processors classNames<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>     */<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>    @Override<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>    public List&lt;CoprocessorDescriptor&gt; getCoprocessorDescriptors() {<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>      List&lt;CoprocessorDescriptor&gt; result = new ArrayList&lt;&gt;();<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e: getValues().entrySet()) {<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        String key = Bytes.toString(e.getKey().get()).trim();<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>        if (CP_HTD_ATTR_KEY_PATTERN.matcher(key).matches()) {<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>          toCoprocessorDescriptor(Bytes.toString(e.getValue().get()).trim())<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>            .ifPresent(result::add);<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>        }<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>      }<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>      return result;<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>    }<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span><a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>    /**<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>     * Remove a coprocessor from those set on the table<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>     *<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>     * @param className Class name of the co-processor<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>     */<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>    public void removeCoprocessor(String className) {<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>      Bytes match = null;<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>      Matcher keyMatcher;<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>      Matcher valueMatcher;<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>              .entrySet()) {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                .getKey().get()));<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (!keyMatcher.matches()) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          continue;<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>        }<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>        valueMatcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(Bytes<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>                .toString(e.getValue().get()));<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>        if (!valueMatcher.matches()) {<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>          continue;<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        }<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>        // get className and compare<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>        String clazz = valueMatcher.group(2).trim(); // classname is the 2nd field<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        // remove the CP if it is present<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        if (clazz.equals(className.trim())) {<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>          match = e.getKey();<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span>          break;<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>        }<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      }<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // if we found a match, remove it<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      if (match != null) {<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>        ModifyableTableDescriptor.this.removeValue(match);<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      }<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>    }<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span><a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>    /**<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>     * @return the bytes in pb format<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>     */<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    private byte[] toByteArray() {<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>      return ProtobufUtil.prependPBMagic(ProtobufUtil.toTableSchema(this).toByteArray());<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>    }<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span><a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>    /**<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     * @param bytes A pb serialized {@link ModifyableTableDescriptor} instance<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * with pb magic prefix<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     * @return An instance of {@link ModifyableTableDescriptor} made from<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * &lt;code&gt;bytes&lt;/code&gt;<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @throws DeserializationException<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     * @see #toByteArray()<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>    private static TableDescriptor parseFrom(final byte[] bytes)<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>            throws DeserializationException {<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>      if (!ProtobufUtil.isPBMagicPrefix(bytes)) {<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        throw new DeserializationException("Expected PB encoded ModifyableTableDescriptor");<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>      }<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>      HBaseProtos.TableSchema.Builder builder = HBaseProtos.TableSchema.newBuilder();<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>      try {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>        ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>        return ProtobufUtil.toTableDescriptor(builder.build());<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>      } catch (IOException e) {<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        throw new DeserializationException(e);<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>    }<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span><a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>    @Override<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>    public int getColumnFamilyCount() {<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>      return families.size();<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    }<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span><a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    @Override<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    public Optional&lt;String&gt; getRegionServerGroup() {<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      Bytes value = values.get(RSGROUP_KEY);<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>      if (value != null) {<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>        return Optional.of(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      } else {<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>        return Optional.empty();<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>      }<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>    }<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>  }<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span><a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>  /**<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>   * This method is mostly intended for internal use. However, it it also relied on by hbase-shell<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>   * for backwards compatibility.<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>   */<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>  private static Optional&lt;CoprocessorDescriptor&gt; toCoprocessorDescriptor(String spec) {<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    Matcher matcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(spec);<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>    if (matcher.matches()) {<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>      // jar file path can be empty if the cp class can be loaded<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>      // from class loader.<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>      String path = matcher.group(1).trim().isEmpty() ?<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>        null : matcher.group(1).trim();<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>      String className = matcher.group(2).trim();<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>      if (className.isEmpty()) {<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>        return Optional.empty();<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>      String priorityStr = matcher.group(3).trim();<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>      int priority = priorityStr.isEmpty() ?<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>        Coprocessor.PRIORITY_USER : Integer.parseInt(priorityStr);<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>      String cfgSpec = null;<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>      try {<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>        cfgSpec = matcher.group(4);<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      } catch (IndexOutOfBoundsException ex) {<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>        // ignore<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      }<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>      Map&lt;String, String&gt; ourConf = new TreeMap&lt;&gt;();<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>      if (cfgSpec != null &amp;&amp; !cfgSpec.trim().equals("|")) {<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>        cfgSpec = cfgSpec.substring(cfgSpec.indexOf('|') + 1);<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>        Matcher m = CP_HTD_ATTR_VALUE_PARAM_PATTERN.matcher(cfgSpec);<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>        while (m.find()) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>          ourConf.put(m.group(1), m.group(2));<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>        }<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>      }<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>      return Optional.of(CoprocessorDescriptorBuilder.newBuilder(className)<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>        .setJarPath(path)<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>        .setPriority(priority)<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>        .setProperties(ourConf)<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>        .build());<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>    }<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>    return Optional.empty();<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>  }<a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>}<a name="line.1646"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
index 9506b60..87edfdb 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/TableDescriptorBuilder.html
@@ -259,1398 +259,1399 @@
 <span class="sourceLineNo">251</span>  public static PrettyPrinter.Unit getUnit(String key) {<a name="line.251"></a>
 <span class="sourceLineNo">252</span>    switch (key) {<a name="line.252"></a>
 <span class="sourceLineNo">253</span>      case MAX_FILESIZE:<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        return PrettyPrinter.Unit.BYTE;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      default:<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        return PrettyPrinter.Unit.NONE;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>  /**<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   *             any more.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  @InterfaceAudience.Private<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  @Deprecated<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  public final static String NAMESPACE_FAMILY_INFO = "info";<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>  /**<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   *             any more.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   */<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @InterfaceAudience.Private<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  @Deprecated<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public final static byte[] NAMESPACE_FAMILY_INFO_BYTES = Bytes.toBytes(NAMESPACE_FAMILY_INFO);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   *             any more.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  @InterfaceAudience.Private<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  @Deprecated<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public final static byte[] NAMESPACE_COL_DESC_BYTES = Bytes.toBytes("d");<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  /**<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * &lt;pre&gt;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * Pattern that matches a coprocessor specification. Form is:<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * {@code &lt;coprocessor jar file location&gt; '|' &lt;class name&gt; ['|' &lt;priority&gt; ['|' &lt;arguments&gt;]]}<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * where arguments are {@code &lt;KEY&gt; '=' &lt;VALUE&gt; [,...]}<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * For example: {@code hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2}<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * &lt;/pre&gt;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  private static final Pattern CP_HTD_ATTR_VALUE_PATTERN =<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    Pattern.compile("(^[^\\|]*)\\|([^\\|]+)\\|[\\s]*([\\d]*)[\\s]*(\\|.*)?$");<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN = "[^=,]+";<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN = "[^,]+";<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  private static final Pattern CP_HTD_ATTR_VALUE_PARAM_PATTERN = Pattern.compile(<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    "(" + CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN + ")=(" +<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN + "),?");<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private static final Pattern CP_HTD_ATTR_KEY_PATTERN =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Pattern.compile("^coprocessor\\$([0-9]+)$", Pattern.CASE_INSENSITIVE);<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  /**<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * Table descriptor for namespace table<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * @deprecated since 3.0.0 and will be removed in 4.0.0. We have folded the data in namespace<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   *   table into meta table, so do not use it any more.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21154"&gt;HBASE-21154&lt;/a&gt;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Deprecated<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public static final TableDescriptor NAMESPACE_TABLEDESC =<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    TableDescriptorBuilder.newBuilder(TableName.NAMESPACE_TABLE_NAME)<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(NAMESPACE_FAMILY_INFO_BYTES)<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        // Ten is arbitrary number. Keep versions to help debugging.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        .setMaxVersions(10).setInMemory(true).setBlocksize(8 * 1024)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        .setScope(HConstants.REPLICATION_SCOPE_LOCAL).build())<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      .build();<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  private final ModifyableTableDescriptor desc;<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /**<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param desc The table descriptor to serialize<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static byte[] toByteArray(TableDescriptor desc) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    if (desc instanceof ModifyableTableDescriptor) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      return ((ModifyableTableDescriptor) desc).toByteArray();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    return new ModifyableTableDescriptor(desc).toByteArray();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  /**<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * The input should be created by {@link #toByteArray}.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * @param pbBytes A pb serialized TableDescriptor instance with pb magic prefix<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @throws org.apache.hadoop.hbase.exceptions.DeserializationException<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public static TableDescriptor parseFrom(byte[] pbBytes) throws DeserializationException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return ModifyableTableDescriptor.parseFrom(pbBytes);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public static TableDescriptorBuilder newBuilder(final TableName name) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return new TableDescriptorBuilder(name);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  public static TableDescriptor copy(TableDescriptor desc) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return new ModifyableTableDescriptor(desc);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static TableDescriptor copy(TableName name, TableDescriptor desc) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return new ModifyableTableDescriptor(name, desc);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Copy all values, families, and name from the input.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @param desc The desciptor to copy<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @return A clone of input<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public static TableDescriptorBuilder newBuilder(final TableDescriptor desc) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    return new TableDescriptorBuilder(desc);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private TableDescriptorBuilder(final TableName name) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    this.desc = new ModifyableTableDescriptor(name);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private TableDescriptorBuilder(final TableDescriptor desc) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    this.desc = new ModifyableTableDescriptor(desc);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public TableDescriptorBuilder setCoprocessor(String className) throws IOException {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    return setCoprocessor(CoprocessorDescriptorBuilder.of(className));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public TableDescriptorBuilder setCoprocessor(CoprocessorDescriptor cpDesc) throws IOException {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    desc.setCoprocessor(Objects.requireNonNull(cpDesc));<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    return this;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  }<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>  public TableDescriptorBuilder setCoprocessors(Collection&lt;CoprocessorDescriptor&gt; cpDescs)<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    throws IOException {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (CoprocessorDescriptor cpDesc : cpDescs) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      desc.setCoprocessor(cpDesc);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    return this;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  public boolean hasCoprocessor(String classNameToMatch) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    return desc.hasCoprocessor(classNameToMatch);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  }<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public TableDescriptorBuilder setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    desc.setColumnFamily(Objects.requireNonNull(family));<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    return this;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  public TableDescriptorBuilder setColumnFamilies(<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    final Collection&lt;ColumnFamilyDescriptor&gt; families) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    families.forEach(desc::setColumnFamily);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    return this;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public TableDescriptorBuilder modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    desc.modifyColumnFamily(Objects.requireNonNull(family));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    return this;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  }<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public TableDescriptorBuilder removeValue(final String key) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    desc.removeValue(key);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    return this;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  }<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  public TableDescriptorBuilder removeValue(Bytes key) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    desc.removeValue(key);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    return this;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  public TableDescriptorBuilder removeValue(byte[] key) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    desc.removeValue(key);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    return this;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public TableDescriptorBuilder removeValue(BiPredicate&lt;Bytes, Bytes&gt; predicate) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    List&lt;Bytes&gt; toRemove =<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      desc.getValues().entrySet().stream().filter(e -&gt; predicate.test(e.getKey(), e.getValue()))<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        .map(Map.Entry::getKey).collect(Collectors.toList());<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    for (Bytes key : toRemove) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      removeValue(key);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return this;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public TableDescriptorBuilder removeColumnFamily(final byte[] name) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    desc.removeColumnFamily(name);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return this;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  public TableDescriptorBuilder removeCoprocessor(String className) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    desc.removeCoprocessor(className);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return this;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public TableDescriptorBuilder setCompactionEnabled(final boolean isEnable) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    desc.setCompactionEnabled(isEnable);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return this;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public TableDescriptorBuilder setSplitEnabled(final boolean isEnable) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    desc.setSplitEnabled(isEnable);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return this;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public TableDescriptorBuilder setMergeEnabled(final boolean isEnable) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    desc.setMergeEnabled(isEnable);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return this;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public TableDescriptorBuilder setDurability(Durability durability) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    desc.setDurability(durability);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    return this;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public TableDescriptorBuilder setFlushPolicyClassName(String clazz) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    desc.setFlushPolicyClassName(clazz);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return this;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  public TableDescriptorBuilder setMaxFileSize(long maxFileSize) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    desc.setMaxFileSize(maxFileSize);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return this;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public TableDescriptorBuilder setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    desc.setMaxFileSize(maxFileSize);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return this;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  public TableDescriptorBuilder setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    desc.setMemStoreFlushSize(memstoreFlushSize);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    return this;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public TableDescriptorBuilder setMemStoreFlushSize(String memStoreFlushSize)<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    throws HBaseException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    desc.setMemStoreFlushSize(memStoreFlushSize);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return this;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  public TableDescriptorBuilder setNormalizerTargetRegionCount(final int regionCount) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    desc.setNormalizerTargetRegionCount(regionCount);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    return this;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  }<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span>  public TableDescriptorBuilder setNormalizerTargetRegionSize(final long regionSize) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    desc.setNormalizerTargetRegionSize(regionSize);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return this;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  public TableDescriptorBuilder setNormalizationEnabled(final boolean isEnable) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    desc.setNormalizationEnabled(isEnable);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    return this;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>  public TableDescriptorBuilder setPriority(int priority) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    desc.setPriority(priority);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    return this;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public TableDescriptorBuilder setReadOnly(final boolean readOnly) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    desc.setReadOnly(readOnly);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    return this;<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  }<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public TableDescriptorBuilder setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    desc.setRegionMemStoreReplication(memstoreReplication);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    return this;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>  public TableDescriptorBuilder setRegionReplication(int regionReplication) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    desc.setRegionReplication(regionReplication);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    return this;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span>  public TableDescriptorBuilder setRegionSplitPolicyClassName(String clazz) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    desc.setRegionSplitPolicyClassName(clazz);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    return this;<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  public TableDescriptorBuilder setValue(final String key, final String value) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    desc.setValue(key, value);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    return this;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>  public TableDescriptorBuilder setValue(final Bytes key, final Bytes value) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    desc.setValue(key, value);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    return this;<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  public TableDescriptorBuilder setValue(final byte[] key, final byte[] value) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    desc.setValue(key, value);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    return this;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>  public String getValue(String key) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return desc.getValue(key);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Sets replication scope all &amp; only the columns already in the builder. Columns added later won't<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * be backfilled with replication scope.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param scope replication scope<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @return a TableDescriptorBuilder<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   */<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  public TableDescriptorBuilder setReplicationScope(int scope) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    Map&lt;byte[], ColumnFamilyDescriptor&gt; newFamilies = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    newFamilies.putAll(desc.families);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    newFamilies<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        .forEach((cf, cfDesc) -&gt; {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>          desc.removeColumnFamily(cf);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>          desc.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(cfDesc).setScope(scope)<a name="line.559"></a>
-<span class="sourceLineNo">560</span>              .build());<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        });<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    return this;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  }<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>  public TableDescriptorBuilder setRegionServerGroup(String group) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    desc.setValue(RSGROUP_KEY, group);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    return this;<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  }<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>  public TableDescriptor build() {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    return new ModifyableTableDescriptor(desc);<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  private static final class ModifyableTableDescriptor<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    implements TableDescriptor, Comparable&lt;ModifyableTableDescriptor&gt; {<a name="line.575"></a>
-<span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sourceLineNo">577</span>    private final TableName name;<a name="line.577"></a>
-<span class="sourceLineNo">578</span><a name="line.578"></a>
-<span class="sourceLineNo">579</span>    /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>     * A map which holds the metadata information of the table. This metadata<a name="line.580"></a>
-<span class="sourceLineNo">581</span>     * includes values like IS_META, SPLIT_POLICY, MAX_FILE_SIZE,<a name="line.581"></a>
-<span class="sourceLineNo">582</span>     * READONLY, MEMSTORE_FLUSHSIZE etc...<a name="line.582"></a>
-<span class="sourceLineNo">583</span>     */<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    private final Map&lt;Bytes, Bytes&gt; values = new HashMap&lt;&gt;();<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span>    /**<a name="line.586"></a>
-<span class="sourceLineNo">587</span>     * Maps column family name to the respective FamilyDescriptors<a name="line.587"></a>
-<span class="sourceLineNo">588</span>     */<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    private final Map&lt;byte[], ColumnFamilyDescriptor&gt; families<a name="line.589"></a>
-<span class="sourceLineNo">590</span>            = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>    /**<a name="line.592"></a>
-<span class="sourceLineNo">593</span>     * Construct a table descriptor specifying a TableName object<a name="line.593"></a>
-<span class="sourceLineNo">594</span>     *<a name="line.594"></a>
-<span class="sourceLineNo">595</span>     * @param name Table name.<a name="line.595"></a>
-<span class="sourceLineNo">596</span>     */<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    private ModifyableTableDescriptor(final TableName name) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      this(name, Collections.emptyList(), Collections.emptyMap());<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span><a name="line.600"></a>
-<span class="sourceLineNo">601</span>    private ModifyableTableDescriptor(final TableDescriptor desc) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      this(desc.getTableName(), Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>    /**<a name="line.605"></a>
-<span class="sourceLineNo">606</span>     * Construct a table descriptor by cloning the descriptor passed as a<a name="line.606"></a>
-<span class="sourceLineNo">607</span>     * parameter.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>     * &lt;p&gt;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     * Makes a deep copy of the supplied descriptor.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>     * @param name The new name<a name="line.610"></a>
-<span class="sourceLineNo">611</span>     * @param desc The descriptor.<a name="line.611"></a>
-<span class="sourceLineNo">612</span>     */<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    private ModifyableTableDescriptor(final TableName name, final TableDescriptor desc) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      this(name, Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>    private ModifyableTableDescriptor(final TableName name, final Collection&lt;ColumnFamilyDescriptor&gt; families,<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            Map&lt;Bytes, Bytes&gt; values) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>      this.name = name;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      families.forEach(c -&gt; this.families.put(c.getName(), ColumnFamilyDescriptorBuilder.copy(c)));<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      this.values.putAll(values);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.values.put(IS_META_KEY,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        new Bytes(Bytes.toBytes(Boolean.toString(name.equals(TableName.META_TABLE_NAME)))));<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    /**<a name="line.626"></a>
-<span class="sourceLineNo">627</span>     * Checks if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.627"></a>
-<span class="sourceLineNo">628</span>     *<a name="line.628"></a>
-<span class="sourceLineNo">629</span>     * @return true if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region<a name="line.629"></a>
-<span class="sourceLineNo">630</span>     */<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    @Override<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    public boolean isMetaRegion() {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      return getOrDefault(IS_META_KEY, Boolean::valueOf, false);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    }<a name="line.634"></a>
-<span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>    /**<a name="line.636"></a>
-<span class="sourceLineNo">637</span>     * Checks if the table is a &lt;code&gt;hbase:meta&lt;/code&gt; table<a name="line.637"></a>
-<span class="sourceLineNo">638</span>     *<a name="line.638"></a>
-<span class="sourceLineNo">639</span>     * @return true if table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>     */<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    @Override<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public boolean isMetaTable() {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      return isMetaRegion();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    }<a name="line.644"></a>
-<span class="sourceLineNo">645</span><a name="line.645"></a>
-<span class="sourceLineNo">646</span>    @Override<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    public Bytes getValue(Bytes key) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      Bytes rval = values.get(key);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      return rval == null ? null : new Bytes(rval.copyBytes());<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>    @Override<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    public String getValue(String key) {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      Bytes rval = values.get(new Bytes(Bytes.toBytes(key)));<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      return rval == null ? null : Bytes.toString(rval.get(), rval.getOffset(), rval.getLength());<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>    @Override<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public byte[] getValue(byte[] key) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      Bytes value = values.get(new Bytes(key));<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      return value == null ? null : value.copyBytes();<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    private &lt;T&gt; T getOrDefault(Bytes key, Function&lt;String, T&gt; function, T defaultValue) {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      Bytes value = values.get(key);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (value == null) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        return defaultValue;<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      } else {<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        return function.apply(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>    /**<a name="line.673"></a>
-<span class="sourceLineNo">674</span>     * Getter for fetching an unmodifiable {@link #values} map.<a name="line.674"></a>
-<span class="sourceLineNo">675</span>     *<a name="line.675"></a>
-<span class="sourceLineNo">676</span>     * @return unmodifiable map {@link #values}.<a name="line.676"></a>
-<span class="sourceLineNo">677</span>     * @see #values<a name="line.677"></a>
-<span class="sourceLineNo">678</span>     */<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    @Override<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    public Map&lt;Bytes, Bytes&gt; getValues() {<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      // shallow pointer copy<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      return Collections.unmodifiableMap(values);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    }<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>    /**<a name="line.685"></a>
-<span class="sourceLineNo">686</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.686"></a>
-<span class="sourceLineNo">687</span>     *<a name="line.687"></a>
-<span class="sourceLineNo">688</span>     * @param key The key.<a name="line.688"></a>
-<span class="sourceLineNo">689</span>     * @param value The value. If null, removes the setting.<a name="line.689"></a>
-<span class="sourceLineNo">690</span>     * @return the modifyable TD<a name="line.690"></a>
-<span class="sourceLineNo">691</span>     * @see #values<a name="line.691"></a>
-<span class="sourceLineNo">692</span>     */<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    public ModifyableTableDescriptor setValue(byte[] key, byte[] value) {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      return setValue(toBytesOrNull(key, v -&gt; v),<a name="line.694"></a>
-<span class="sourceLineNo">695</span>              toBytesOrNull(value, v -&gt; v));<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    }<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>    public ModifyableTableDescriptor setValue(String key, String value) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      return setValue(toBytesOrNull(key, Bytes::toBytes),<a name="line.699"></a>
-<span class="sourceLineNo">700</span>              toBytesOrNull(value, Bytes::toBytes));<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    /*<a name="line.703"></a>
-<span class="sourceLineNo">704</span>     * @param key The key.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>     * @param value The value. If null, removes the setting.<a name="line.705"></a>
-<span class="sourceLineNo">706</span>     */<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    private ModifyableTableDescriptor setValue(final Bytes key,<a name="line.707"></a>
-<span class="sourceLineNo">708</span>            final String value) {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      return setValue(key, toBytesOrNull(value, Bytes::toBytes));<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>    /*<a name="line.712"></a>
-<span class="sourceLineNo">713</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.713"></a>
-<span class="sourceLineNo">714</span>     *<a name="line.714"></a>
-<span class="sourceLineNo">715</span>     * @param key The key.<a name="line.715"></a>
-<span class="sourceLineNo">716</span>     * @param value The value. If null, removes the setting.<a name="line.716"></a>
-<span class="sourceLineNo">717</span>     */<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    public ModifyableTableDescriptor setValue(final Bytes key, final Bytes value) {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      if (value == null) {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>        values.remove(key);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>      } else {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        values.put(key, value);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>      return this;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span>    private static &lt;T&gt; Bytes toBytesOrNull(T t, Function&lt;T, byte[]&gt; f) {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      if (t == null) {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>        return null;<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      } else {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>        return new Bytes(f.apply(t));<a name="line.731"></a>
-<span class="sourceLineNo">732</span>      }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    }<a name="line.733"></a>
-<span class="sourceLineNo">734</span><a name="line.734"></a>
-<span class="sourceLineNo">735</span>    /**<a name="line.735"></a>
-<span class="sourceLineNo">736</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.736"></a>
-<span class="sourceLineNo">737</span>     *<a name="line.737"></a>
-<span class="sourceLineNo">738</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.738"></a>
-<span class="sourceLineNo">739</span>     * parameters.<a name="line.739"></a>
-<span class="sourceLineNo">740</span>     * @return the modifyable TD<a name="line.740"></a>
-<span class="sourceLineNo">741</span>     */<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    public ModifyableTableDescriptor removeValue(final String key) {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      return setValue(key, (String) null);<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    }<a name="line.744"></a>
-<span class="sourceLineNo">745</span><a name="line.745"></a>
-<span class="sourceLineNo">746</span>    /**<a name="line.746"></a>
-<span class="sourceLineNo">747</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.747"></a>
-<span class="sourceLineNo">748</span>     *<a name="line.748"></a>
-<span class="sourceLineNo">749</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.749"></a>
-<span class="sourceLineNo">750</span>     * parameters.<a name="line.750"></a>
-<span class="sourceLineNo">751</span>     * @return the modifyable TD<a name="line.751"></a>
-<span class="sourceLineNo">752</span>     */<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    public ModifyableTableDescriptor removeValue(Bytes key) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      return setValue(key, (Bytes) null);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>    /**<a name="line.757"></a>
-<span class="sourceLineNo">758</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.758"></a>
-<span class="sourceLineNo">759</span>     *<a name="line.759"></a>
-<span class="sourceLineNo">760</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.760"></a>
-<span class="sourceLineNo">761</span>     * parameters.<a name="line.761"></a>
-<span class="sourceLineNo">762</span>     * @return the modifyable TD<a name="line.762"></a>
-<span class="sourceLineNo">763</span>     */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    public ModifyableTableDescriptor removeValue(final byte[] key) {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      return removeValue(new Bytes(key));<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    }<a name="line.766"></a>
-<span class="sourceLineNo">767</span><a name="line.767"></a>
-<span class="sourceLineNo">768</span>    /**<a name="line.768"></a>
-<span class="sourceLineNo">769</span>     * Check if the readOnly flag of the table is set. If the readOnly flag is<a name="line.769"></a>
-<span class="sourceLineNo">770</span>     * set then the contents of the table can only be read from but not<a name="line.770"></a>
-<span class="sourceLineNo">771</span>     * modified.<a name="line.771"></a>
-<span class="sourceLineNo">772</span>     *<a name="line.772"></a>
-<span class="sourceLineNo">773</span>     * @return true if all columns in the table should be read only<a name="line.773"></a>
-<span class="sourceLineNo">774</span>     */<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    @Override<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    public boolean isReadOnly() {<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      return getOrDefault(READONLY_KEY, Boolean::valueOf, DEFAULT_READONLY);<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    }<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>    /**<a name="line.780"></a>
-<span class="sourceLineNo">781</span>     * Setting the table as read only sets all the columns in the table as read<a name="line.781"></a>
-<span class="sourceLineNo">782</span>     * only. By default all tables are modifiable, but if the readOnly flag is<a name="line.782"></a>
-<span class="sourceLineNo">783</span>     * set to true then the contents of the table can only be read but not<a name="line.783"></a>
-<span class="sourceLineNo">784</span>     * modified.<a name="line.784"></a>
-<span class="sourceLineNo">785</span>     *<a name="line.785"></a>
-<span class="sourceLineNo">786</span>     * @param readOnly True if all of the columns in the table should be read<a name="line.786"></a>
-<span class="sourceLineNo">787</span>     * only.<a name="line.787"></a>
-<span class="sourceLineNo">788</span>     * @return the modifyable TD<a name="line.788"></a>
-<span class="sourceLineNo">789</span>     */<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    public ModifyableTableDescriptor setReadOnly(final boolean readOnly) {<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      return setValue(READONLY_KEY, Boolean.toString(readOnly));<a name="line.791"></a>
-<span class="sourceLineNo">792</span>    }<a name="line.792"></a>
-<span class="sourceLineNo">793</span><a name="line.793"></a>
-<span class="sourceLineNo">794</span>    /**<a name="line.794"></a>
-<span class="sourceLineNo">795</span>     * Check if the compaction enable flag of the table is true. If flag is<a name="line.795"></a>
-<span class="sourceLineNo">796</span>     * false then no minor/major compactions will be done in real.<a name="line.796"></a>
-<span class="sourceLineNo">797</span>     *<a name="line.797"></a>
-<span class="sourceLineNo">798</span>     * @return true if table compaction enabled<a name="line.798"></a>
-<span class="sourceLineNo">799</span>     */<a name="line.799"></a>
-<span class="sourceLineNo">800</span>    @Override<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    public boolean isCompactionEnabled() {<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return getOrDefault(COMPACTION_ENABLED_KEY, Boolean::valueOf, DEFAULT_COMPACTION_ENABLED);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>     * Setting the table compaction enable flag.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>     *<a name="line.807"></a>
-<span class="sourceLineNo">808</span>     * @param isEnable True if enable compaction.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>     * @return the modifyable TD<a name="line.809"></a>
-<span class="sourceLineNo">810</span>     */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    public ModifyableTableDescriptor setCompactionEnabled(final boolean isEnable) {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      return setValue(COMPACTION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    }<a name="line.813"></a>
-<span class="sourceLineNo">814</span><a name="line.814"></a>
-<span class="sourceLineNo">815</span>    /**<a name="line.815"></a>
-<span class="sourceLineNo">816</span>     * Check if the split enable flag of the table is true. If flag is false then no split will be<a name="line.816"></a>
-<span class="sourceLineNo">817</span>     * done.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>     *<a name="line.818"></a>
-<span class="sourceLineNo">819</span>     * @return true if table region split enabled<a name="line.819"></a>
-<span class="sourceLineNo">820</span>     */<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    @Override<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    public boolean isSplitEnabled() {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return getOrDefault(SPLIT_ENABLED_KEY, Boolean::valueOf, DEFAULT_SPLIT_ENABLED);<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    }<a name="line.824"></a>
-<span class="sourceLineNo">825</span><a name="line.825"></a>
-<span class="sourceLineNo">826</span>    /**<a name="line.826"></a>
-<span class="sourceLineNo">827</span>     * Setting the table region split enable flag.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>     * @param isEnable True if enable region split.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>     *<a name="line.829"></a>
-<span class="sourceLineNo">830</span>     * @return the modifyable TD<a name="line.830"></a>
-<span class="sourceLineNo">831</span>     */<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    public ModifyableTableDescriptor setSplitEnabled(final boolean isEnable) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      return setValue(SPLIT_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    }<a name="line.834"></a>
-<span class="sourceLineNo">835</span><a name="line.835"></a>
-<span class="sourceLineNo">836</span>    /**<a name="line.836"></a>
-<span class="sourceLineNo">837</span>     * Check if the region merge enable flag of the table is true. If flag is false then no merge<a name="line.837"></a>
-<span class="sourceLineNo">838</span>     * will be done.<a name="line.838"></a>
-<span class="sourceLineNo">839</span>     *<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     * @return true if table region merge enabled<a name="line.840"></a>
-<span class="sourceLineNo">841</span>     */<a name="line.841"></a>
-<span class="sourceLineNo">842</span>    @Override<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    public boolean isMergeEnabled() {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      return getOrDefault(MERGE_ENABLED_KEY, Boolean::valueOf, DEFAULT_MERGE_ENABLED);<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    }<a name="line.845"></a>
-<span class="sourceLineNo">846</span><a name="line.846"></a>
-<span class="sourceLineNo">847</span>    /**<a name="line.847"></a>
-<span class="sourceLineNo">848</span>     * Setting the table region merge enable flag.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>     * @param isEnable True if enable region merge.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>     *<a name="line.850"></a>
-<span class="sourceLineNo">851</span>     * @return the modifyable TD<a name="line.851"></a>
-<span class="sourceLineNo">852</span>     */<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    public ModifyableTableDescriptor setMergeEnabled(final boolean isEnable) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      return setValue(MERGE_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span>    /**<a name="line.857"></a>
-<span class="sourceLineNo">858</span>     * Check if normalization enable flag of the table is true. If flag is false<a name="line.858"></a>
-<span class="sourceLineNo">859</span>     * then no region normalizer won't attempt to normalize this table.<a name="line.859"></a>
-<span class="sourceLineNo">860</span>     *<a name="line.860"></a>
-<span class="sourceLineNo">861</span>     * @return true if region normalization is enabled for this table<a name="line.861"></a>
-<span class="sourceLineNo">862</span>     */<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    @Override<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    public boolean isNormalizationEnabled() {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      return getOrDefault(NORMALIZATION_ENABLED_KEY, Boolean::valueOf, DEFAULT_NORMALIZATION_ENABLED);<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    }<a name="line.866"></a>
-<span class="sourceLineNo">867</span><a name="line.867"></a>
-<span class="sourceLineNo">868</span>    /**<a name="line.868"></a>
-<span class="sourceLineNo">869</span>     * Check if there is the target region count. If so, the normalize plan will be calculated based<a name="line.869"></a>
-<span class="sourceLineNo">870</span>     * on the target region count.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>     * @return target region count after normalize done<a name="line.871"></a>
-<span class="sourceLineNo">872</span>     */<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    @Override<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    public int getNormalizerTargetRegionCount() {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>      return getOrDefault(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer::valueOf,<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        Integer.valueOf(-1));<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    }<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    /**<a name="line.879"></a>
-<span class="sourceLineNo">880</span>     * Check if there is the target region size. If so, the normalize plan will be calculated based<a name="line.880"></a>
-<span class="sourceLineNo">881</span>     * on the target region size.<a name="line.881"></a>
-<span class="sourceLineNo">882</span>     * @return target region size after normalize done<a name="line.882"></a>
-<span class="sourceLineNo">883</span>     */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    @Override<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    public long getNormalizerTargetRegionSize() {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      return getOrDefault(NORMALIZER_TARGET_REGION_SIZE_KEY, Long::valueOf, Long.valueOf(-1));<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    }<a name="line.887"></a>
-<span class="sourceLineNo">888</span><a name="line.888"></a>
-<span class="sourceLineNo">889</span>    /**<a name="line.889"></a>
-<span class="sourceLineNo">890</span>     * Setting the table normalization enable flag.<a name="line.890"></a>
-<span class="sourceLineNo">891</span>     *<a name="line.891"></a>
-<span class="sourceLineNo">892</span>     * @param isEnable True if enable normalization.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>     * @return the modifyable TD<a name="line.893"></a>
-<span class="sourceLineNo">894</span>     */<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    public ModifyableTableDescriptor setNormalizationEnabled(final boolean isEnable) {<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      return setValue(NORMALIZATION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    }<a name="line.897"></a>
-<span class="sourceLineNo">898</span><a name="line.898"></a>
-<span class="sourceLineNo">899</span>    /**<a name="line.899"></a>
-<span class="sourceLineNo">900</span>     * Setting the target region count of table normalization .<a name="line.900"></a>
-<span class="sourceLineNo">901</span>     * @param regionCount the target region count.<a name="line.901"></a>
-<span class="sourceLineNo">902</span>     * @return the modifyable TD<a name="line.902"></a>
-<span class="sourceLineNo">903</span>     */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>    public ModifyableTableDescriptor setNormalizerTargetRegionCount(final int regionCount) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>      return setValue(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer.toString(regionCount));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>    }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>    /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>     * Setting the target region size of table normalization.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>     * @param regionSize the target region size.<a name="line.910"></a>
-<span class="sourceLineNo">911</span>     * @return the modifyable TD<a name="line.911"></a>
-<span class="sourceLineNo">912</span>     */<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    public ModifyableTableDescriptor setNormalizerTargetRegionSize(final long regionSize) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      return setValue(NORMALIZER_TARGET_REGION_SIZE_KEY, Long.toString(regionSize));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>    }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>    /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>     * Sets the {@link Durability} setting for the table. This defaults to<a name="line.918"></a>
-<span class="sourceLineNo">919</span>     * Durability.USE_DEFAULT.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>     *<a name="line.920"></a>
-<span class="sourceLineNo">921</span>     * @param durability enum value<a name="line.921"></a>
-<span class="sourceLineNo">922</span>     * @return the modifyable TD<a name="line.922"></a>
-<span class="sourceLineNo">923</span>     */<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    public ModifyableTableDescriptor setDurability(Durability durability) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      return setValue(DURABILITY_KEY, durability.name());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    }<a name="line.926"></a>
-<span class="sourceLineNo">927</span><a name="line.927"></a>
-<span class="sourceLineNo">928</span>    /**<a name="line.928"></a>
-<span class="sourceLineNo">929</span>     * Returns the durability setting for the table.<a name="line.929"></a>
-<span class="sourceLineNo">930</span>     *<a name="line.930"></a>
-<span class="sourceLineNo">931</span>     * @return durability setting for the table.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>     */<a name="line.932"></a>
-<span class="sourceLineNo">933</span>    @Override<a name="line.933"></a>
-<span class="sourceLineNo">934</span>    public Durability getDurability() {<a name="line.934"></a>
-<span class="sourceLineNo">935</span>      return getOrDefault(DURABILITY_KEY, Durability::valueOf, DEFAULT_DURABLITY);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>    }<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>    /**<a name="line.938"></a>
-<span class="sourceLineNo">939</span>     * Get the name of the table<a name="line.939"></a>
-<span class="sourceLineNo">940</span>     *<a name="line.940"></a>
-<span class="sourceLineNo">941</span>     * @return TableName<a name="line.941"></a>
-<span class="sourceLineNo">942</span>     */<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    @Override<a name="line.943"></a>
-<span class="sourceLineNo">944</span>    public TableName getTableName() {<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      return name;<a name="line.945"></a>
-<span class="sourceLineNo">946</span>    }<a name="line.946"></a>
-<span class="sourceLineNo">947</span><a name="line.947"></a>
-<span class="sourceLineNo">948</span>    /**<a name="line.948"></a>
-<span class="sourceLineNo">949</span>     * This sets the class associated with the region split policy which<a name="line.949"></a>
-<span class="sourceLineNo">950</span>     * determines when a region split should occur. The class used by default is<a name="line.950"></a>
-<span class="sourceLineNo">951</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.951"></a>
-<span class="sourceLineNo">952</span>     *<a name="line.952"></a>
-<span class="sourceLineNo">953</span>     * @param clazz the class name<a name="line.953"></a>
-<span class="sourceLineNo">954</span>     * @return the modifyable TD<a name="line.954"></a>
-<span class="sourceLineNo">955</span>     */<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    public ModifyableTableDescriptor setRegionSplitPolicyClassName(String clazz) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>      return setValue(SPLIT_POLICY_KEY, clazz);<a name="line.957"></a>
-<span class="sourceLineNo">958</span>    }<a name="line.958"></a>
-<span class="sourceLineNo">959</span><a name="line.959"></a>
-<span class="sourceLineNo">960</span>    /**<a name="line.960"></a>
-<span class="sourceLineNo">961</span>     * This gets the class associated with the region split policy which<a name="line.961"></a>
-<span class="sourceLineNo">962</span>     * determines when a region split should occur. The class used by default is<a name="line.962"></a>
-<span class="sourceLineNo">963</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.963"></a>
-<span class="sourceLineNo">964</span>     *<a name="line.964"></a>
-<span class="sourceLineNo">965</span>     * @return the class name of the region split policy for this table. If this<a name="line.965"></a>
-<span class="sourceLineNo">966</span>     * returns null, the default split policy is used.<a name="line.966"></a>
-<span class="sourceLineNo">967</span>     */<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    @Override<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    public String getRegionSplitPolicyClassName() {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      return getOrDefault(SPLIT_POLICY_KEY, Function.identity(), null);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>    /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>     * Returns the maximum size upto which a region can grow to after which a<a name="line.974"></a>
-<span class="sourceLineNo">975</span>     * region split is triggered. The region size is represented by the size of<a name="line.975"></a>
-<span class="sourceLineNo">976</span>     * the biggest store file in that region.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>     *<a name="line.977"></a>
-<span class="sourceLineNo">978</span>     * @return max hregion size for table, -1 if not set.<a name="line.978"></a>
-<span class="sourceLineNo">979</span>     *<a name="line.979"></a>
-<span class="sourceLineNo">980</span>     * @see #setMaxFileSize(long)<a name="line.980"></a>
-<span class="sourceLineNo">981</span>     */<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    @Override<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    public long getMaxFileSize() {<a name="line.983"></a>
-<span class="sourceLineNo">984</span>      return getOrDefault(MAX_FILESIZE_KEY, Long::valueOf, (long) -1);<a name="line.984"></a>
-<span class="sourceLineNo">985</span>    }<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>    /**<a name="line.987"></a>
-<span class="sourceLineNo">988</span>     * Sets the maximum size upto which a region can grow to after which a<a name="line.988"></a>
-<span class="sourceLineNo">989</span>     * region split is triggered. The region size is represented by the size of<a name="line.989"></a>
-<span class="sourceLineNo">990</span>     * the biggest store file in that region, i.e. If the biggest store file<a name="line.990"></a>
-<span class="sourceLineNo">991</span>     * grows beyond the maxFileSize, then the region split is triggered. This<a name="line.991"></a>
-<span class="sourceLineNo">992</span>     * defaults to a value of 256 MB.<a name="line.992"></a>
-<span class="sourceLineNo">993</span>     * &lt;p&gt;<a name="line.993"></a>
-<span class="sourceLineNo">994</span>     * This is not an absolute value and might vary. Assume that a single row<a name="line.994"></a>
-<span class="sourceLineNo">995</span>     * exceeds the maxFileSize then the storeFileSize will be greater than<a name="line.995"></a>
-<span class="sourceLineNo">996</span>     * maxFileSize since a single row cannot be split across multiple regions<a name="line.996"></a>
-<span class="sourceLineNo">997</span>     * &lt;/p&gt;<a name="line.997"></a>
-<span class="sourceLineNo">998</span>     *<a name="line.998"></a>
-<span class="sourceLineNo">999</span>     * @param maxFileSize The maximum file size that a store file can grow to<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>     * before a split is triggered.<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>     * @return the modifyable TD<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>     */<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>    public ModifyableTableDescriptor setMaxFileSize(long maxFileSize) {<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      return setValue(MAX_FILESIZE_KEY, Long.toString(maxFileSize));<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    }<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span><a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    public ModifyableTableDescriptor setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      return setMaxFileSize(Long.parseLong(PrettyPrinter.<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        valueOf(maxFileSize, PrettyPrinter.Unit.BYTE)));<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    }<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span><a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    /**<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>     * Returns the size of the memstore after which a flush to filesystem is<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>     * triggered.<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>     *<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>     * @return memory cache flush size for each hregion, -1 if not set.<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>     *<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>     * @see #setMemStoreFlushSize(long)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>     */<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>    @Override<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>    public long getMemStoreFlushSize() {<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>      return getOrDefault(MEMSTORE_FLUSHSIZE_KEY, Long::valueOf, (long) -1);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    }<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    /**<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>     * Represents the maximum size of the memstore after which the contents of<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>     * the memstore are flushed to the filesystem. This defaults to a size of 64<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>     * MB.<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>     *<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>     * @param memstoreFlushSize memory cache flush size for each hregion<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>     * @return the modifyable TD<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>     */<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    public ModifyableTableDescriptor setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>      return setValue(MEMSTORE_FLUSHSIZE_KEY, Long.toString(memstoreFlushSize));<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    }<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span><a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>    public ModifyableTableDescriptor setMemStoreFlushSize(String memStoreFlushSize)<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>      throws HBaseException {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      return setMemStoreFlushSize(Long.parseLong(PrettyPrinter.valueOf(memStoreFlushSize,<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        PrettyPrinter.Unit.BYTE)));<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    }<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span><a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>    /**<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>     * This sets the class associated with the flush policy which determines<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>     * determines the stores need to be flushed when flushing a region. The<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>     * class used by default is defined in<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>     * org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>     *<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>     * @param clazz the class name<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>     * @return the modifyable TD<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>     */<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>    public ModifyableTableDescriptor setFlushPolicyClassName(String clazz) {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>      return setValue(FLUSH_POLICY_KEY, clazz);<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span><a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>    /**<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>     * This gets the class associated with the flush policy which determines the<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>     * stores need to be flushed when flushing a region. The class used by<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>     * default is defined in org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>     *<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>     * @return the class name of the flush policy for this table. If this<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>     * returns null, the default flush policy is used.<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>     */<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    @Override<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    public String getFlushPolicyClassName() {<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>      return getOrDefault(FLUSH_POLICY_KEY, Function.identity(), null);<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    }<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>    /**<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>     * Adds a column family. For the updating purpose please use<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>     * {@link #modifyColumnFamily(ColumnFamilyDescriptor)} instead.<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>     *<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>     * @param family to add.<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>     * @return the modifyable TD<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>     */<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    public ModifyableTableDescriptor setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      }<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>      if (hasColumnFamily(family.getName())) {<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>        throw new IllegalArgumentException("Family '"<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>                + family.getNameAsString() + "' already exists so cannot be added");<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      }<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      return putColumnFamily(family);<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span><a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>    /**<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>     * Modifies the existing column family.<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>     *<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>     * @param family to update<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>     * @return this (for chained invocation)<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>     */<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>    public ModifyableTableDescriptor modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>      if (family.getName() == null || family.getName().length &lt;= 0) {<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>        throw new IllegalArgumentException("Family name cannot be null or empty");<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      }<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      if (!hasColumnFamily(family.getName())) {<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>        throw new IllegalArgumentException("Column family '" + family.getNameAsString()<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>                + "' does not exist");<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>      return putColumnFamily(family);<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span><a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    private ModifyableTableDescriptor putColumnFamily(ColumnFamilyDescriptor family) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>      families.put(family.getName(), family);<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      return this;<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    }<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span><a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    /**<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>     * Checks to see if this table contains the given column family<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>     *<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>     * @param familyName Family name or column name.<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>     * @return true if the table contains the specified family name<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>     */<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    @Override<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>    public boolean hasColumnFamily(final byte[] familyName) {<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>      return families.containsKey(familyName);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span><a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>    /**<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>     * @return Name of this table and then a map of all of the column family descriptors.<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>     */<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    @Override<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>    public String toString() {<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      StringBuilder s = new StringBuilder();<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>      s.append(getValues(true));<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>      families.values().forEach(f -&gt; s.append(", ").append(f));<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>      return s.toString();<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    }<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span><a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    /**<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>     * @return Name of this table and then a map of all of the column family<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>     * descriptors (with only the non-default column family attributes)<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>     */<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>    @Override<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>    public String toStringCustomizedValues() {<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      StringBuilder s = new StringBuilder();<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>      s.append('\'').append(Bytes.toString(name.getName())).append('\'');<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      s.append(getValues(false));<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>      families.values().forEach(hcd -&gt; s.append(", ").append(hcd.toStringCustomizedValues()));<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      return s.toString();<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    }<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span><a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>    /**<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>     * @return map of all table attributes formatted into string.<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>     */<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>    public String toStringTableAttributes() {<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>      return getValues(true).toString();<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>    }<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span><a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>    private StringBuilder getValues(boolean printDefaults) {<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>      StringBuilder s = new StringBuilder();<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span><a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>      // step 1: set partitioning and pruning<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>      Set&lt;Bytes&gt; reservedKeys = new TreeSet&lt;&gt;();<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>      Set&lt;Bytes&gt; userKeys = new TreeSet&lt;&gt;();<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>      for (Map.Entry&lt;Bytes, Bytes&gt; entry : values.entrySet()) {<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>        if (entry.getKey() == null || entry.getKey().get() == null) {<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>          continue;<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>        }<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>        String key = Bytes.toString(entry.getKey().get());<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>        // in this section, print out reserved keywords + coprocessor info<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>        if (!RESERVED_KEYWORDS.contains(entry.getKey()) &amp;&amp; !key.startsWith("coprocessor$")) {<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>          userKeys.add(entry.getKey());<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>          continue;<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>        }<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>        // only print out IS_META if true<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>        String value = Bytes.toString(entry.getValue().get());<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>        if (key.equalsIgnoreCase(IS_META)) {<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>          if (Boolean.valueOf(value) == false) {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>            continue;<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>          }<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>        }<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>        // see if a reserved key is a default value. may not want to print it out<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>        if (printDefaults<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>                || !DEFAULT_VALUES.containsKey(key)<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>                || !DEFAULT_VALUES.get(key).equalsIgnoreCase(value)) {<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>          reservedKeys.add(entry.getKey());<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>        }<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>      }<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span><a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>      // early exit optimization<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>      boolean hasAttributes = !reservedKeys.isEmpty() || !userKeys.isEmpty();<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>      if (!hasAttributes) {<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>        return s;<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>      }<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span><a name="line.1188"></a>
-<span class="sourceLineNo">1189</span>      s.append(", {");<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>      // step 2: printing attributes<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>      if (hasAttributes) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>        s.append("TABLE_ATTRIBUTES =&gt; {");<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span><a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>        // print all reserved keys first<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        boolean printCommaForAttr = false;<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>        for (Bytes k : reservedKeys) {<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>          String key = Bytes.toString(k.get());<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>          String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>          if (printCommaForAttr) {<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>            s.append(", ");<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>          }<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          printCommaForAttr = true;<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          s.append(key);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>          s.append(" =&gt; ");<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>          s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>        }<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span><a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>        if (!userKeys.isEmpty()) {<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>          // print all non-reserved as a separate subset<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>          if (printCommaForAttr) {<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>            s.append(", ");<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>          }<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>          s.append(HConstants.METADATA).append(" =&gt; ");<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>          s.append("{");<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>          boolean printCommaForCfg = false;<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>          for (Bytes k : userKeys) {<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>            String key = Bytes.toString(k.get());<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>            String value = Bytes.toStringBinary(values.get(k).get());<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>            if (printCommaForCfg) {<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>              s.append(", ");<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>            }<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>            printCommaForCfg = true;<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>            s.append('\'').append(key).append('\'');<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>            s.append(" =&gt; ");<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>            s.append('\'').append(PrettyPrinter.format(value, getUnit(key))).append('\'');<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>          }<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>          s.append("}");<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>        }<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span><a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>        s.append("}");<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>      }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span><a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>      s.append("}"); // end METHOD<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>      return s;<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>    }<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span><a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>    /**<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>     * Compare the contents of the descriptor with another one passed as a<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>     * parameter. Checks if the obj passed is an instance of ModifyableTableDescriptor,<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>     * if yes then the contents of the descriptors are compared.<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>     *<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>     * @param obj The object to compare<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>     * @return true if the contents of the the two descriptors exactly match<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>     *<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>     * @see java.lang.Object#equals(java.lang.Object)<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>     */<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    @Override<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>    public boolean equals(Object obj) {<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>      if (this == obj) {<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>        return true;<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>      }<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>      if (obj instanceof ModifyableTableDescriptor) {<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>        return TableDescriptor.COMPARATOR.compare(this, (ModifyableTableDescriptor) obj) == 0;<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      }<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>      return false;<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>    }<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>    /**<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>     * @return hash code<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>     */<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>    @Override<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    public int hashCode() {<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>      int result = this.name.hashCode();<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>      if (this.families.size() &gt; 0) {<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>        for (ColumnFamilyDescriptor e : this.families.values()) {<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>          result ^= e.hashCode();<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>        }<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>      }<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>      result ^= values.hashCode();<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>      return result;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>    }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>    // Comparable<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>    /**<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>     * Compares the descriptor with another descriptor which is passed as a<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>     * parameter. This compares the content of the two descriptors and not the<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>     * reference.<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>     *<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>     * @param other The MTD to compare<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>     * @return 0 if the contents of the descriptors are exactly matching, 1 if<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>     * there is a mismatch in the contents<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>     */<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>    @Override<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>    public int compareTo(final ModifyableTableDescriptor other) {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>      return TableDescriptor.COMPARATOR.compare(this, other);<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>    }<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span><a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>    @Override<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>    public ColumnFamilyDescriptor[] getColumnFamilies() {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>      return families.values().toArray(new ColumnFamilyDescriptor[families.size()]);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>    /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>     * Returns the configured replicas per region<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>     */<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>    @Override<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>    public int getRegionReplication() {<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>      return getOrDefault(REGION_REPLICATION_KEY, Integer::valueOf, DEFAULT_REGION_REPLICATION);<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>    }<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span><a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>    /**<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>     * Sets the number of replicas per region.<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>     *<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>     * @param regionReplication the replication factor per region<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>     * @return the modifyable TD<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>     */<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    public ModifyableTableDescriptor setRegionReplication(int regionReplication) {<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>      return setValue(REGION_REPLICATION_KEY, Integer.toString(regionReplication));<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>    }<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span><a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>    /**<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>     * @return true if the read-replicas memstore replication is enabled.<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>     */<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>    @Override<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>    public boolean hasRegionMemStoreReplication() {<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>      return getOrDefault(REGION_MEMSTORE_REPLICATION_KEY, Boolean::valueOf, DEFAULT_REGION_MEMSTORE_REPLICATION);<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>    }<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span><a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>    /**<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>     * Enable or Disable the memstore replication from the primary region to the<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>     * replicas. The replication will be used only for meta operations (e.g.<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>     * flush, compaction, ...)<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>     *<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>     * @param memstoreReplication true if the new data written to the primary<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>     * region should be replicated. false if the secondaries can tollerate to<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>     * have new data only when the primary flushes the memstore.<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>     * @return the modifyable TD<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>     */<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>    public ModifyableTableDescriptor setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>      setValue(REGION_MEMSTORE_REPLICATION_KEY, Boolean.toString(memstoreReplication));<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>      // If the memstore replication is setup, we do not have to wait for observing a flush event<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>      // from primary before starting to serve reads, because gaps from replication is not applicable<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>      return setValue(REGION_REPLICA_WAIT_FOR_PRIMARY_FLUSH_CONF_KEY,<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>              Boolean.toString(memstoreReplication));<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    }<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span><a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>    public ModifyableTableDescriptor setPriority(int priority) {<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>      return setValue(PRIORITY_KEY, Integer.toString(priority));<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>    }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span><a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>    @Override<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    public int getPriority() {<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>      return getOrDefault(PRIORITY_KEY, Integer::valueOf, DEFAULT_PRIORITY);<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>    }<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span><a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>    /**<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>     * Returns all the column family names of the current table. The map of<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>     * TableDescriptor contains mapping of family name to ColumnFamilyDescriptor.<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>     * This returns all the keys of the family map which represents the column<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>     * family names of the table.<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>     *<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>     * @return Immutable sorted set of the keys of the families.<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>     */<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>    @Override<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>    public Set&lt;byte[]&gt; getColumnFamilyNames() {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>      return Collections.unmodifiableSet(this.families.keySet());<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    }<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    /**<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>     * Returns the ColumnFamilyDescriptor for a specific column family with name as<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>     * specified by the parameter column.<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>     *<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>     * @param column Column family name<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>     * passed in column.<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>     */<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>    @Override<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>    public ColumnFamilyDescriptor getColumnFamily(final byte[] column) {<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      return this.families.get(column);<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>    }<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span><a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    /**<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>     * Removes the ColumnFamilyDescriptor with name specified by the parameter column<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>     * from the table descriptor<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>     *<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>     * @param column Name of the column family to be removed.<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>     * @return Column descriptor for the passed family name or the family on<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>     * passed in column.<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>     */<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    public ColumnFamilyDescriptor removeColumnFamily(final byte[] column) {<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>      return this.families.remove(column);<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>    }<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span><a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>    /**<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>     * loadable or not will be determined when a region is opened.<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>     *<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>     * @param className Full class name.<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>     * @throws IOException<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>     * @return the modifyable TD<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>     */<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>    public ModifyableTableDescriptor setCoprocessor(String className) throws IOException {<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>      return setCoprocessor(<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        CoprocessorDescriptorBuilder.newBuilder(className).setPriority(Coprocessor.PRIORITY_USER)<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          .build());<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>    }<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span><a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>    /**<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>     * loadable or not will be determined when a region is opened.<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>     *<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>     * @throws IOException any illegal parameter key/value<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>     * @return the modifyable TD<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>     */<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>    public ModifyableTableDescriptor setCoprocessor(CoprocessorDescriptor cp)<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>            throws IOException {<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>      checkHasCoprocessor(cp.getClassName());<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>      if (cp.getPriority() &lt; 0) {<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        throw new IOException("Priority must be bigger than or equal with zero, current:"<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>          + cp.getPriority());<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>      }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>      // Validate parameter kvs and then add key/values to kvString.<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>      StringBuilder kvString = new StringBuilder();<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>      for (Map.Entry&lt;String, String&gt; e : cp.getProperties().entrySet()) {<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>        if (!e.getKey().matches(CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN)) {<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>          throw new IOException("Illegal parameter key = " + e.getKey());<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>        }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>        if (!e.getValue().matches(CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN)) {<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>          throw new IOException("Illegal parameter (" + e.getKey()<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>                  + ") value = " + e.getValue());<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>        }<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>        if (kvString.length() != 0) {<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>          kvString.append(',');<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>        }<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>        kvString.append(e.getKey());<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>        kvString.append('=');<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>        kvString.append(e.getValue());<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>      }<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span><a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>      String value = cp.getJarPath().orElse("")<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>              + "|" + cp.getClassName() + "|" + Integer.toString(cp.getPriority()) + "|"<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>              + kvString.toString();<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>      return setCoprocessorToMap(value);<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>    }<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span><a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>    /**<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>     * Add a table coprocessor to this table. The coprocessor type must be<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>     * org.apache.hadoop.hbase.coprocessor.RegionObserver or Endpoint. It won't<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>     * check if the class can be loaded or not. Whether a coprocessor is<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>     * loadable or not will be determined when a region is opened.<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>     *<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>     * @throws IOException<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>     * @return the modifyable TD<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>     * @deprecated used by HTableDescriptor and admin.rb.<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>     *                       As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>     */<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>    @Deprecated<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>    public ModifyableTableDescriptor setCoprocessorWithSpec(final String specStr)<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>      throws IOException {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>      CoprocessorDescriptor cpDesc = toCoprocessorDescriptor(specStr).orElseThrow(<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>        () -&gt; new IllegalArgumentException(<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          "Format does not match " + CP_HTD_ATTR_VALUE_PATTERN + ": " + specStr));<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>      checkHasCoprocessor(cpDesc.getClassName());<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>      return setCoprocessorToMap(specStr);<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>    }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>    private void checkHasCoprocessor(final String className) throws IOException {<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>      if (hasCoprocessor(className)) {<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>        throw new IOException("Coprocessor " + className + " already exists.");<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>      }<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>    }<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span><a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>    /**<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>     * Add coprocessor to values Map<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>     * @param specStr The Coprocessor specification all in in one String<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>     * @return Returns &lt;code&gt;this&lt;/code&gt;<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>     */<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>    private ModifyableTableDescriptor setCoprocessorToMap(final String specStr) {<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>      if (specStr == null) {<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>        return this;<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      // generate a coprocessor key<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      int maxCoprocessorNumber = 0;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>      Matcher keyMatcher;<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values.entrySet()) {<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e.getKey().get()));<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>        if (!keyMatcher.matches()) {<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>          continue;<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>        }<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>        maxCoprocessorNumber = Math.max(Integer.parseInt(keyMatcher.group(1)), maxCoprocessorNumber);<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>      }<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>      maxCoprocessorNumber++;<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>      String key = "coprocessor$" + Integer.toString(maxCoprocessorNumber);<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      return setValue(new Bytes(Bytes.toBytes(key)), new Bytes(Bytes.toBytes(specStr)));<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>    }<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span><a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    /**<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>     * Check if the table has an attached co-processor represented by the name<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>     * className<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>     *<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>     * @param classNameToMatch - Class name of the co-processor<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>     * @return true of the table has a co-processor className<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>     */<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    @Override<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    public boolean hasCoprocessor(String classNameToMatch) {<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      return getCoprocessorDescriptors().stream().anyMatch(cp -&gt; cp.getClassName()<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>        .equals(classNameToMatch));<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>    }<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>    /**<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>     * Return the list of attached co-processor represented by their name<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>     * className<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>     *<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>     * @return The list of co-processors classNames<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>     */<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>    @Override<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>    public List&lt;CoprocessorDescriptor&gt; getCoprocessorDescriptors() {<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>      List&lt;CoprocessorDescriptor&gt; result = new ArrayList&lt;&gt;();<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e: getValues().entrySet()) {<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        String key = Bytes.toString(e.getKey().get()).trim();<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>        if (CP_HTD_ATTR_KEY_PATTERN.matcher(key).matches()) {<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>          toCoprocessorDescriptor(Bytes.toString(e.getValue().get()).trim())<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>            .ifPresent(result::add);<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>        }<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>      }<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>      return result;<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>    }<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span><a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>    /**<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>     * Remove a coprocessor from those set on the table<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>     *<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>     * @param className Class name of the co-processor<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>     */<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    public void removeCoprocessor(String className) {<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>      Bytes match = null;<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>      Matcher keyMatcher;<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>      Matcher valueMatcher;<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>      for (Map.Entry&lt;Bytes, Bytes&gt; e : this.values<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>              .entrySet()) {<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>        keyMatcher = CP_HTD_ATTR_KEY_PATTERN.matcher(Bytes.toString(e<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                .getKey().get()));<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (!keyMatcher.matches()) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          continue;<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>        }<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>        valueMatcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(Bytes<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>                .toString(e.getValue().get()));<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>        if (!valueMatcher.matches()) {<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>          continue;<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        }<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>        // get className and compare<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>        String clazz = valueMatcher.group(2).trim(); // classname is the 2nd field<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        // remove the CP if it is present<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        if (clazz.equals(className.trim())) {<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>          match = e.getKey();<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>          break;<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>        }<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      }<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // if we found a match, remove it<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      if (match != null) {<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>        ModifyableTableDescriptor.this.removeValue(match);<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      }<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>    }<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span><a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>    /**<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>     * @return the bytes in pb format<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>     */<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    private byte[] toByteArray() {<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>      return ProtobufUtil.prependPBMagic(ProtobufUtil.toTableSchema(this).toByteArray());<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    }<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span><a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>    /**<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     * @param bytes A pb serialized {@link ModifyableTableDescriptor} instance<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * with pb magic prefix<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     * @return An instance of {@link ModifyableTableDescriptor} made from<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * &lt;code&gt;bytes&lt;/code&gt;<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @throws DeserializationException<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     * @see #toByteArray()<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     */<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    private static TableDescriptor parseFrom(final byte[] bytes)<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>            throws DeserializationException {<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>      if (!ProtobufUtil.isPBMagicPrefix(bytes)) {<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        throw new DeserializationException("Expected PB encoded ModifyableTableDescriptor");<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>      }<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      int pblen = ProtobufUtil.lengthOfPBMagic();<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>      HBaseProtos.TableSchema.Builder builder = HBaseProtos.TableSchema.newBuilder();<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>      try {<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>        ProtobufUtil.mergeFrom(builder, bytes, pblen, bytes.length - pblen);<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>        return ProtobufUtil.toTableDescriptor(builder.build());<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>      } catch (IOException e) {<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>        throw new DeserializationException(e);<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>      }<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>    }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span><a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>    @Override<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    public int getColumnFamilyCount() {<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>      return families.size();<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    }<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span><a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>    @Override<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>    public Optional&lt;String&gt; getRegionServerGroup() {<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      Bytes value = values.get(RSGROUP_KEY);<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>      if (value != null) {<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>        return Optional.of(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      } else {<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>        return Optional.empty();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      }<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    }<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  }<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span><a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>  /**<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>   * This method is mostly intended for internal use. However, it it also relied on by hbase-shell<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>   * for backwards compatibility.<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>   */<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>  private static Optional&lt;CoprocessorDescriptor&gt; toCoprocessorDescriptor(String spec) {<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>    Matcher matcher = CP_HTD_ATTR_VALUE_PATTERN.matcher(spec);<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>    if (matcher.matches()) {<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      // jar file path can be empty if the cp class can be loaded<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      // from class loader.<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      String path = matcher.group(1).trim().isEmpty() ?<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        null : matcher.group(1).trim();<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>      String className = matcher.group(2).trim();<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>      if (className.isEmpty()) {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        return Optional.empty();<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>      }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      String priorityStr = matcher.group(3).trim();<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>      int priority = priorityStr.isEmpty() ?<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        Coprocessor.PRIORITY_USER : Integer.parseInt(priorityStr);<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>      String cfgSpec = null;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>      try {<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>        cfgSpec = matcher.group(4);<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>      } catch (IndexOutOfBoundsException ex) {<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>        // ignore<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      }<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>      Map&lt;String, String&gt; ourConf = new TreeMap&lt;&gt;();<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>      if (cfgSpec != null &amp;&amp; !cfgSpec.trim().equals("|")) {<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>        cfgSpec = cfgSpec.substring(cfgSpec.indexOf('|') + 1);<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>        Matcher m = CP_HTD_ATTR_VALUE_PARAM_PATTERN.matcher(cfgSpec);<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>        while (m.find()) {<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          ourConf.put(m.group(1), m.group(2));<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>        }<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>      }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>      return Optional.of(CoprocessorDescriptorBuilder.newBuilder(className)<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        .setJarPath(path)<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        .setPriority(priority)<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        .setProperties(ourConf)<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>        .build());<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>    }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>    return Optional.empty();<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>  }<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>}<a name="line.1645"></a>
+<span class="sourceLineNo">254</span>      case MEMSTORE_FLUSHSIZE:<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        return PrettyPrinter.Unit.BYTE;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      default:<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        return PrettyPrinter.Unit.NONE;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
+<span class="sourceLineNo">260</span><a name="line.260"></a>
+<span class="sourceLineNo">261</span>  /**<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   *             any more.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @InterfaceAudience.Private<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @Deprecated<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  public final static String NAMESPACE_FAMILY_INFO = "info";<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   *             any more.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   */<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  @InterfaceAudience.Private<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  @Deprecated<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  public final static byte[] NAMESPACE_FAMILY_INFO_BYTES = Bytes.toBytes(NAMESPACE_FAMILY_INFO);<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * @deprecated namespace table has been folded into the ns family in meta table, do not use this<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   *             any more.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   */<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  @InterfaceAudience.Private<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  @Deprecated<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public final static byte[] NAMESPACE_COL_DESC_BYTES = Bytes.toBytes("d");<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  /**<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * &lt;pre&gt;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Pattern that matches a coprocessor specification. Form is:<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * {@code &lt;coprocessor jar file location&gt; '|' &lt;class name&gt; ['|' &lt;priority&gt; ['|' &lt;arguments&gt;]]}<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * where arguments are {@code &lt;KEY&gt; '=' &lt;VALUE&gt; [,...]}<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * For example: {@code hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2}<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * &lt;/pre&gt;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   */<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  private static final Pattern CP_HTD_ATTR_VALUE_PATTERN =<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    Pattern.compile("(^[^\\|]*)\\|([^\\|]+)\\|[\\s]*([\\d]*)[\\s]*(\\|.*)?$");<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN = "[^=,]+";<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  private static final String CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN = "[^,]+";<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  private static final Pattern CP_HTD_ATTR_VALUE_PARAM_PATTERN = Pattern.compile(<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    "(" + CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN + ")=(" +<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN + "),?");<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  private static final Pattern CP_HTD_ATTR_KEY_PATTERN =<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    Pattern.compile("^coprocessor\\$([0-9]+)$", Pattern.CASE_INSENSITIVE);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Table descriptor for namespace table<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @deprecated since 3.0.0 and will be removed in 4.0.0. We have folded the data in namespace<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   *   table into meta table, so do not use it any more.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-21154"&gt;HBASE-21154&lt;/a&gt;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  @Deprecated<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public static final TableDescriptor NAMESPACE_TABLEDESC =<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TableDescriptorBuilder.newBuilder(TableName.NAMESPACE_TABLE_NAME)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(NAMESPACE_FAMILY_INFO_BYTES)<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        // Ten is arbitrary number. Keep versions to help debugging.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        .setMaxVersions(10).setInMemory(true).setBlocksize(8 * 1024)<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        .setScope(HConstants.REPLICATION_SCOPE_LOCAL).build())<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      .build();<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private final ModifyableTableDescriptor desc;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  /**<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @param desc The table descriptor to serialize<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public static byte[] toByteArray(TableDescriptor desc) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    if (desc instanceof ModifyableTableDescriptor) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      return ((ModifyableTableDescriptor) desc).toByteArray();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    return new ModifyableTableDescriptor(desc).toByteArray();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  /**<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * The input should be created by {@link #toByteArray}.<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * @param pbBytes A pb serialized TableDescriptor instance with pb magic prefix<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   * @return This instance serialized with pb with pb magic prefix<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * @throws org.apache.hadoop.hbase.exceptions.DeserializationException<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static TableDescriptor parseFrom(byte[] pbBytes) throws DeserializationException {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    return ModifyableTableDescriptor.parseFrom(pbBytes);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public static TableDescriptorBuilder newBuilder(final TableName name) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    return new TableDescriptorBuilder(name);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  public static TableDescriptor copy(TableDescriptor desc) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return new ModifyableTableDescriptor(desc);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public static TableDescriptor copy(TableName name, TableDescriptor desc) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    return new ModifyableTableDescriptor(name, desc);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * Copy all values, families, and name from the input.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param desc The desciptor to copy<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @return A clone of input<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static TableDescriptorBuilder newBuilder(final TableDescriptor desc) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    return new TableDescriptorBuilder(desc);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  private TableDescriptorBuilder(final TableName name) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    this.desc = new ModifyableTableDescriptor(name);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private TableDescriptorBuilder(final TableDescriptor desc) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    this.desc = new ModifyableTableDescriptor(desc);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public TableDescriptorBuilder setCoprocessor(String className) throws IOException {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    return setCoprocessor(CoprocessorDescriptorBuilder.of(className));<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>  public TableDescriptorBuilder setCoprocessor(CoprocessorDescriptor cpDesc) throws IOException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    desc.setCoprocessor(Objects.requireNonNull(cpDesc));<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return this;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public TableDescriptorBuilder setCoprocessors(Collection&lt;CoprocessorDescriptor&gt; cpDescs)<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    throws IOException {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    for (CoprocessorDescriptor cpDesc : cpDescs) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      desc.setCoprocessor(cpDesc);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return this;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  public boolean hasCoprocessor(String classNameToMatch) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return desc.hasCoprocessor(classNameToMatch);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  public TableDescriptorBuilder setColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    desc.setColumnFamily(Objects.requireNonNull(family));<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    return this;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  public TableDescriptorBuilder setColumnFamilies(<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    final Collection&lt;ColumnFamilyDescriptor&gt; families) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    families.forEach(desc::setColumnFamily);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    return this;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public TableDescriptorBuilder modifyColumnFamily(final ColumnFamilyDescriptor family) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    desc.modifyColumnFamily(Objects.requireNonNull(family));<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    return this;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public TableDescriptorBuilder removeValue(final String key) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    desc.removeValue(key);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    return this;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>  public TableDescriptorBuilder removeValue(Bytes key) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    desc.removeValue(key);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    return this;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>  public TableDescriptorBuilder removeValue(byte[] key) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    desc.removeValue(key);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    return this;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  public TableDescriptorBuilder removeValue(BiPredicate&lt;Bytes, Bytes&gt; predicate) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    List&lt;Bytes&gt; toRemove =<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      desc.getValues().entrySet().stream().filter(e -&gt; predicate.test(e.getKey(), e.getValue()))<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        .map(Map.Entry::getKey).collect(Collectors.toList());<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    for (Bytes key : toRemove) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      removeValue(key);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    return this;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>  public TableDescriptorBuilder removeColumnFamily(final byte[] name) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    desc.removeColumnFamily(name);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return this;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  public TableDescriptorBuilder removeCoprocessor(String className) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    desc.removeCoprocessor(className);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return this;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public TableDescriptorBuilder setCompactionEnabled(final boolean isEnable) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    desc.setCompactionEnabled(isEnable);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    return this;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public TableDescriptorBuilder setSplitEnabled(final boolean isEnable) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    desc.setSplitEnabled(isEnable);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return this;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  public TableDescriptorBuilder setMergeEnabled(final boolean isEnable) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    desc.setMergeEnabled(isEnable);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    return this;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public TableDescriptorBuilder setDurability(Durability durability) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    desc.setDurability(durability);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    return this;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public TableDescriptorBuilder setFlushPolicyClassName(String clazz) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    desc.setFlushPolicyClassName(clazz);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    return this;<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>  public TableDescriptorBuilder setMaxFileSize(long maxFileSize) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    desc.setMaxFileSize(maxFileSize);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    return this;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>  }<a name="line.471"></a>
+<span class="sourceLineNo">472</span><a name="line.472"></a>
+<span class="sourceLineNo">473</span>  public TableDescriptorBuilder setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    desc.setMaxFileSize(maxFileSize);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return this;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public TableDescriptorBuilder setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    desc.setMemStoreFlushSize(memstoreFlushSize);<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    return this;<a name="line.480"></a>
+<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  public TableDescriptorBuilder setMemStoreFlushSize(String memStoreFlushSize)<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    throws HBaseException {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    desc.setMemStoreFlushSize(memStoreFlushSize);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    return this;<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  public TableDescriptorBuilder setNormalizerTargetRegionCount(final int regionCount) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    desc.setNormalizerTargetRegionCount(regionCount);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    return this;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>  public TableDescriptorBuilder setNormalizerTargetRegionSize(final long regionSize) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    desc.setNormalizerTargetRegionSize(regionSize);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    return this;<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public TableDescriptorBuilder setNormalizationEnabled(final boolean isEnable) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    desc.setNormalizationEnabled(isEnable);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    return this;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>  public TableDescriptorBuilder setPriority(int priority) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    desc.setPriority(priority);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    return this;<a name="line.506"></a>
+<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>  public TableDescriptorBuilder setReadOnly(final boolean readOnly) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    desc.setReadOnly(readOnly);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    return this;<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  }<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>  public TableDescriptorBuilder setRegionMemStoreReplication(boolean memstoreReplication) {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    desc.setRegionMemStoreReplication(memstoreReplication);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    return this;<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public TableDescriptorBuilder setRegionReplication(int regionReplication) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    desc.setRegionReplication(regionReplication);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    return this;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>  public TableDescriptorBuilder setRegionSplitPolicyClassName(String clazz) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    desc.setRegionSplitPolicyClassName(clazz);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    return this;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
+<span class="sourceLineNo">528</span><a name="line.528"></a>
+<span class="sourceLineNo">529</span>  public TableDescriptorBuilder setValue(final String key, final String value) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    desc.setValue(key, value);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    return this;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  public TableDescriptorBuilder setValue(final Bytes key, final Bytes value) {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    desc.setValue(key, value);<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    return this;<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  }<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public TableDescriptorBuilder setValue(final byte[] key, final byte[] value) {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    desc.setValue(key, value);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    return this;<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>  public String getValue(String key) {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    return desc.getValue(key);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * Sets replication scope all &amp; only the columns already in the builder. Columns added later won't<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * be backfilled with replication scope.<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param scope replication scope<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @return a TableDescriptorBuilder<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
+<span class="sourceLineNo">554</span>  public TableDescriptorBuilder setReplicationScope(int scope) {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    Map&lt;byte[], ColumnFamilyDescriptor&gt; newFamilies = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    newFamilies.putAll(desc.families);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    newFamilies<a name="line.557"></a>
+<span class="sourceLineNo">558</span>        .forEach((cf, cfDesc) -&gt; {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>          desc.removeColumnFamily(cf);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>          desc.setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(cfDesc).setScope(scope)<a name="line.560"></a>
+<span class="sourceLineNo">561</span>              .build());<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        });<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    return this;<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
+<span class="sourceLineNo">565</span><a name="line.565"></a>
+<span class="sourceLineNo">566</span>  public TableDescriptorBuilder setRegionServerGroup(String group) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    desc.setValue(RSGROUP_KEY, group);<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return this;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  public TableDescriptor build() {<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    return new ModifyableTableDescriptor(desc);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>  }<a name="line.573"></a>
+<span class="sourceLineNo">574</span><a name="line.574"></a>
+<span class="sourceLineNo">575</span>  private static final class ModifyableTableDescriptor<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    implements TableDescriptor, Comparable&lt;ModifyableTableDescriptor&gt; {<a name="line.576"></a>
+<span class="sourceLineNo">577</span><a name="line.577"></a>
+<span class="sourceLineNo">578</span>    private final TableName name;<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>    /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>     * A map which holds the metadata information of the table. This metadata<a name="line.581"></a>
+<span class="sourceLineNo">582</span>     * includes values like IS_META, SPLIT_POLICY, MAX_FILE_SIZE,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>     * READONLY, MEMSTORE_FLUSHSIZE etc...<a name="line.583"></a>
+<span class="sourceLineNo">584</span>     */<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    private final Map&lt;Bytes, Bytes&gt; values = new HashMap&lt;&gt;();<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>    /**<a name="line.587"></a>
+<span class="sourceLineNo">588</span>     * Maps column family name to the respective FamilyDescriptors<a name="line.588"></a>
+<span class="sourceLineNo">589</span>     */<a name="line.589"></a>
+<span class="sourceLineNo">590</span>    private final Map&lt;byte[], ColumnFamilyDescriptor&gt; families<a name="line.590"></a>
+<span class="sourceLineNo">591</span>            = new TreeMap&lt;&gt;(Bytes.BYTES_RAWCOMPARATOR);<a name="line.591"></a>
+<span class="sourceLineNo">592</span><a name="line.592"></a>
+<span class="sourceLineNo">593</span>    /**<a name="line.593"></a>
+<span class="sourceLineNo">594</span>     * Construct a table descriptor specifying a TableName object<a name="line.594"></a>
+<span class="sourceLineNo">595</span>     *<a name="line.595"></a>
+<span class="sourceLineNo">596</span>     * @param name Table name.<a name="line.596"></a>
+<span class="sourceLineNo">597</span>     */<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    private ModifyableTableDescriptor(final TableName name) {<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      this(name, Collections.emptyList(), Collections.emptyMap());<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    }<a name="line.600"></a>
+<span class="sourceLineNo">601</span><a name="line.601"></a>
+<span class="sourceLineNo">602</span>    private ModifyableTableDescriptor(final TableDescriptor desc) {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>      this(desc.getTableName(), Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>    /**<a name="line.606"></a>
+<span class="sourceLineNo">607</span>     * Construct a table descriptor by cloning the descriptor passed as a<a name="line.607"></a>
+<span class="sourceLineNo">608</span>     * parameter.<a name="line.608"></a>
+<span class="sourceLineNo">609</span>     * &lt;p&gt;<a name="line.609"></a>
+<span class="sourceLineNo">610</span>     * Makes a deep copy of the supplied descriptor.<a name="line.610"></a>
+<span class="sourceLineNo">611</span>     * @param name The new name<a name="line.611"></a>
+<span class="sourceLineNo">612</span>     * @param desc The descriptor.<a name="line.612"></a>
+<span class="sourceLineNo">613</span>     */<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    private ModifyableTableDescriptor(final TableName name, final TableDescriptor desc) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      this(name, Arrays.asList(desc.getColumnFamilies()), desc.getValues());<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    }<a name="line.616"></a>
+<span class="sourceLineNo">617</span><a name="line.617"></a>
+<span class="sourceLineNo">618</span>    private ModifyableTableDescriptor(final TableName name, final Collection&lt;ColumnFamilyDescriptor&gt; families,<a name="line.618"></a>
+<span class="sourceLineNo">619</span>            Map&lt;Bytes, Bytes&gt; values) {<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      this.name = name;<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      families.forEach(c -&gt; this.families.put(c.getName(), ColumnFamilyDescriptorBuilder.copy(c)));<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      this.values.putAll(values);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      this.values.put(IS_META_KEY,<a name="line.623"></a>
+<span class="sourceLineNo">624</span>        new Bytes(Bytes.toBytes(Boolean.toString(name.equals(TableName.META_TABLE_NAME)))));<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    }<a name="line.625"></a>
+<span class="sourceLineNo">626</span><a name="line.626"></a>
+<span class="sourceLineNo">627</span>    /**<a name="line.627"></a>
+<span class="sourceLineNo">628</span>     * Checks if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.628"></a>
+<span class="sourceLineNo">629</span>     *<a name="line.629"></a>
+<span class="sourceLineNo">630</span>     * @return true if this table is &lt;code&gt; hbase:meta &lt;/code&gt; region<a name="line.630"></a>
+<span class="sourceLineNo">631</span>     */<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    @Override<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    public boolean isMetaRegion() {<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      return getOrDefault(IS_META_KEY, Boolean::valueOf, false);<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    }<a name="line.635"></a>
+<span class="sourceLineNo">636</span><a name="line.636"></a>
+<span class="sourceLineNo">637</span>    /**<a name="line.637"></a>
+<span class="sourceLineNo">638</span>     * Checks if the table is a &lt;code&gt;hbase:meta&lt;/code&gt; table<a name="line.638"></a>
+<span class="sourceLineNo">639</span>     *<a name="line.639"></a>
+<span class="sourceLineNo">640</span>     * @return true if table is &lt;code&gt; hbase:meta &lt;/code&gt; region.<a name="line.640"></a>
+<span class="sourceLineNo">641</span>     */<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    @Override<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    public boolean isMetaTable() {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      return isMetaRegion();<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    }<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>    @Override<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    public Bytes getValue(Bytes key) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      Bytes rval = values.get(key);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      return rval == null ? null : new Bytes(rval.copyBytes());<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span><a name="line.652"></a>
+<span class="sourceLineNo">653</span>    @Override<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    public String getValue(String key) {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>      Bytes rval = values.get(new Bytes(Bytes.toBytes(key)));<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      return rval == null ? null : Bytes.toString(rval.get(), rval.getOffset(), rval.getLength());<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    }<a name="line.657"></a>
+<span class="sourceLineNo">658</span><a name="line.658"></a>
+<span class="sourceLineNo">659</span>    @Override<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    public byte[] getValue(byte[] key) {<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      Bytes value = values.get(new Bytes(key));<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      return value == null ? null : value.copyBytes();<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    }<a name="line.663"></a>
+<span class="sourceLineNo">664</span><a name="line.664"></a>
+<span class="sourceLineNo">665</span>    private &lt;T&gt; T getOrDefault(Bytes key, Function&lt;String, T&gt; function, T defaultValue) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      Bytes value = values.get(key);<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      if (value == null) {<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        return defaultValue;<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      } else {<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return function.apply(Bytes.toString(value.get(), value.getOffset(), value.getLength()));<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    }<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>    /**<a name="line.674"></a>
+<span class="sourceLineNo">675</span>     * Getter for fetching an unmodifiable {@link #values} map.<a name="line.675"></a>
+<span class="sourceLineNo">676</span>     *<a name="line.676"></a>
+<span class="sourceLineNo">677</span>     * @return unmodifiable map {@link #values}.<a name="line.677"></a>
+<span class="sourceLineNo">678</span>     * @see #values<a name="line.678"></a>
+<span class="sourceLineNo">679</span>     */<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    @Override<a name="line.680"></a>
+<span class="sourceLineNo">681</span>    public Map&lt;Bytes, Bytes&gt; getValues() {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      // shallow pointer copy<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      return Collections.unmodifiableMap(values);<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    }<a name="line.684"></a>
+<span class="sourceLineNo">685</span><a name="line.685"></a>
+<span class="sourceLineNo">686</span>    /**<a name="line.686"></a>
+<span class="sourceLineNo">687</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.687"></a>
+<span class="sourceLineNo">688</span>     *<a name="line.688"></a>
+<span class="sourceLineNo">689</span>     * @param key The key.<a name="line.689"></a>
+<span class="sourceLineNo">690</span>     * @param value The value. If null, removes the setting.<a name="line.690"></a>
+<span class="sourceLineNo">691</span>     * @return the modifyable TD<a name="line.691"></a>
+<span class="sourceLineNo">692</span>     * @see #values<a name="line.692"></a>
+<span class="sourceLineNo">693</span>     */<a name="line.693"></a>
+<span class="sourceLineNo">694</span>    public ModifyableTableDescriptor setValue(byte[] key, byte[] value) {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>      return setValue(toBytesOrNull(key, v -&gt; v),<a name="line.695"></a>
+<span class="sourceLineNo">696</span>              toBytesOrNull(value, v -&gt; v));<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    }<a name="line.697"></a>
+<span class="sourceLineNo">698</span><a name="line.698"></a>
+<span class="sourceLineNo">699</span>    public ModifyableTableDescriptor setValue(String key, String value) {<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      return setValue(toBytesOrNull(key, Bytes::toBytes),<a name="line.700"></a>
+<span class="sourceLineNo">701</span>              toBytesOrNull(value, Bytes::toBytes));<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    }<a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>    /*<a name="line.704"></a>
+<span class="sourceLineNo">705</span>     * @param key The key.<a name="line.705"></a>
+<span class="sourceLineNo">706</span>     * @param value The value. If null, removes the setting.<a name="line.706"></a>
+<span class="sourceLineNo">707</span>     */<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    private ModifyableTableDescriptor setValue(final Bytes key,<a name="line.708"></a>
+<span class="sourceLineNo">709</span>            final String value) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      return setValue(key, toBytesOrNull(value, Bytes::toBytes));<a name="line.710"></a>
+<span class="sourceLineNo">711</span>    }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>    /*<a name="line.713"></a>
+<span class="sourceLineNo">714</span>     * Setter for storing metadata as a (key, value) pair in {@link #values} map<a name="line.714"></a>
+<span class="sourceLineNo">715</span>     *<a name="line.715"></a>
+<span class="sourceLineNo">716</span>     * @param key The key.<a name="line.716"></a>
+<span class="sourceLineNo">717</span>     * @param value The value. If null, removes the setting.<a name="line.717"></a>
+<span class="sourceLineNo">718</span>     */<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    public ModifyableTableDescriptor setValue(final Bytes key, final Bytes value) {<a name="line.719"></a>
+<span class="sourceLineNo">720</span>      if (value == null) {<a name="line.720"></a>
+<span class="sourceLineNo">721</span>        values.remove(key);<a name="line.721"></a>
+<span class="sourceLineNo">722</span>      } else {<a name="line.722"></a>
+<span class="sourceLineNo">723</span>        values.put(key, value);<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      }<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      return this;<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    }<a name="line.726"></a>
+<span class="sourceLineNo">727</span><a name="line.727"></a>
+<span class="sourceLineNo">728</span>    private static &lt;T&gt; Bytes toBytesOrNull(T t, Function&lt;T, byte[]&gt; f) {<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      if (t == null) {<a name="line.729"></a>
+<span class="sourceLineNo">730</span>        return null;<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      } else {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>        return new Bytes(f.apply(t));<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      }<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    }<a name="line.734"></a>
+<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">736</span>    /**<a name="line.736"></a>
+<span class="sourceLineNo">737</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.737"></a>
+<span class="sourceLineNo">738</span>     *<a name="line.738"></a>
+<span class="sourceLineNo">739</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.739"></a>
+<span class="sourceLineNo">740</span>     * parameters.<a name="line.740"></a>
+<span class="sourceLineNo">741</span>     * @return the modifyable TD<a name="line.741"></a>
+<span class="sourceLineNo">742</span>     */<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    public ModifyableTableDescriptor removeValue(final String key) {<a name="line.743"></a>
+<span class="sourceLineNo">744</span>      return setValue(key, (String) null);<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    }<a name="line.745"></a>
+<span class="sourceLineNo">746</span><a name="line.746"></a>
+<span class="sourceLineNo">747</span>    /**<a name="line.747"></a>
+<span class="sourceLineNo">748</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.748"></a>
+<span class="sourceLineNo">749</span>     *<a name="line.749"></a>
+<span class="sourceLineNo">750</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.750"></a>
+<span class="sourceLineNo">751</span>     * parameters.<a name="line.751"></a>
+<span class="sourceLineNo">752</span>     * @return the modifyable TD<a name="line.752"></a>
+<span class="sourceLineNo">753</span>     */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    public ModifyableTableDescriptor removeValue(Bytes key) {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      return setValue(key, (Bytes) null);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    }<a name="line.756"></a>
+<span class="sourceLineNo">757</span><a name="line.757"></a>
+<span class="sourceLineNo">758</span>    /**<a name="line.758"></a>
+<span class="sourceLineNo">759</span>     * Remove metadata represented by the key from the {@link #values} map<a name="line.759"></a>
+<span class="sourceLineNo">760</span>     *<a name="line.760"></a>
+<span class="sourceLineNo">761</span>     * @param key Key whose key and value we're to remove from TableDescriptor<a name="line.761"></a>
+<span class="sourceLineNo">762</span>     * parameters.<a name="line.762"></a>
+<span class="sourceLineNo">763</span>     * @return the modifyable TD<a name="line.763"></a>
+<span class="sourceLineNo">764</span>     */<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    public ModifyableTableDescriptor removeValue(final byte[] key) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span>      return removeValue(new Bytes(key));<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    }<a name="line.767"></a>
+<span class="sourceLineNo">768</span><a name="line.768"></a>
+<span class="sourceLineNo">769</span>    /**<a name="line.769"></a>
+<span class="sourceLineNo">770</span>     * Check if the readOnly flag of the table is set. If the readOnly flag is<a name="line.770"></a>
+<span class="sourceLineNo">771</span>     * set then the contents of the table can only be read from but not<a name="line.771"></a>
+<span class="sourceLineNo">772</span>     * modified.<a name="line.772"></a>
+<span class="sourceLineNo">773</span>     *<a name="line.773"></a>
+<span class="sourceLineNo">774</span>     * @return true if all columns in the table should be read only<a name="line.774"></a>
+<span class="sourceLineNo">775</span>     */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    @Override<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    public boolean isReadOnly() {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      return getOrDefault(READONLY_KEY, Boolean::valueOf, DEFAULT_READONLY);<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    }<a name="line.779"></a>
+<span class="sourceLineNo">780</span><a name="line.780"></a>
+<span class="sourceLineNo">781</span>    /**<a name="line.781"></a>
+<span class="sourceLineNo">782</span>     * Setting the table as read only sets all the columns in the table as read<a name="line.782"></a>
+<span class="sourceLineNo">783</span>     * only. By default all tables are modifiable, but if the readOnly flag is<a name="line.783"></a>
+<span class="sourceLineNo">784</span>     * set to true then the contents of the table can only be read but not<a name="line.784"></a>
+<span class="sourceLineNo">785</span>     * modified.<a name="line.785"></a>
+<span class="sourceLineNo">786</span>     *<a name="line.786"></a>
+<span class="sourceLineNo">787</span>     * @param readOnly True if all of the columns in the table should be read<a name="line.787"></a>
+<span class="sourceLineNo">788</span>     * only.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>     * @return the modifyable TD<a name="line.789"></a>
+<span class="sourceLineNo">790</span>     */<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    public ModifyableTableDescriptor setReadOnly(final boolean readOnly) {<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      return setValue(READONLY_KEY, Boolean.toString(readOnly));<a name="line.792"></a>
+<span class="sourceLineNo">793</span>    }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>    /**<a name="line.795"></a>
+<span class="sourceLineNo">796</span>     * Check if the compaction enable flag of the table is true. If flag is<a name="line.796"></a>
+<span class="sourceLineNo">797</span>     * false then no minor/major compactions will be done in real.<a name="line.797"></a>
+<span class="sourceLineNo">798</span>     *<a name="line.798"></a>
+<span class="sourceLineNo">799</span>     * @return true if table compaction enabled<a name="line.799"></a>
+<span class="sourceLineNo">800</span>     */<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    @Override<a name="line.801"></a>
+<span class="sourceLineNo">802</span>    public boolean isCompactionEnabled() {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>      return getOrDefault(COMPACTION_ENABLED_KEY, Boolean::valueOf, DEFAULT_COMPACTION_ENABLED);<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    }<a name="line.804"></a>
+<span class="sourceLineNo">805</span><a name="line.805"></a>
+<span class="sourceLineNo">806</span>    /**<a name="line.806"></a>
+<span class="sourceLineNo">807</span>     * Setting the table compaction enable flag.<a name="line.807"></a>
+<span class="sourceLineNo">808</span>     *<a name="line.808"></a>
+<span class="sourceLineNo">809</span>     * @param isEnable True if enable compaction.<a name="line.809"></a>
+<span class="sourceLineNo">810</span>     * @return the modifyable TD<a name="line.810"></a>
+<span class="sourceLineNo">811</span>     */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    public ModifyableTableDescriptor setCompactionEnabled(final boolean isEnable) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      return setValue(COMPACTION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    }<a name="line.814"></a>
+<span class="sourceLineNo">815</span><a name="line.815"></a>
+<span class="sourceLineNo">816</span>    /**<a name="line.816"></a>
+<span class="sourceLineNo">817</span>     * Check if the split enable flag of the table is true. If flag is false then no split will be<a name="line.817"></a>
+<span class="sourceLineNo">818</span>     * done.<a name="line.818"></a>
+<span class="sourceLineNo">819</span>     *<a name="line.819"></a>
+<span class="sourceLineNo">820</span>     * @return true if table region split enabled<a name="line.820"></a>
+<span class="sourceLineNo">821</span>     */<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    @Override<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    public boolean isSplitEnabled() {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>      return getOrDefault(SPLIT_ENABLED_KEY, Boolean::valueOf, DEFAULT_SPLIT_ENABLED);<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    }<a name="line.825"></a>
+<span class="sourceLineNo">826</span><a name="line.826"></a>
+<span class="sourceLineNo">827</span>    /**<a name="line.827"></a>
+<span class="sourceLineNo">828</span>     * Setting the table region split enable flag.<a name="line.828"></a>
+<span class="sourceLineNo">829</span>     * @param isEnable True if enable region split.<a name="line.829"></a>
+<span class="sourceLineNo">830</span>     *<a name="line.830"></a>
+<span class="sourceLineNo">831</span>     * @return the modifyable TD<a name="line.831"></a>
+<span class="sourceLineNo">832</span>     */<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    public ModifyableTableDescriptor setSplitEnabled(final boolean isEnable) {<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      return setValue(SPLIT_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span>    /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span>     * Check if the region merge enable flag of the table is true. If flag is false then no merge<a name="line.838"></a>
+<span class="sourceLineNo">839</span>     * will be done.<a name="line.839"></a>
+<span class="sourceLineNo">840</span>     *<a name="line.840"></a>
+<span class="sourceLineNo">841</span>     * @return true if table region merge enabled<a name="line.841"></a>
+<span class="sourceLineNo">842</span>     */<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    @Override<a name="line.843"></a>
+<span class="sourceLineNo">844</span>    public boolean isMergeEnabled() {<a name="line.844"></a>
+<span class="sourceLineNo">845</span>      return getOrDefault(MERGE_ENABLED_KEY, Boolean::valueOf, DEFAULT_MERGE_ENABLED);<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    }<a name="line.846"></a>
+<span class="sourceLineNo">847</span><a name="line.847"></a>
+<span class="sourceLineNo">848</span>    /**<a name="line.848"></a>
+<span class="sourceLineNo">849</span>     * Setting the table region merge enable flag.<a name="line.849"></a>
+<span class="sourceLineNo">850</span>     * @param isEnable True if enable region merge.<a name="line.850"></a>
+<span class="sourceLineNo">851</span>     *<a name="line.851"></a>
+<span class="sourceLineNo">852</span>     * @return the modifyable TD<a name="line.852"></a>
+<span class="sourceLineNo">853</span>     */<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    public ModifyableTableDescriptor setMergeEnabled(final boolean isEnable) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      return setValue(MERGE_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>    /**<a name="line.858"></a>
+<span class="sourceLineNo">859</span>     * Check if normalization enable flag of the table is true. If flag is false<a name="line.859"></a>
+<span class="sourceLineNo">860</span>     * then no region normalizer won't attempt to normalize this table.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>     *<a name="line.861"></a>
+<span class="sourceLineNo">862</span>     * @return true if region normalization is enabled for this table<a name="line.862"></a>
+<span class="sourceLineNo">863</span>     */<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    @Override<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    public boolean isNormalizationEnabled() {<a name="line.865"></a>
+<span class="sourceLineNo">866</span>      return getOrDefault(NORMALIZATION_ENABLED_KEY, Boolean::valueOf, DEFAULT_NORMALIZATION_ENABLED);<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    }<a name="line.867"></a>
+<span class="sourceLineNo">868</span><a name="line.868"></a>
+<span class="sourceLineNo">869</span>    /**<a name="line.869"></a>
+<span class="sourceLineNo">870</span>     * Check if there is the target region count. If so, the normalize plan will be calculated based<a name="line.870"></a>
+<span class="sourceLineNo">871</span>     * on the target region count.<a name="line.871"></a>
+<span class="sourceLineNo">872</span>     * @return target region count after normalize done<a name="line.872"></a>
+<span class="sourceLineNo">873</span>     */<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    @Override<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    public int getNormalizerTargetRegionCount() {<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      return getOrDefault(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer::valueOf,<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        Integer.valueOf(-1));<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    }<a name="line.878"></a>
+<span class="sourceLineNo">879</span><a name="line.879"></a>
+<span class="sourceLineNo">880</span>    /**<a name="line.880"></a>
+<span class="sourceLineNo">881</span>     * Check if there is the target region size. If so, the normalize plan will be calculated based<a name="line.881"></a>
+<span class="sourceLineNo">882</span>     * on the target region size.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>     * @return target region size after normalize done<a name="line.883"></a>
+<span class="sourceLineNo">884</span>     */<a name="line.884"></a>
+<span class="sourceLineNo">885</span>    @Override<a name="line.885"></a>
+<span class="sourceLineNo">886</span>    public long getNormalizerTargetRegionSize() {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      return getOrDefault(NORMALIZER_TARGET_REGION_SIZE_KEY, Long::valueOf, Long.valueOf(-1));<a name="line.887"></a>
+<span class="sourceLineNo">888</span>    }<a name="line.888"></a>
+<span class="sourceLineNo">889</span><a name="line.889"></a>
+<span class="sourceLineNo">890</span>    /**<a name="line.890"></a>
+<span class="sourceLineNo">891</span>     * Setting the table normalization enable flag.<a name="line.891"></a>
+<span class="sourceLineNo">892</span>     *<a name="line.892"></a>
+<span class="sourceLineNo">893</span>     * @param isEnable True if enable normalization.<a name="line.893"></a>
+<span class="sourceLineNo">894</span>     * @return the modifyable TD<a name="line.894"></a>
+<span class="sourceLineNo">895</span>     */<a name="line.895"></a>
+<span class="sourceLineNo">896</span>    public ModifyableTableDescriptor setNormalizationEnabled(final boolean isEnable) {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      return setValue(NORMALIZATION_ENABLED_KEY, Boolean.toString(isEnable));<a name="line.897"></a>
+<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
+<span class="sourceLineNo">899</span><a name="line.899"></a>
+<span class="sourceLineNo">900</span>    /**<a name="line.900"></a>
+<span class="sourceLineNo">901</span>     * Setting the target region count of table normalization .<a name="line.901"></a>
+<span class="sourceLineNo">902</span>     * @param regionCount the target region count.<a name="line.902"></a>
+<span class="sourceLineNo">903</span>     * @return the modifyable TD<a name="line.903"></a>
+<span class="sourceLineNo">904</span>     */<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    public ModifyableTableDescriptor setNormalizerTargetRegionCount(final int regionCount) {<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      return setValue(NORMALIZER_TARGET_REGION_COUNT_KEY, Integer.toString(regionCount));<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    }<a name="line.907"></a>
+<span class="sourceLineNo">908</span><a name="line.908"></a>
+<span class="sourceLineNo">909</span>    /**<a name="line.909"></a>
+<span class="sourceLineNo">910</span>     * Setting the target region size of table normalization.<a name="line.910"></a>
+<span class="sourceLineNo">911</span>     * @param regionSize the target region size.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>     * @return the modifyable TD<a name="line.912"></a>
+<span class="sourceLineNo">913</span>     */<a name="line.913"></a>
+<span class="sourceLineNo">914</span>    public ModifyableTableDescriptor setNormalizerTargetRegionSize(final long regionSize) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      return setValue(NORMALIZER_TARGET_REGION_SIZE_KEY, Long.toString(regionSize));<a name="line.915"></a>
+<span class="sourceLineNo">916</span>    }<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span>    /**<a name="line.918"></a>
+<span class="sourceLineNo">919</span>     * Sets the {@link Durability} setting for the table. This defaults to<a name="line.919"></a>
+<span class="sourceLineNo">920</span>     * Durability.USE_DEFAULT.<a name="line.920"></a>
+<span class="sourceLineNo">921</span>     *<a name="line.921"></a>
+<span class="sourceLineNo">922</span>     * @param durability enum value<a name="line.922"></a>
+<span class="sourceLineNo">923</span>     * @return the modifyable TD<a name="line.923"></a>
+<span class="sourceLineNo">924</span>     */<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    public ModifyableTableDescriptor setDurability(Durability durability) {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>      return setValue(DURABILITY_KEY, durability.name());<a name="line.926"></a>
+<span class="sourceLineNo">927</span>    }<a name="line.927"></a>
+<span class="sourceLineNo">928</span><a name="line.928"></a>
+<span class="sourceLineNo">929</span>    /**<a name="line.929"></a>
+<span class="sourceLineNo">930</span>     * Returns the durability setting for the table.<a name="line.930"></a>
+<span class="sourceLineNo">931</span>     *<a name="line.931"></a>
+<span class="sourceLineNo">932</span>     * @return durability setting for the table.<a name="line.932"></a>
+<span class="sourceLineNo">933</span>     */<a name="line.933"></a>
+<span class="sourceLineNo">934</span>    @Override<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    public Durability getDurability() {<a name="line.935"></a>
+<span class="sourceLineNo">936</span>      return getOrDefault(DURABILITY_KEY, Durability::valueOf, DEFAULT_DURABLITY);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    }<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>    /**<a name="line.939"></a>
+<span class="sourceLineNo">940</span>     * Get the name of the table<a name="line.940"></a>
+<span class="sourceLineNo">941</span>     *<a name="line.941"></a>
+<span class="sourceLineNo">942</span>     * @return TableName<a name="line.942"></a>
+<span class="sourceLineNo">943</span>     */<a name="line.943"></a>
+<span class="sourceLineNo">944</span>    @Override<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    public TableName getTableName() {<a name="line.945"></a>
+<span class="sourceLineNo">946</span>      return name;<a name="line.946"></a>
+<span class="sourceLineNo">947</span>    }<a name="line.947"></a>
+<span class="sourceLineNo">948</span><a name="line.948"></a>
+<span class="sourceLineNo">949</span>    /**<a name="line.949"></a>
+<span class="sourceLineNo">950</span>     * This sets the class associated with the region split policy which<a name="line.950"></a>
+<span class="sourceLineNo">951</span>     * determines when a region split should occur. The class used by default is<a name="line.951"></a>
+<span class="sourceLineNo">952</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.952"></a>
+<span class="sourceLineNo">953</span>     *<a name="line.953"></a>
+<span class="sourceLineNo">954</span>     * @param clazz the class name<a name="line.954"></a>
+<span class="sourceLineNo">955</span>     * @return the modifyable TD<a name="line.955"></a>
+<span class="sourceLineNo">956</span>     */<a name="line.956"></a>
+<span class="sourceLineNo">957</span>    public ModifyableTableDescriptor setRegionSplitPolicyClassName(String clazz) {<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      return setValue(SPLIT_POLICY_KEY, clazz);<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    }<a name="line.959"></a>
+<span class="sourceLineNo">960</span><a name="line.960"></a>
+<span class="sourceLineNo">961</span>    /**<a name="line.961"></a>
+<span class="sourceLineNo">962</span>     * This gets the class associated with the region split policy which<a name="line.962"></a>
+<span class="sourceLineNo">963</span>     * determines when a region split should occur. The class used by default is<a name="line.963"></a>
+<span class="sourceLineNo">964</span>     * defined in org.apache.hadoop.hbase.regionserver.RegionSplitPolicy<a name="line.964"></a>
+<span class="sourceLineNo">965</span>     *<a name="line.965"></a>
+<span class="sourceLineNo">966</span>     * @return the class name of the region split policy for this table. If this<a name="line.966"></a>
+<span class="sourceLineNo">967</span>     * returns null, the default split policy is used.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>     */<a name="line.968"></a>
+<span class="sourceLineNo">969</span>    @Override<a name="line.969"></a>
+<span class="sourceLineNo">970</span>    public String getRegionSplitPolicyClassName() {<a name="line.970"></a>
+<span class="sourceLineNo">971</span>      return getOrDefault(SPLIT_POLICY_KEY, Function.identity(), null);<a name="line.971"></a>
+<span class="sourceLineNo">972</span>    }<a name="line.972"></a>
+<span class="sourceLineNo">973</span><a name="line.973"></a>
+<span class="sourceLineNo">974</span>    /**<a name="line.974"></a>
+<span class="sourceLineNo">975</span>     * Returns the maximum size upto which a region can grow to after which a<a name="line.975"></a>
+<span class="sourceLineNo">976</span>     * region split is triggered. The region size is represented by the size of<a name="line.976"></a>
+<span class="sourceLineNo">977</span>     * the biggest store file in that region.<a name="line.977"></a>
+<span class="sourceLineNo">978</span>     *<a name="line.978"></a>
+<span class="sourceLineNo">979</span>     * @return max hregion size for table, -1 if not set.<a name="line.979"></a>
+<span class="sourceLineNo">980</span>     *<a name="line.980"></a>
+<span class="sourceLineNo">981</span>     * @see #setMaxFileSize(long)<a name="line.981"></a>
+<span class="sourceLineNo">982</span>     */<a name="line.982"></a>
+<span class="sourceLineNo">983</span>    @Override<a name="line.983"></a>
+<span class="sourceLineNo">984</span>    public long getMaxFileSize() {<a name="line.984"></a>
+<span class="sourceLineNo">985</span>      return getOrDefault(MAX_FILESIZE_KEY, Long::valueOf, (long) -1);<a name="line.985"></a>
+<span class="sourceLineNo">986</span>    }<a name="line.986"></a>
+<span class="sourceLineNo">987</span><a name="line.987"></a>
+<span class="sourceLineNo">988</span>    /**<a name="line.988"></a>
+<span class="sourceLineNo">989</span>     * Sets the maximum size upto which a region can grow to after which a<a name="line.989"></a>
+<span class="sourceLineNo">990</span>     * region split is triggered. The region size is represented by the size of<a name="line.990"></a>
+<span class="sourceLineNo">991</span>     * the biggest store file in that region, i.e. If the biggest store file<a name="line.991"></a>
+<span class="sourceLineNo">992</span>     * grows beyond the maxFileSize, then the region split is triggered. This<a name="line.992"></a>
+<span class="sourceLineNo">993</span>     * defaults to a value of 256 MB.<a name="line.993"></a>
+<span class="sourceLineNo">994</span>     * &lt;p&gt;<a name="line.994"></a>
+<span class="sourceLineNo">995</span>     * This is not an absolute value and might vary. Assume that a single row<a name="line.995"></a>
+<span class="sourceLineNo">996</span>     * exceeds the maxFileSize then the storeFileSize will be greater than<a name="line.996"></a>
+<span class="sourceLineNo">997</span>     * maxFileSize since a single row cannot be split across multiple regions<a name="line.997"></a>
+<span class="sourceLineNo">998</span>     * &lt;/p&gt;<a name="line.998"></a>
+<span class="sourceLineNo">999</span>     *<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>     * @param maxFileSize The maximum file size that a store file can grow to<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>     * before a split is triggered.<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>     * @return the modifyable TD<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>     */<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    public ModifyableTableDescriptor setMaxFileSize(long maxFileSize) {<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      return setValue(MAX_FILESIZE_KEY, Long.toString(maxFileSize));<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    }<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span><a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    public ModifyableTableDescriptor setMaxFileSize(String maxFileSize) throws HBaseException {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>      return setMaxFileSize(Long.parseLong(PrettyPrinter.<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        valueOf(maxFileSize, PrettyPrinter.Unit.BYTE)));<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>    }<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span><a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>    /**<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>     * Returns the size of the memstore after which a flush to filesystem is<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>     * triggered.<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>     *<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>     * @return memory cache flush size for each hregion, -1 if not set.<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>     *<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>     * @see #setMemStoreFlushSize(long)<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>     */<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    @Override<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    public long getMemStoreFlushSize() {<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>      return getOrDefault(MEMSTORE_FLUSHSIZE_KEY, Long::valueOf, (long) -1);<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    }<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span><a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>    /**<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>     * Represents the maximum size of the memstore after which the contents of<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>     * the memstore are flushed to the filesystem. This defaults to a size of 64<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>     * MB.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>     *<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>     * @param memstoreFlushSize memory cache flush size for each hregion<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>     * @return the modifyable TD<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>     */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    public ModifyableTableDescriptor setMemStoreFlushSize(long memstoreFlushSize) {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return setValue(MEMSTORE_FLUSHSIZE_KEY, Long.toString(memstoreFlushSize));<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>    public ModifyableTableDescriptor setMemStoreFlushSize(String memStoreFlushSize)<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      throws HBaseException {<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>      return setMemStoreFlushSize(Long.parseLong(PrettyPrinter.valueOf(memStoreFlushSize,<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>        PrettyPrinter.Unit.BYTE)));<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>    }<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span><a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>    /**<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>     * This sets the class associated with the flush policy which determines<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>     * determines the stores need to be flushed when flushing a region. The<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>     * class used by default is defined in<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>     * org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>     *<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>     * @param clazz the class name<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>     * @return the modifyable TD<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>     */<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>    public ModifyableTableDescriptor setFlushPolicyClassName(String clazz) {<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>      return setValue(FLUSH_POLICY_KEY, clazz);<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>    }<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span><a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    /**<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>     * This gets the class associated with the flush policy which determines the<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>     * stores need to be flushed when flushing a region. The class used by<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>     * default is defined in org.apache.hadoop.hbase.regionserver.FlushPolicy.<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>     *<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>     * @return the class name of the flush policy for this table. If this<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>     * returns null, the default flush policy is used.<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>     */<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>    @Override<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    public String getFlushPolicyClassName() {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>      return getOrDefault(FLUSH_POLICY_KEY, Function.identity(), null);<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    /**<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>     * Adds a column family. For the updating purpose please use<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>     * {@link #modifyColumnFamily(ColumnFamilyDescriptor)} instead.<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>     *<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>     * @param family to add.<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>     * @return the modifyable TD<a name="line.1075"></a>
... 3762 lines suppressed ...