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 2017/09/18 15:13:08 UTC

[01/30] hbase-site git commit: Published site at .

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site d0a296b6a -> 2bb8bd01c


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html
index 4869eb5..6d71e47 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html
@@ -844,243 +844,228 @@
 <span class="sourceLineNo">836</span>      }<a name="line.836"></a>
 <span class="sourceLineNo">837</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.837"></a>
 <span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>    // preMerge<a name="line.839"></a>
+<span class="sourceLineNo">839</span>    // preRollWALWriterRequest<a name="line.839"></a>
 <span class="sourceLineNo">840</span>    verifyAllowed(new AccessTestAction() {<a name="line.840"></a>
 <span class="sourceLineNo">841</span>      @Override<a name="line.841"></a>
 <span class="sourceLineNo">842</span>      public Object run() throws Exception {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        HTableDescriptor htd = new HTableDescriptor(TEST_TABLE.getTableName());<a name="line.843"></a>
-<span class="sourceLineNo">844</span>        Region region_a = mock(Region.class);<a name="line.844"></a>
-<span class="sourceLineNo">845</span>        when(region_a.getTableDescriptor()).thenReturn(htd);<a name="line.845"></a>
-<span class="sourceLineNo">846</span>        Region region_b = mock(Region.class);<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        when(region_b.getTableDescriptor()).thenReturn(htd);<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        ACCESS_CONTROLLER.preMerge(ObserverContext.createAndPrepare(RSCP_ENV, null), region_a,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>          region_b);<a name="line.849"></a>
-<span class="sourceLineNo">850</span>        return null;<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // preRollWALWriterRequest<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    verifyAllowed(new AccessTestAction() {<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      @Override<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      public Object run() throws Exception {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        ACCESS_CONTROLLER.preRollWALWriterRequest(ObserverContext.createAndPrepare(RSCP_ENV,<a name="line.858"></a>
-<span class="sourceLineNo">859</span>          null));<a name="line.859"></a>
+<span class="sourceLineNo">843</span>        ACCESS_CONTROLLER.preRollWALWriterRequest(ObserverContext.createAndPrepare(RSCP_ENV,<a name="line.843"></a>
+<span class="sourceLineNo">844</span>          null));<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        return null;<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      }<a name="line.846"></a>
+<span class="sourceLineNo">847</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.847"></a>
+<span class="sourceLineNo">848</span><a name="line.848"></a>
+<span class="sourceLineNo">849</span>  }<a name="line.849"></a>
+<span class="sourceLineNo">850</span><a name="line.850"></a>
+<span class="sourceLineNo">851</span>  /** Test region observer */<a name="line.851"></a>
+<span class="sourceLineNo">852</span>  @Test<a name="line.852"></a>
+<span class="sourceLineNo">853</span>  public void testPassiveRegionOperations() throws Exception {<a name="line.853"></a>
+<span class="sourceLineNo">854</span><a name="line.854"></a>
+<span class="sourceLineNo">855</span>    // preOpen<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    verifyAllowed(new AccessTestAction() {<a name="line.856"></a>
+<span class="sourceLineNo">857</span>      @Override<a name="line.857"></a>
+<span class="sourceLineNo">858</span>      public Object run() throws Exception {<a name="line.858"></a>
+<span class="sourceLineNo">859</span>        ACCESS_CONTROLLER.preOpen(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.859"></a>
 <span class="sourceLineNo">860</span>        return null;<a name="line.860"></a>
 <span class="sourceLineNo">861</span>      }<a name="line.861"></a>
 <span class="sourceLineNo">862</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.862"></a>
 <span class="sourceLineNo">863</span><a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /** Test region observer */<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  @Test<a name="line.867"></a>
-<span class="sourceLineNo">868</span>  public void testPassiveRegionOperations() throws Exception {<a name="line.868"></a>
-<span class="sourceLineNo">869</span><a name="line.869"></a>
-<span class="sourceLineNo">870</span>    // preOpen<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    verifyAllowed(new AccessTestAction() {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>      @Override<a name="line.872"></a>
-<span class="sourceLineNo">873</span>      public Object run() throws Exception {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>        ACCESS_CONTROLLER.preOpen(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.874"></a>
-<span class="sourceLineNo">875</span>        return null;<a name="line.875"></a>
-<span class="sourceLineNo">876</span>      }<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    // preFlush<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    verifyAllowed(new AccessTestAction() {<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      @Override<a name="line.881"></a>
-<span class="sourceLineNo">882</span>      public Object run() throws Exception {<a name="line.882"></a>
-<span class="sourceLineNo">883</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.883"></a>
-<span class="sourceLineNo">884</span>        return null;<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      }<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>    // preGetOp<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    verifyAllowed(new AccessTestAction() {<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      @Override<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      public Object run() throws Exception {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        List&lt;Cell&gt; cells = Lists.newArrayList();<a name="line.892"></a>
-<span class="sourceLineNo">893</span>        ACCESS_CONTROLLER.preGetOp(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.893"></a>
-<span class="sourceLineNo">894</span>          new Get(TEST_ROW), cells);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        return null;<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.897"></a>
-<span class="sourceLineNo">898</span><a name="line.898"></a>
-<span class="sourceLineNo">899</span>    // preExists<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    verifyAllowed(new AccessTestAction() {<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      @Override<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      public Object run() throws Exception {<a name="line.902"></a>
-<span class="sourceLineNo">903</span>        ACCESS_CONTROLLER.preExists(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.903"></a>
-<span class="sourceLineNo">904</span>          new Get(TEST_ROW), true);<a name="line.904"></a>
-<span class="sourceLineNo">905</span>        return null;<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      }<a name="line.906"></a>
-<span class="sourceLineNo">907</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.907"></a>
-<span class="sourceLineNo">908</span><a name="line.908"></a>
-<span class="sourceLineNo">909</span>    // prePut<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    verifyAllowed(new AccessTestAction() {<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      @Override<a name="line.911"></a>
-<span class="sourceLineNo">912</span>      public Object run() throws Exception {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>        ACCESS_CONTROLLER.prePut(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.913"></a>
-<span class="sourceLineNo">914</span>          new Put(TEST_ROW), new WALEdit(), Durability.USE_DEFAULT);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>        return null;<a name="line.915"></a>
-<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.917"></a>
-<span class="sourceLineNo">918</span><a name="line.918"></a>
-<span class="sourceLineNo">919</span>    // preDelete<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    verifyAllowed(new AccessTestAction() {<a name="line.920"></a>
-<span class="sourceLineNo">921</span>      @Override<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      public Object run() throws Exception {<a name="line.922"></a>
-<span class="sourceLineNo">923</span>        ACCESS_CONTROLLER.preDelete(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.923"></a>
-<span class="sourceLineNo">924</span>          new Delete(TEST_ROW), new WALEdit(), Durability.USE_DEFAULT);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>        return null;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>      }<a name="line.926"></a>
-<span class="sourceLineNo">927</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.927"></a>
-<span class="sourceLineNo">928</span><a name="line.928"></a>
-<span class="sourceLineNo">929</span>    // preBatchMutate<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    verifyAllowed(new AccessTestAction() {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>      @Override<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      public Object run() throws Exception {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        ACCESS_CONTROLLER.preBatchMutate(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.933"></a>
-<span class="sourceLineNo">934</span>          new MiniBatchOperationInProgress&lt;&gt;(null, null, null, 0, 0));<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        return null;<a name="line.935"></a>
-<span class="sourceLineNo">936</span>      }<a name="line.936"></a>
-<span class="sourceLineNo">937</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.937"></a>
-<span class="sourceLineNo">938</span><a name="line.938"></a>
-<span class="sourceLineNo">939</span>    // preCheckAndPut<a name="line.939"></a>
-<span class="sourceLineNo">940</span>    verifyAllowed(new AccessTestAction() {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      @Override<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      public Object run() throws Exception {<a name="line.942"></a>
-<span class="sourceLineNo">943</span>        ACCESS_CONTROLLER.preCheckAndPut(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.943"></a>
-<span class="sourceLineNo">944</span>          TEST_ROW, TEST_FAMILY, TEST_Q1, CompareOperator.EQUAL,<a name="line.944"></a>
-<span class="sourceLineNo">945</span>          new BinaryComparator("foo".getBytes()), new Put(TEST_ROW), true);<a name="line.945"></a>
-<span class="sourceLineNo">946</span>        return null;<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      }<a name="line.947"></a>
-<span class="sourceLineNo">948</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.948"></a>
-<span class="sourceLineNo">949</span><a name="line.949"></a>
-<span class="sourceLineNo">950</span>    // preCheckAndDelete<a name="line.950"></a>
-<span class="sourceLineNo">951</span>    verifyAllowed(new AccessTestAction() {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      @Override<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      public Object run() throws Exception {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>        ACCESS_CONTROLLER.preCheckAndDelete(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.954"></a>
-<span class="sourceLineNo">955</span>          TEST_ROW, TEST_FAMILY, TEST_Q1, CompareOperator.EQUAL,<a name="line.955"></a>
-<span class="sourceLineNo">956</span>          new BinaryComparator("foo".getBytes()), new Delete(TEST_ROW), true);<a name="line.956"></a>
-<span class="sourceLineNo">957</span>        return null;<a name="line.957"></a>
-<span class="sourceLineNo">958</span>      }<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>    // preAppend<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    verifyAllowed(new AccessTestAction() {<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      @Override<a name="line.963"></a>
-<span class="sourceLineNo">964</span>      public Object run() throws Exception {<a name="line.964"></a>
-<span class="sourceLineNo">965</span>        ACCESS_CONTROLLER.preAppend(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.965"></a>
-<span class="sourceLineNo">966</span>          new Append(TEST_ROW));<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        return null;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.969"></a>
-<span class="sourceLineNo">970</span><a name="line.970"></a>
-<span class="sourceLineNo">971</span>    // preIncrement<a name="line.971"></a>
-<span class="sourceLineNo">972</span>    verifyAllowed(new AccessTestAction() {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>      @Override<a name="line.973"></a>
-<span class="sourceLineNo">974</span>      public Object run() throws Exception {<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        ACCESS_CONTROLLER.preIncrement(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.975"></a>
-<span class="sourceLineNo">976</span>          new Increment(TEST_ROW));<a name="line.976"></a>
-<span class="sourceLineNo">977</span>        return null;<a name="line.977"></a>
-<span class="sourceLineNo">978</span>      }<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.979"></a>
-<span class="sourceLineNo">980</span><a name="line.980"></a>
-<span class="sourceLineNo">981</span>    // preScannerOpen<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    verifyAllowed(new AccessTestAction() {<a name="line.982"></a>
-<span class="sourceLineNo">983</span>      @Override<a name="line.983"></a>
-<span class="sourceLineNo">984</span>      public Object run() throws Exception {<a name="line.984"></a>
-<span class="sourceLineNo">985</span>        ACCESS_CONTROLLER.preScannerOpen(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.985"></a>
-<span class="sourceLineNo">986</span>          new Scan(), mock(RegionScanner.class));<a name="line.986"></a>
-<span class="sourceLineNo">987</span>        return null;<a name="line.987"></a>
-<span class="sourceLineNo">988</span>      }<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.989"></a>
-<span class="sourceLineNo">990</span><a name="line.990"></a>
-<span class="sourceLineNo">991</span>    // preBulkLoadHFile<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    verifyAllowed(new AccessTestAction() {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      @Override<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      public Object run() throws Exception {<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        List&lt;Pair&lt;byte[], String&gt;&gt; paths = Lists.newArrayList();<a name="line.995"></a>
-<span class="sourceLineNo">996</span>        ACCESS_CONTROLLER.preBulkLoadHFile(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.996"></a>
-<span class="sourceLineNo">997</span>          paths);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>        return null;<a name="line.998"></a>
-<span class="sourceLineNo">999</span>      }<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span><a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>  }<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span><a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>  @Test<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>  public void testPassiveCellPermissions() throws Exception {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>    final Configuration conf = TEST_UTIL.getConfiguration();<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span><a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>    // store two sets of values, one store with a cell level ACL, and one without<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>    verifyAllowed(new AccessTestAction() {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>      @Override<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      public Object run() throws Exception {<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>        try(Connection connection = ConnectionFactory.createConnection(conf);<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>            Table t = connection.getTable(TEST_TABLE.getTableName())) {<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>          Put p;<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>          // with ro ACL<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>          p = new Put(TEST_ROW).addColumn(TEST_FAMILY, TEST_Q1, ZERO);<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>          p.setACL(USER_NONE.getShortName(), new Permission(Action.READ));<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>          t.put(p);<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>          // with rw ACL<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>          p = new Put(TEST_ROW).addColumn(TEST_FAMILY, TEST_Q2, ZERO);<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>          p.setACL(USER_NONE.getShortName(), new Permission(Action.READ, Action.WRITE));<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>          t.put(p);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>          // no ACL<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>          p = new Put(TEST_ROW)<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>              .addColumn(TEST_FAMILY, TEST_Q3, ZERO)<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>              .addColumn(TEST_FAMILY, TEST_Q4, ZERO);<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>          t.put(p);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>        }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        return null;<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    }, USER_OWNER);<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span><a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    // check that a scan over the test data returns the expected number of KVs<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    final List&lt;Cell&gt; scanResults = Lists.newArrayList();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span><a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>      @Override<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      public List&lt;Cell&gt; run() throws Exception {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        Scan scan = new Scan();<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>        scan.setStartRow(TEST_ROW);<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>        scan.setStopRow(Bytes.add(TEST_ROW, new byte[]{ 0 } ));<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>        scan.addFamily(TEST_FAMILY);<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>        Connection connection = ConnectionFactory.createConnection(conf);<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>        Table t = connection.getTable(TEST_TABLE.getTableName());<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>        try {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>          ResultScanner scanner = t.getScanner(scan);<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>          Result result = null;<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>          do {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>            result = scanner.next();<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>            if (result != null) {<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>              scanResults.addAll(result.listCells());<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>            }<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>          } while (result != null);<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>        } finally {<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>          t.close();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>          connection.close();<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>        }<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>        return scanResults;<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      }<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>    };<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span><a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    // owner will see all values<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    scanResults.clear();<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    verifyAllowed(scanAction, USER_OWNER);<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>    assertEquals(4, scanResults.size());<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span><a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>    // other user will also see 4 values<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>    // if cell filtering was active, we would only see 2 values<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>    scanResults.clear();<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>    verifyAllowed(scanAction, USER_NONE);<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    assertEquals(4, scanResults.size());<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>  }<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span><a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>}<a name="line.1075"></a>
+<span class="sourceLineNo">864</span>    // preFlush<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    verifyAllowed(new AccessTestAction() {<a name="line.865"></a>
+<span class="sourceLineNo">866</span>      @Override<a name="line.866"></a>
+<span class="sourceLineNo">867</span>      public Object run() throws Exception {<a name="line.867"></a>
+<span class="sourceLineNo">868</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.868"></a>
+<span class="sourceLineNo">869</span>        return null;<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      }<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>    // preGetOp<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    verifyAllowed(new AccessTestAction() {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>      @Override<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      public Object run() throws Exception {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        List&lt;Cell&gt; cells = Lists.newArrayList();<a name="line.877"></a>
+<span class="sourceLineNo">878</span>        ACCESS_CONTROLLER.preGetOp(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.878"></a>
+<span class="sourceLineNo">879</span>          new Get(TEST_ROW), cells);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>        return null;<a name="line.880"></a>
+<span class="sourceLineNo">881</span>      }<a name="line.881"></a>
+<span class="sourceLineNo">882</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.882"></a>
+<span class="sourceLineNo">883</span><a name="line.883"></a>
+<span class="sourceLineNo">884</span>    // preExists<a name="line.884"></a>
+<span class="sourceLineNo">885</span>    verifyAllowed(new AccessTestAction() {<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      @Override<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      public Object run() throws Exception {<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        ACCESS_CONTROLLER.preExists(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.888"></a>
+<span class="sourceLineNo">889</span>          new Get(TEST_ROW), true);<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        return null;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.892"></a>
+<span class="sourceLineNo">893</span><a name="line.893"></a>
+<span class="sourceLineNo">894</span>    // prePut<a name="line.894"></a>
+<span class="sourceLineNo">895</span>    verifyAllowed(new AccessTestAction() {<a name="line.895"></a>
+<span class="sourceLineNo">896</span>      @Override<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      public Object run() throws Exception {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>        ACCESS_CONTROLLER.prePut(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.898"></a>
+<span class="sourceLineNo">899</span>          new Put(TEST_ROW), new WALEdit(), Durability.USE_DEFAULT);<a name="line.899"></a>
+<span class="sourceLineNo">900</span>        return null;<a name="line.900"></a>
+<span class="sourceLineNo">901</span>      }<a name="line.901"></a>
+<span class="sourceLineNo">902</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.902"></a>
+<span class="sourceLineNo">903</span><a name="line.903"></a>
+<span class="sourceLineNo">904</span>    // preDelete<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    verifyAllowed(new AccessTestAction() {<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      @Override<a name="line.906"></a>
+<span class="sourceLineNo">907</span>      public Object run() throws Exception {<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        ACCESS_CONTROLLER.preDelete(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.908"></a>
+<span class="sourceLineNo">909</span>          new Delete(TEST_ROW), new WALEdit(), Durability.USE_DEFAULT);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>        return null;<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      }<a name="line.911"></a>
+<span class="sourceLineNo">912</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.912"></a>
+<span class="sourceLineNo">913</span><a name="line.913"></a>
+<span class="sourceLineNo">914</span>    // preBatchMutate<a name="line.914"></a>
+<span class="sourceLineNo">915</span>    verifyAllowed(new AccessTestAction() {<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      @Override<a name="line.916"></a>
+<span class="sourceLineNo">917</span>      public Object run() throws Exception {<a name="line.917"></a>
+<span class="sourceLineNo">918</span>        ACCESS_CONTROLLER.preBatchMutate(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.918"></a>
+<span class="sourceLineNo">919</span>          new MiniBatchOperationInProgress&lt;&gt;(null, null, null, 0, 0));<a name="line.919"></a>
+<span class="sourceLineNo">920</span>        return null;<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      }<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.922"></a>
+<span class="sourceLineNo">923</span><a name="line.923"></a>
+<span class="sourceLineNo">924</span>    // preCheckAndPut<a name="line.924"></a>
+<span class="sourceLineNo">925</span>    verifyAllowed(new AccessTestAction() {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>      @Override<a name="line.926"></a>
+<span class="sourceLineNo">927</span>      public Object run() throws Exception {<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        ACCESS_CONTROLLER.preCheckAndPut(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.928"></a>
+<span class="sourceLineNo">929</span>          TEST_ROW, TEST_FAMILY, TEST_Q1, CompareOperator.EQUAL,<a name="line.929"></a>
+<span class="sourceLineNo">930</span>          new BinaryComparator("foo".getBytes()), new Put(TEST_ROW), true);<a name="line.930"></a>
+<span class="sourceLineNo">931</span>        return null;<a name="line.931"></a>
+<span class="sourceLineNo">932</span>      }<a name="line.932"></a>
+<span class="sourceLineNo">933</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.933"></a>
+<span class="sourceLineNo">934</span><a name="line.934"></a>
+<span class="sourceLineNo">935</span>    // preCheckAndDelete<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    verifyAllowed(new AccessTestAction() {<a name="line.936"></a>
+<span class="sourceLineNo">937</span>      @Override<a name="line.937"></a>
+<span class="sourceLineNo">938</span>      public Object run() throws Exception {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>        ACCESS_CONTROLLER.preCheckAndDelete(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.939"></a>
+<span class="sourceLineNo">940</span>          TEST_ROW, TEST_FAMILY, TEST_Q1, CompareOperator.EQUAL,<a name="line.940"></a>
+<span class="sourceLineNo">941</span>          new BinaryComparator("foo".getBytes()), new Delete(TEST_ROW), true);<a name="line.941"></a>
+<span class="sourceLineNo">942</span>        return null;<a name="line.942"></a>
+<span class="sourceLineNo">943</span>      }<a name="line.943"></a>
+<span class="sourceLineNo">944</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.944"></a>
+<span class="sourceLineNo">945</span><a name="line.945"></a>
+<span class="sourceLineNo">946</span>    // preAppend<a name="line.946"></a>
+<span class="sourceLineNo">947</span>    verifyAllowed(new AccessTestAction() {<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      @Override<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      public Object run() throws Exception {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        ACCESS_CONTROLLER.preAppend(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.950"></a>
+<span class="sourceLineNo">951</span>          new Append(TEST_ROW));<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        return null;<a name="line.952"></a>
+<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
+<span class="sourceLineNo">954</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.954"></a>
+<span class="sourceLineNo">955</span><a name="line.955"></a>
+<span class="sourceLineNo">956</span>    // preIncrement<a name="line.956"></a>
+<span class="sourceLineNo">957</span>    verifyAllowed(new AccessTestAction() {<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      @Override<a name="line.958"></a>
+<span class="sourceLineNo">959</span>      public Object run() throws Exception {<a name="line.959"></a>
+<span class="sourceLineNo">960</span>        ACCESS_CONTROLLER.preIncrement(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.960"></a>
+<span class="sourceLineNo">961</span>          new Increment(TEST_ROW));<a name="line.961"></a>
+<span class="sourceLineNo">962</span>        return null;<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      }<a name="line.963"></a>
+<span class="sourceLineNo">964</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.964"></a>
+<span class="sourceLineNo">965</span><a name="line.965"></a>
+<span class="sourceLineNo">966</span>    // preScannerOpen<a name="line.966"></a>
+<span class="sourceLineNo">967</span>    verifyAllowed(new AccessTestAction() {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>      @Override<a name="line.968"></a>
+<span class="sourceLineNo">969</span>      public Object run() throws Exception {<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        ACCESS_CONTROLLER.preScannerOpen(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.970"></a>
+<span class="sourceLineNo">971</span>          new Scan(), mock(RegionScanner.class));<a name="line.971"></a>
+<span class="sourceLineNo">972</span>        return null;<a name="line.972"></a>
+<span class="sourceLineNo">973</span>      }<a name="line.973"></a>
+<span class="sourceLineNo">974</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<a name="line.974"></a>
+<span class="sourceLineNo">975</span><a name="line.975"></a>
+<span class="sourceLineNo">976</span>    // preBulkLoadHFile<a name="line.976"></a>
+<span class="sourceLineNo">977</span>    verifyAllowed(new AccessTestAction() {<a name="line.977"></a>
+<span class="sourceLineNo">978</span>      @Override<a name="line.978"></a>
+<span class="sourceLineNo">979</span>      public Object run() throws Exception {<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        List&lt;Pair&lt;byte[], String&gt;&gt; paths = Lists.newArrayList();<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        ACCESS_CONTROLLER.preBulkLoadHFile(ObserverContext.createAndPrepare(RCP_ENV, null),<a name="line.981"></a>
+<span class="sourceLineNo">982</span>          paths);<a name="line.982"></a>
+<span class="sourceLineNo">983</span>        return null;<a name="line.983"></a>
+<span class="sourceLineNo">984</span>      }<a name="line.984"></a>
+<span class="sourceLineNo">985</span>    }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE);<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>  @Test<a name="line.989"></a>
+<span class="sourceLineNo">990</span>  public void testPassiveCellPermissions() throws Exception {<a name="line.990"></a>
+<span class="sourceLineNo">991</span>    final Configuration conf = TEST_UTIL.getConfiguration();<a name="line.991"></a>
+<span class="sourceLineNo">992</span><a name="line.992"></a>
+<span class="sourceLineNo">993</span>    // store two sets of values, one store with a cell level ACL, and one without<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    verifyAllowed(new AccessTestAction() {<a name="line.994"></a>
+<span class="sourceLineNo">995</span>      @Override<a name="line.995"></a>
+<span class="sourceLineNo">996</span>      public Object run() throws Exception {<a name="line.996"></a>
+<span class="sourceLineNo">997</span>        try(Connection connection = ConnectionFactory.createConnection(conf);<a name="line.997"></a>
+<span class="sourceLineNo">998</span>            Table t = connection.getTable(TEST_TABLE.getTableName())) {<a name="line.998"></a>
+<span class="sourceLineNo">999</span>          Put p;<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>          // with ro ACL<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>          p = new Put(TEST_ROW).addColumn(TEST_FAMILY, TEST_Q1, ZERO);<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>          p.setACL(USER_NONE.getShortName(), new Permission(Action.READ));<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>          t.put(p);<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>          // with rw ACL<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>          p = new Put(TEST_ROW).addColumn(TEST_FAMILY, TEST_Q2, ZERO);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>          p.setACL(USER_NONE.getShortName(), new Permission(Action.READ, Action.WRITE));<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>          t.put(p);<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>          // no ACL<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>          p = new Put(TEST_ROW)<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>              .addColumn(TEST_FAMILY, TEST_Q3, ZERO)<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>              .addColumn(TEST_FAMILY, TEST_Q4, ZERO);<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>          t.put(p);<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>        }<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>        return null;<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>      }<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>    }, USER_OWNER);<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span><a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>    // check that a scan over the test data returns the expected number of KVs<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span><a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>    final List&lt;Cell&gt; scanResults = Lists.newArrayList();<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span><a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>      @Override<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>      public List&lt;Cell&gt; run() throws Exception {<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>        Scan scan = new Scan();<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>        scan.setStartRow(TEST_ROW);<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>        scan.setStopRow(Bytes.add(TEST_ROW, new byte[]{ 0 } ));<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>        scan.addFamily(TEST_FAMILY);<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>        Connection connection = ConnectionFactory.createConnection(conf);<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>        Table t = connection.getTable(TEST_TABLE.getTableName());<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>        try {<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>          ResultScanner scanner = t.getScanner(scan);<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>          Result result = null;<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>          do {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>            result = scanner.next();<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>            if (result != null) {<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>              scanResults.addAll(result.listCells());<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>            }<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>          } while (result != null);<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>        } finally {<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>          t.close();<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          connection.close();<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>        }<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>        return scanResults;<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>      }<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>    };<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span><a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>    // owner will see all values<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>    scanResults.clear();<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>    verifyAllowed(scanAction, USER_OWNER);<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>    assertEquals(4, scanResults.size());<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span><a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>    // other user will also see 4 values<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>    // if cell filtering was active, we would only see 2 values<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>    scanResults.clear();<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    verifyAllowed(scanAction, USER_NONE);<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    assertEquals(4, scanResults.size());<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>  }<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span><a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>}<a name="line.1060"></a>
 
 
 


[14/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
index 60246b7..a01f1ae 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
index 1d21aa4..61340d5 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
index 67ba257..473fbf4 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
index c998456..4967fa6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
index 4e0361a..e402a6f 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
index a01c169..3d2a763 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -529,7 +529,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/index.html b/hbase-build-configuration/hbase-archetypes/index.html
index 92837cd..e33132d 100644
--- a/hbase-build-configuration/hbase-archetypes/index.html
+++ b/hbase-build-configuration/hbase-archetypes/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -135,7 +135,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/integration.html b/hbase-build-configuration/hbase-archetypes/integration.html
index 0c86674..78120b7 100644
--- a/hbase-build-configuration/hbase-archetypes/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/issue-tracking.html
index b972de6..9aaad36 100644
--- a/hbase-build-configuration/hbase-archetypes/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/license.html b/hbase-build-configuration/hbase-archetypes/license.html
index b35ac27..d86cc31 100644
--- a/hbase-build-configuration/hbase-archetypes/license.html
+++ b/hbase-build-configuration/hbase-archetypes/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/mail-lists.html b/hbase-build-configuration/hbase-archetypes/mail-lists.html
index 9261f25..5a11b87 100644
--- a/hbase-build-configuration/hbase-archetypes/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugin-management.html b/hbase-build-configuration/hbase-archetypes/plugin-management.html
index 71ac99e..aa72f11 100644
--- a/hbase-build-configuration/hbase-archetypes/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugins.html b/hbase-build-configuration/hbase-archetypes/plugins.html
index d3f6b61..2743571 100644
--- a/hbase-build-configuration/hbase-archetypes/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-info.html b/hbase-build-configuration/hbase-archetypes/project-info.html
index 477abde..159662f 100644
--- a/hbase-build-configuration/hbase-archetypes/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-summary.html b/hbase-build-configuration/hbase-archetypes/project-summary.html
index d410aeb..cf270ae 100644
--- a/hbase-build-configuration/hbase-archetypes/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/source-repository.html b/hbase-build-configuration/hbase-archetypes/source-repository.html
index 2fd9eb5..ed696df 100644
--- a/hbase-build-configuration/hbase-archetypes/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/team-list.html b/hbase-build-configuration/hbase-archetypes/team-list.html
index 7db0ee9..c8d549c 100644
--- a/hbase-build-configuration/hbase-archetypes/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -529,7 +529,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/checkstyle.html b/hbase-build-configuration/hbase-spark/checkstyle.html
index 60ea261..169be37 100644
--- a/hbase-build-configuration/hbase-spark/checkstyle.html
+++ b/hbase-build-configuration/hbase-spark/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -418,7 +418,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependencies.html b/hbase-build-configuration/hbase-spark/dependencies.html
index 4b57473..e4b34db 100644
--- a/hbase-build-configuration/hbase-spark/dependencies.html
+++ b/hbase-build-configuration/hbase-spark/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -5737,7 +5737,7 @@ file comparators, endian transformation classes, and much more.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-convergence.html b/hbase-build-configuration/hbase-spark/dependency-convergence.html
index 81a5c28..0dad3b6 100644
--- a/hbase-build-configuration/hbase-spark/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-spark/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -650,7 +650,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-info.html b/hbase-build-configuration/hbase-spark/dependency-info.html
index c26db9b..9e3e98d 100644
--- a/hbase-build-configuration/hbase-spark/dependency-info.html
+++ b/hbase-build-configuration/hbase-spark/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-management.html b/hbase-build-configuration/hbase-spark/dependency-management.html
index 2a12217..2ab9f9c 100644
--- a/hbase-build-configuration/hbase-spark/dependency-management.html
+++ b/hbase-build-configuration/hbase-spark/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -772,7 +772,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/index.html b/hbase-build-configuration/hbase-spark/index.html
index ab1da3e..a7690bf 100644
--- a/hbase-build-configuration/hbase-spark/index.html
+++ b/hbase-build-configuration/hbase-spark/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/integration.html b/hbase-build-configuration/hbase-spark/integration.html
index ebeb432..744a40c 100644
--- a/hbase-build-configuration/hbase-spark/integration.html
+++ b/hbase-build-configuration/hbase-spark/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/issue-tracking.html b/hbase-build-configuration/hbase-spark/issue-tracking.html
index 8b5b57c..2cbb16a 100644
--- a/hbase-build-configuration/hbase-spark/issue-tracking.html
+++ b/hbase-build-configuration/hbase-spark/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/license.html b/hbase-build-configuration/hbase-spark/license.html
index fea1d46..603d9df 100644
--- a/hbase-build-configuration/hbase-spark/license.html
+++ b/hbase-build-configuration/hbase-spark/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/mail-lists.html b/hbase-build-configuration/hbase-spark/mail-lists.html
index 5c2a3d0..cc64996 100644
--- a/hbase-build-configuration/hbase-spark/mail-lists.html
+++ b/hbase-build-configuration/hbase-spark/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugin-management.html b/hbase-build-configuration/hbase-spark/plugin-management.html
index a84d2c6..fa487aa 100644
--- a/hbase-build-configuration/hbase-spark/plugin-management.html
+++ b/hbase-build-configuration/hbase-spark/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugins.html b/hbase-build-configuration/hbase-spark/plugins.html
index ff306c5..6be2985 100644
--- a/hbase-build-configuration/hbase-spark/plugins.html
+++ b/hbase-build-configuration/hbase-spark/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -238,7 +238,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-info.html b/hbase-build-configuration/hbase-spark/project-info.html
index 8d5453f..24260b0 100644
--- a/hbase-build-configuration/hbase-spark/project-info.html
+++ b/hbase-build-configuration/hbase-spark/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-reports.html b/hbase-build-configuration/hbase-spark/project-reports.html
index ef7f5a5..a84200f 100644
--- a/hbase-build-configuration/hbase-spark/project-reports.html
+++ b/hbase-build-configuration/hbase-spark/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -131,7 +131,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-summary.html b/hbase-build-configuration/hbase-spark/project-summary.html
index 53d313a..7dd2c0b 100644
--- a/hbase-build-configuration/hbase-spark/project-summary.html
+++ b/hbase-build-configuration/hbase-spark/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/source-repository.html b/hbase-build-configuration/hbase-spark/source-repository.html
index 409bf9d..8e64913 100644
--- a/hbase-build-configuration/hbase-spark/source-repository.html
+++ b/hbase-build-configuration/hbase-spark/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-spark/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/team-list.html b/hbase-build-configuration/hbase-spark/team-list.html
index 876ec25..7837246 100644
--- a/hbase-build-configuration/hbase-spark/team-list.html
+++ b/hbase-build-configuration/hbase-spark/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -529,7 +529,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/index.html b/hbase-build-configuration/index.html
index ee1ebbf..1190070 100644
--- a/hbase-build-configuration/index.html
+++ b/hbase-build-configuration/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/integration.html b/hbase-build-configuration/integration.html
index 538e5fd..4a5b3e2 100644
--- a/hbase-build-configuration/integration.html
+++ b/hbase-build-configuration/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/issue-tracking.html b/hbase-build-configuration/issue-tracking.html
index 6edd443..9d5d19f 100644
--- a/hbase-build-configuration/issue-tracking.html
+++ b/hbase-build-configuration/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/license.html b/hbase-build-configuration/license.html
index ccd1ffa..3e9c3d0 100644
--- a/hbase-build-configuration/license.html
+++ b/hbase-build-configuration/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -111,209 +111,7 @@
 <h2><a name="Project_Licenses"></a>Project Licenses</h2><a name="Project_Licenses"></a>
 <div class="section">
 <h3><a name="Apache_License_Version_2.0"></a>Apache License, Version 2.0</h3><a name="Apache_License_Version_2.0"></a>
-<div class="source"><pre class="prettyprint">
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      &quot;control&quot; means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      &quot;Source&quot; form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      &quot;Object&quot; form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      &quot;Work&quot; shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      &quot;Contribution&quot; shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
-
-      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same &quot;printed page&quot; as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-</pre></div></div></div>
+<p>Can't read the url [https://www.apache.org/licenses/LICENSE-2.0.txt] : Read timed out</p></div></div>
                   </div>
           </div>
 
@@ -326,7 +124,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/mail-lists.html b/hbase-build-configuration/mail-lists.html
index a8a58c9..0d18035 100644
--- a/hbase-build-configuration/mail-lists.html
+++ b/hbase-build-configuration/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugin-management.html b/hbase-build-configuration/plugin-management.html
index 8c54714..82bc105 100644
--- a/hbase-build-configuration/plugin-management.html
+++ b/hbase-build-configuration/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugins.html b/hbase-build-configuration/plugins.html
index 182a5d9..4f32465 100644
--- a/hbase-build-configuration/plugins.html
+++ b/hbase-build-configuration/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-info.html b/hbase-build-configuration/project-info.html
index 6ddf5e8..f6a62f6 100644
--- a/hbase-build-configuration/project-info.html
+++ b/hbase-build-configuration/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-summary.html b/hbase-build-configuration/project-summary.html
index 92739ff..2acfcaf 100644
--- a/hbase-build-configuration/project-summary.html
+++ b/hbase-build-configuration/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/source-repository.html b/hbase-build-configuration/source-repository.html
index 270a07e..0ad56a2 100644
--- a/hbase-build-configuration/source-repository.html
+++ b/hbase-build-configuration/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/team-list.html b/hbase-build-configuration/team-list.html
index 081de0e..1568cf5 100644
--- a/hbase-build-configuration/team-list.html
+++ b/hbase-build-configuration/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -529,7 +529,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/checkstyle.html b/hbase-shaded-check-invariants/checkstyle.html
index 19df3bc..32b9345 100644
--- a/hbase-shaded-check-invariants/checkstyle.html
+++ b/hbase-shaded-check-invariants/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependencies.html b/hbase-shaded-check-invariants/dependencies.html
index eedb11c..d0fc1bf 100644
--- a/hbase-shaded-check-invariants/dependencies.html
+++ b/hbase-shaded-check-invariants/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -2744,7 +2744,7 @@ Jackson JSON processor's data binding functionality.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-convergence.html b/hbase-shaded-check-invariants/dependency-convergence.html
index d709b34..0339482 100644
--- a/hbase-shaded-check-invariants/dependency-convergence.html
+++ b/hbase-shaded-check-invariants/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -650,7 +650,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-info.html b/hbase-shaded-check-invariants/dependency-info.html
index 65db289..1a44999 100644
--- a/hbase-shaded-check-invariants/dependency-info.html
+++ b/hbase-shaded-check-invariants/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-management.html b/hbase-shaded-check-invariants/dependency-management.html
index f3654e0..30afb9a 100644
--- a/hbase-shaded-check-invariants/dependency-management.html
+++ b/hbase-shaded-check-invariants/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -772,7 +772,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/index.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/index.html b/hbase-shaded-check-invariants/index.html
index 8ace20e..88d79ed 100644
--- a/hbase-shaded-check-invariants/index.html
+++ b/hbase-shaded-check-invariants/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -122,7 +122,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/integration.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/integration.html b/hbase-shaded-check-invariants/integration.html
index daa5d30..1d2a06a 100644
--- a/hbase-shaded-check-invariants/integration.html
+++ b/hbase-shaded-check-invariants/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/issue-tracking.html b/hbase-shaded-check-invariants/issue-tracking.html
index 844c7ae..ec7b9c2 100644
--- a/hbase-shaded-check-invariants/issue-tracking.html
+++ b/hbase-shaded-check-invariants/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/license.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/license.html b/hbase-shaded-check-invariants/license.html
index 5a3c351..9981966 100644
--- a/hbase-shaded-check-invariants/license.html
+++ b/hbase-shaded-check-invariants/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/mail-lists.html b/hbase-shaded-check-invariants/mail-lists.html
index 9a22758..a87a606 100644
--- a/hbase-shaded-check-invariants/mail-lists.html
+++ b/hbase-shaded-check-invariants/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugin-management.html b/hbase-shaded-check-invariants/plugin-management.html
index 7495ff7..ca849b8 100644
--- a/hbase-shaded-check-invariants/plugin-management.html
+++ b/hbase-shaded-check-invariants/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugins.html b/hbase-shaded-check-invariants/plugins.html
index d94d8f8..ffbfd1e 100644
--- a/hbase-shaded-check-invariants/plugins.html
+++ b/hbase-shaded-check-invariants/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 


[19/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html
index 36f4c8d..ec36d2e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html
@@ -38,395 +38,326 @@
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.CoprocessorEnvironment;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.MetaMutationAnnotation;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.User;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.49"></a>
-<span class="sourceLineNo">050</span>@InterfaceStability.Evolving<a name="line.50"></a>
-<span class="sourceLineNo">051</span>public class RegionServerCoprocessorHost extends<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.52"></a>
+<span class="sourceLineNo">033</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.User;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.47"></a>
+<span class="sourceLineNo">048</span>@InterfaceStability.Evolving<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class RegionServerCoprocessorHost extends<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.52"></a>
 <span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.54"></a>
+<span class="sourceLineNo">054</span>  private RegionServerServices rsServices;<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private RegionServerServices rsServices;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      Configuration conf) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    super(rsServices);<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    this.rsServices = rsServices;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    this.conf = conf;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    LOG.info("Table coprocessor loading is " +<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      sequence, conf, this.rsServices);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public void preStop(String message, User user) throws IOException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // coprocessor should be cleaned up.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      public void call(RegionServerObserver oserver,<a name="line.88"></a>
-<span class="sourceLineNo">089</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        oserver.preStopRegionServer(ctx);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      @Override<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        // invoke coprocessor stop method<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        shutdown(env);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      }<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    });<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public boolean preMerge(final HRegion regionA, final HRegion regionB, final User user) throws IOException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      @Override<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      public void call(RegionServerObserver oserver,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        oserver.preMerge(ctx, regionA, regionB);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      }<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    });<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public void postMerge(final HRegion regionA, final HRegion regionB, final HRegion mergedRegion,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>                        final User user)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      throws IOException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      @Override<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      public void call(RegionServerObserver oserver,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        oserver.postMerge(ctx, regionA, regionB, mergedRegion);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    });<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public boolean preMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      final @MetaMutationAnnotation List&lt;Mutation&gt; metaEntries, final User user)<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      throws IOException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      public void call(RegionServerObserver oserver,<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        oserver.preMergeCommit(ctx, regionA, regionB, metaEntries);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    });<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public void postMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      final HRegion mergedRegion, final User user) throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      @Override<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      public void call(RegionServerObserver oserver,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        oserver.postMergeCommit(ctx, regionA, regionB, mergedRegion);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    });<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public void preRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      throws IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      public void call(RegionServerObserver oserver,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        oserver.preRollBackMerge(ctx, regionA, regionB);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    });<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  public void postRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      throws IOException {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      public void call(RegionServerObserver oserver,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        oserver.postRollBackMerge(ctx, regionA, regionB);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      }<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    });<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      @Override<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      public void call(RegionServerObserver oserver,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    });<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      @Override<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      public void call(RegionServerObserver oserver,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    });<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
+<span class="sourceLineNo">056</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      Configuration conf) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    super(rsServices);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    this.rsServices = rsServices;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    this.conf = conf;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    LOG.info("Table coprocessor loading is " +<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      sequence, conf, this.rsServices);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public void preStop(String message, User user) throws IOException {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    // coprocessor should be cleaned up.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      public void call(RegionServerObserver oserver,<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        oserver.preStopRegionServer(ctx);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      }<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        // invoke coprocessor stop method<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        shutdown(env);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    });<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      @Override<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      public void call(RegionServerObserver oserver,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    });<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      @Override<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      public void call(RegionServerObserver oserver,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    });<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      throws IOException {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      public void call(RegionServerObserver oserver,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    });<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      throws IOException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      public void call(RegionServerObserver oserver,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    });<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      throws IOException {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          public void call(RegionServerObserver oserver,<a name="line.145"></a>
+<span class="sourceLineNo">146</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        });<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public void preClearCompactionQueues() throws IOException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      public void call(RegionServerObserver oserver,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        oserver.preClearCompactionQueues(ctx);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    });<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public void postClearCompactionQueues() throws IOException {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      public void call(RegionServerObserver oserver,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        oserver.postClearCompactionQueues(ctx);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    });<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    if (ctx == null)<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      return defaultValue;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    ctx.setResult(defaultValue);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    execOperation(ctx);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    return ctx.getResult();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private static abstract class CoprocessorOperation<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    public CoprocessorOperation() {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      this(RpcServer.getRequestUser());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
 <span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      @Override<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      public void call(RegionServerObserver oserver,<a name="line.191"></a>
-<span class="sourceLineNo">192</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    });<a name="line.195"></a>
+<span class="sourceLineNo">187</span>    public CoprocessorOperation(User user) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      super(user);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public abstract void call(RegionServerObserver oserver,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
 <span class="sourceLineNo">196</span>  }<a name="line.196"></a>
 <span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      throws IOException {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      @Override<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      public void call(RegionServerObserver oserver,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    });<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      throws IOException {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          @Override<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          public void call(RegionServerObserver oserver,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>          }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        });<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  public void preClearCompactionQueues() throws IOException {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      @Override<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      public void call(RegionServerObserver oserver,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        oserver.preClearCompactionQueues(ctx);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    });<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public void postClearCompactionQueues() throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public void call(RegionServerObserver oserver,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        oserver.postClearCompactionQueues(ctx);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    });<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (ctx == null)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return defaultValue;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    ctx.setResult(defaultValue);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    execOperation(ctx);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    return ctx.getResult();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  private static abstract class CoprocessorOperation<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public CoprocessorOperation() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      this(RpcServer.getRequestUser());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public CoprocessorOperation(User user) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(user);<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>    public abstract void call(RegionServerObserver oserver,<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    private T result = null;<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public void setResult(final T result) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.result = result;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public T getResult() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return this.result;<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (ctx == null) return false;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    boolean bypass = false;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      RegionServerEnvironment env = envs.get(i);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        ctx.prepare(env);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        Thread currentThread = Thread.currentThread();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        try {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        } catch (Throwable e) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          handleCoprocessorThrowable(env, e);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        } finally {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          currentThread.setContextClassLoader(cl);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        bypass |= ctx.shouldBypass();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        if (ctx.shouldComplete()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          break;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      ctx.postEnvCall(env);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return bypass;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * RegionServer stop. (Refer:<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param ctx CoprocessorOperation<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @throws IOException<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (ctx == null) return false;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    boolean bypass = false;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    int envsSize = envs.size();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      RegionServerEnvironment env = envs.get(i);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        ctx.prepare(env);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        Thread currentThread = Thread.currentThread();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        try {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        } catch (Throwable e) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          handleCoprocessorThrowable(env, e);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        } finally {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>          currentThread.setContextClassLoader(cl);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        bypass |= ctx.shouldBypass();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        if (ctx.shouldComplete()) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          break;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">198</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    private T result = null;<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    public void setResult(final T result) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      this.result = result;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public T getResult() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return this.result;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (ctx == null) return false;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    boolean bypass = false;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      RegionServerEnvironment env = envs.get(i);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        ctx.prepare(env);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        Thread currentThread = Thread.currentThread();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        } catch (Throwable e) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          handleCoprocessorThrowable(env, e);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        } finally {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>          currentThread.setContextClassLoader(cl);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        bypass |= ctx.shouldBypass();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        if (ctx.shouldComplete()) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          break;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ctx.postEnvCall(env);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return bypass;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * RegionServer stop. (Refer:<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * @param ctx CoprocessorOperation<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * @throws IOException<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    if (ctx == null) return false;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    boolean bypass = false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    int envsSize = envs.size();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      RegionServerEnvironment env = envs.get(i);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        ctx.prepare(env);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Thread currentThread = Thread.currentThread();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        } catch (Throwable e) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          handleCoprocessorThrowable(env, e);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        } finally {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          currentThread.setContextClassLoader(cl);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        bypass |= ctx.shouldBypass();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        if (ctx.shouldComplete()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          break;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      }<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>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      RegionServerEnvironment env = envs.get(i);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      ctx.postEnvCall(env);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    return bypass;<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>  /**<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * Coprocessor environment extension providing access to region server<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * related services.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      implements RegionServerCoprocessorEnvironment {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    private final RegionServerServices regionServerServices;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    private final MetricRegistry metricRegistry;<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        final Configuration conf, final RegionServerServices services) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      super(impl, priority, seq, conf);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      this.regionServerServices = services;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          this.regionServerServices.registerService(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          break;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      this.metricRegistry =<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    @Override<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    public RegionServerServices getRegionServerServices() {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      return regionServerServices;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      return metricRegistry;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    @Override<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    protected void shutdown() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      super.shutdown();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<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>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * order.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  static class EnvironmentPriorityComparator implements<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        final CoprocessorEnvironment env2) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        return -1;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        return 1;<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><a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      RegionServerEnvironment env = envs.get(i);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      ctx.postEnvCall(env);<a name="line.349"></a>
+<span class="sourceLineNo">344</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        return -1;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        return 1;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      return 0;<a name="line.349"></a>
 <span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return bypass;<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>   * Coprocessor environment extension providing access to region server<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * related services.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      implements RegionServerCoprocessorEnvironment {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    private final RegionServerServices regionServerServices;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    private final MetricRegistry metricRegistry;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        final Configuration conf, final RegionServerServices services) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      super(impl, priority, seq, conf);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      this.regionServerServices = services;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          this.regionServerServices.registerService(<a name="line.373"></a>
-<span class="sourceLineNo">374</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          break;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      this.metricRegistry =<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    public RegionServerServices getRegionServerServices() {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      return regionServerServices;<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>    @Override<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      return metricRegistry;<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>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    protected void shutdown() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      super.shutdown();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * order.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  static class EnvironmentPriorityComparator implements<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    @Override<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        final CoprocessorEnvironment env2) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        return -1;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        return 1;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        return -1;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        return 1;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return 0;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<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">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>}<a name="line.352"></a>
 
 
 


[06/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
index 82eb9fd..8eb952a 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
@@ -71,668 +71,655 @@
 <span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.63"></a>
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.zookeeper.KeeperException;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.junit.After;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.junit.AfterClass;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.junit.BeforeClass;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.junit.Rule;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.junit.Test;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.junit.experimental.categories.Category;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.junit.rules.TestRule;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>@Category(MediumTests.class)<a name="line.93"></a>
-<span class="sourceLineNo">094</span>public class TestNamespaceAuditor {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static Admin ADMIN;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private String prefix = "TestNamespaceAuditor";<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  @BeforeClass<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public static void before() throws Exception {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    Configuration conf = UTIL.getConfiguration();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    conf.setStrings(<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      RegionServerObserver.class);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    UTIL.startMiniCluster(1, 1);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    waitForQuotaInitialize(UTIL);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    ADMIN = UTIL.getAdmin();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  @AfterClass<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public static void tearDown() throws Exception {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    UTIL.shutdownMiniCluster();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @After<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public void cleanup() throws Exception, KeeperException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      ADMIN.disableTable(table.getTableName());<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      deleteTable(table.getTableName());<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      if (ns.getName().startsWith(prefix)) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  @Test<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void testTableOperations() throws Exception {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    String nsp = prefix + "_np2";<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    NamespaceDescriptor nspDesc =<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.142"></a>
-<span class="sourceLineNo">143</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    ADMIN.createNamespace(nspDesc);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    HTableDescriptor tableDescOne =<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    tableDescOne.addFamily(fam1);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HTableDescriptor tableDescTwo =<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    tableDescTwo.addFamily(fam1);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    HTableDescriptor tableDescThree =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    tableDescThree.addFamily(fam1);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    ADMIN.createTable(tableDescOne);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    boolean constraintViolated = false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    } catch (Exception exp) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      assertTrue(exp instanceof IOException);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      constraintViolated = true;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        constraintViolated);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    assertNotNull(nspState);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    constraintViolated = false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      ADMIN.createTable(tableDescThree);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    } catch (Exception exp) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      assertTrue(exp instanceof IOException);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      constraintViolated = true;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    } finally {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        constraintViolated);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  @Test<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void testValidQuotas() throws Exception {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    boolean exceptionCaught = false;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    NamespaceDescriptor nspDesc =<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.192"></a>
-<span class="sourceLineNo">193</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.193"></a>
-<span class="sourceLineNo">194</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      ADMIN.createNamespace(nspDesc);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    } catch (Exception exp) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      LOG.warn(exp);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      exceptionCaught = true;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } finally {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      assertTrue(exceptionCaught);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    nspDesc =<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      ADMIN.createNamespace(nspDesc);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } catch (Exception exp) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      LOG.warn(exp);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      exceptionCaught = true;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    } finally {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      assertTrue(exceptionCaught);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    nspDesc =<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      ADMIN.createNamespace(nspDesc);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    } catch (Exception exp) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      LOG.warn(exp);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      exceptionCaught = true;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    } finally {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      assertTrue(exceptionCaught);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    nspDesc =<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.232"></a>
-<span class="sourceLineNo">233</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    try {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      ADMIN.createNamespace(nspDesc);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    } catch (Exception exp) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      LOG.warn(exp);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      exceptionCaught = true;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      assertTrue(exceptionCaught);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Test<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public void testDeleteTable() throws Exception {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    String namespace = prefix + "_dummy";<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    NamespaceDescriptor nspDesc =<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        NamespaceDescriptor.create(namespace)<a name="line.249"></a>
-<span class="sourceLineNo">250</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    ADMIN.createNamespace(nspDesc);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    HTableDescriptor tableDescOne =<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    tableDescOne.addFamily(fam1);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    HTableDescriptor tableDescTwo =<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    tableDescTwo.addFamily(fam1);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ADMIN.createTable(tableDescOne);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    deleteTable(tableDescOne.getTableName());<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    deleteTable(tableDescTwo.getTableName());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    ADMIN.deleteNamespace(namespace);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    stateInfo = getNamespaceState(namespace);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.zookeeper.KeeperException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.junit.After;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.junit.AfterClass;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.junit.BeforeClass;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.junit.Rule;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.junit.Test;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.junit.experimental.categories.Category;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.junit.rules.TestRule;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>@Category(MediumTests.class)<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public class TestNamespaceAuditor {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static Admin ADMIN;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private String prefix = "TestNamespaceAuditor";<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @BeforeClass<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public static void before() throws Exception {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    Configuration conf = UTIL.getConfiguration();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    conf.setStrings(<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      RegionServerObserver.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    UTIL.startMiniCluster(1, 1);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    waitForQuotaInitialize(UTIL);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ADMIN = UTIL.getAdmin();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @AfterClass<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static void tearDown() throws Exception {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    UTIL.shutdownMiniCluster();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  @After<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public void cleanup() throws Exception, KeeperException {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      ADMIN.disableTable(table.getTableName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      deleteTable(table.getTableName());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      if (ns.getName().startsWith(prefix)) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  @Test<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public void testTableOperations() throws Exception {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    String nsp = prefix + "_np2";<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    NamespaceDescriptor nspDesc =<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.139"></a>
+<span class="sourceLineNo">140</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    ADMIN.createNamespace(nspDesc);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    HTableDescriptor tableDescOne =<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    tableDescOne.addFamily(fam1);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    HTableDescriptor tableDescTwo =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    tableDescTwo.addFamily(fam1);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    HTableDescriptor tableDescThree =<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    tableDescThree.addFamily(fam1);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    ADMIN.createTable(tableDescOne);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    boolean constraintViolated = false;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    try {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    } catch (Exception exp) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      assertTrue(exp instanceof IOException);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      constraintViolated = true;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    } finally {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        constraintViolated);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    assertNotNull(nspState);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    constraintViolated = false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      ADMIN.createTable(tableDescThree);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (Exception exp) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      assertTrue(exp instanceof IOException);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      constraintViolated = true;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } finally {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        constraintViolated);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  @Test<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public void testValidQuotas() throws Exception {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    boolean exceptionCaught = false;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    NamespaceDescriptor nspDesc =<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.189"></a>
+<span class="sourceLineNo">190</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      ADMIN.createNamespace(nspDesc);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    } catch (Exception exp) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      LOG.warn(exp);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      exceptionCaught = true;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      assertTrue(exceptionCaught);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    nspDesc =<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.203"></a>
+<span class="sourceLineNo">204</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    try {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ADMIN.createNamespace(nspDesc);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    } catch (Exception exp) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      LOG.warn(exp);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      exceptionCaught = true;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    } finally {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      assertTrue(exceptionCaught);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    nspDesc =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    try {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      ADMIN.createNamespace(nspDesc);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    } catch (Exception exp) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      LOG.warn(exp);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      exceptionCaught = true;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    } finally {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      assertTrue(exceptionCaught);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    nspDesc =<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.228"></a>
+<span class="sourceLineNo">229</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    try {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      ADMIN.createNamespace(nspDesc);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    } catch (Exception exp) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      LOG.warn(exp);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      exceptionCaught = true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } finally {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      assertTrue(exceptionCaught);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  @Test<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public void testDeleteTable() throws Exception {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    String namespace = prefix + "_dummy";<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    NamespaceDescriptor nspDesc =<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        NamespaceDescriptor.create(namespace)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.247"></a>
+<span class="sourceLineNo">248</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    ADMIN.createNamespace(nspDesc);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    HTableDescriptor tableDescOne =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    tableDescOne.addFamily(fam1);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    HTableDescriptor tableDescTwo =<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    tableDescTwo.addFamily(fam1);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    ADMIN.createTable(tableDescOne);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    deleteTable(tableDescOne.getTableName());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    deleteTable(tableDescTwo.getTableName());<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    ADMIN.deleteNamespace(namespace);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    stateInfo = getNamespaceState(namespace);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    private volatile boolean shouldFailMerge = false;<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    private volatile boolean shouldFailMerge = false;<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void failMerge(boolean fail) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      shouldFailMerge = fail;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    private boolean triggered = false;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      while (!triggered) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        wait();<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    public synchronized void preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        Region regionA, Region regionB) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      triggered = true;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      notifyAll();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (shouldFailMerge) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        throw new IOException("fail merge");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    private volatile boolean shouldFailMerge = false;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    public void failMerge(boolean fail) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      shouldFailMerge = fail;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public synchronized void preMergeRegionsAction(<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      notifyAll();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      if (shouldFailMerge) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        throw new IOException("fail merge");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testRegionMerge() throws Exception {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    String nsp1 = prefix + "_regiontest";<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    final int initialRegions = 3;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    NamespaceDescriptor nspDesc =<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        NamespaceDescriptor.create(nsp1)<a name="line.332"></a>
-<span class="sourceLineNo">333</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.333"></a>
-<span class="sourceLineNo">334</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    ADMIN.createNamespace(nspDesc);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    ADMIN.flush(tableTwo);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    assertEquals(initialRegions, hris.size());<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    Collections.sort(hris);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      false);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    f.get(10, TimeUnit.SECONDS);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    Collections.sort(hris);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // Not much we can do here until we have split return a Future.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    Threads.sleep(5000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(initialRegions, hris.size());<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    Collections.sort(hris);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>    // Fail region merge through Coprocessor hook<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    masterObserver.failMerge(true);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    f = ADMIN.mergeRegionsAsync(<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      false);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    try {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      f.get(10, TimeUnit.SECONDS);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      fail("Merge was supposed to fail!");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } catch (ExecutionException ee) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      // Expected.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assertEquals(initialRegions, hris.size());<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    Collections.sort(hris);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    // verify that we cannot split<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    Thread.sleep(2000);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * HBASE-13394<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Test<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    NamespaceDescriptor nspDesc =<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        NamespaceDescriptor.create(nsp1)<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    ADMIN.createNamespace(nspDesc);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    try {<a name="line.410"></a>
+<span class="sourceLineNo">283</span>    public void failMerge(boolean fail) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      shouldFailMerge = fail;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    private boolean triggered = false;<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      while (!triggered) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        wait();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    private volatile boolean shouldFailMerge = false;<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>    public void failMerge(boolean fail) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      shouldFailMerge = fail;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>    @Override<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    public synchronized void preMergeRegionsAction(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      notifyAll();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (shouldFailMerge) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        throw new IOException("fail merge");<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  @Test<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  public void testRegionMerge() throws Exception {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    String nsp1 = prefix + "_regiontest";<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    final int initialRegions = 3;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    NamespaceDescriptor nspDesc =<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        NamespaceDescriptor.create(nsp1)<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    ADMIN.createNamespace(nspDesc);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    ADMIN.flush(tableTwo);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    assertEquals(initialRegions, hris.size());<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    Collections.sort(hris);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      false);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    f.get(10, TimeUnit.SECONDS);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Collections.sort(hris);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // Not much we can do here until we have split return a Future.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    Threads.sleep(5000);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    assertEquals(initialRegions, hris.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    Collections.sort(hris);<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>    // Fail region merge through Coprocessor hook<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    masterObserver.failMerge(true);<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>    f = ADMIN.mergeRegionsAsync(<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      false);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    try {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      f.get(10, TimeUnit.SECONDS);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      fail("Merge was supposed to fail!");<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    } catch (ExecutionException ee) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      // Expected.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    assertEquals(initialRegions, hris.size());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    Collections.sort(hris);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    // verify that we cannot split<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Thread.sleep(2000);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * HBASE-13394<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   */<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  @Test<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    NamespaceDescriptor nspDesc =<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        NamespaceDescriptor.create(nsp1)<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    ADMIN.createNamespace(nspDesc);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    try {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        ADMIN.createTable(tableDescOne);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } catch (Exception exp) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        LOG.error(exp);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.410"></a>
 <span class="sourceLineNo">411</span>      try {<a name="line.411"></a>
 <span class="sourceLineNo">412</span>        ADMIN.createTable(tableDescOne);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      } catch (Exception exp) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        LOG.error(exp);<a name="line.415"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        LOG.error(e);<a name="line.415"></a>
 <span class="sourceLineNo">416</span>      }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      try {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        ADMIN.createTable(tableDescOne);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } catch (Exception e) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        LOG.error(e);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      nstate = getNamespaceState(nsp1);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    } finally {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ADMIN.disableTable(tableOne);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        deleteTable(tableOne);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      ADMIN.deleteNamespace(nsp1);<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><a name="line.443"></a>
-<span class="sourceLineNo">444</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return getQuotaManager().getState(namespace);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    String skey = Bytes.toString(startKey);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    int key;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    if (StringUtils.isBlank(skey)) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    } else {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return Bytes.toBytes("" + key);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public static class CustomObserver implements RegionObserver {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    volatile CountDownLatch postCompact;<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    @Override<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      postCompact.countDown();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    @Override<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      postCompact = new CountDownLatch(1);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  @Test<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public void testStatePreserve() throws Exception {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    ADMIN.createNamespace(nspDesc);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    tableDescOne.addFamily(fam1);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    tableDescTwo.addFamily(fam1);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    tableDescThree.addFamily(fam1);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    ADMIN.disableTable(tableThree);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    deleteTable(tableThree);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // wait for chore to complete<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      @Override<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      public boolean evaluate() throws Exception {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<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>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    restartMaster();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        .getTables().size(), after.getTables().size());<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      @Override<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      public boolean evaluate() throws Exception {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        if (master == null) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          return false;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<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>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  private void restartMaster() throws Exception {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    UTIL.getHBaseCluster().startMaster();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    waitForQuotaInitialize(UTIL);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  private NamespaceAuditor getQuotaManager() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public static class MasterSyncObserver implements MasterObserver {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.539"></a>
+<span class="sourceLineNo">417</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      nstate = getNamespaceState(nsp1);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.419"></a>
+<span class="sourceLineNo">420</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    } finally {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        ADMIN.disableTable(tableOne);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        deleteTable(tableOne);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      ADMIN.deleteNamespace(nsp1);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      IOException {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return getQuotaManager().getState(namespace);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    String skey = Bytes.toString(startKey);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    int key;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (StringUtils.isBlank(skey)) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return Bytes.toBytes("" + key);<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 static class CustomObserver implements RegionObserver {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    volatile CountDownLatch postCompact;<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    @Override<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      postCompact.countDown();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    @Override<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      postCompact = new CountDownLatch(1);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    }<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 

<TRUNCATED>

[21/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html
index 36f4c8d..ec36d2e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html
@@ -38,395 +38,326 @@
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.CoprocessorEnvironment;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.MetaMutationAnnotation;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.User;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.49"></a>
-<span class="sourceLineNo">050</span>@InterfaceStability.Evolving<a name="line.50"></a>
-<span class="sourceLineNo">051</span>public class RegionServerCoprocessorHost extends<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.52"></a>
+<span class="sourceLineNo">033</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.User;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.47"></a>
+<span class="sourceLineNo">048</span>@InterfaceStability.Evolving<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class RegionServerCoprocessorHost extends<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.52"></a>
 <span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.54"></a>
+<span class="sourceLineNo">054</span>  private RegionServerServices rsServices;<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private RegionServerServices rsServices;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      Configuration conf) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    super(rsServices);<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    this.rsServices = rsServices;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    this.conf = conf;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    LOG.info("Table coprocessor loading is " +<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      sequence, conf, this.rsServices);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public void preStop(String message, User user) throws IOException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // coprocessor should be cleaned up.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      public void call(RegionServerObserver oserver,<a name="line.88"></a>
-<span class="sourceLineNo">089</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        oserver.preStopRegionServer(ctx);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      @Override<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        // invoke coprocessor stop method<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        shutdown(env);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      }<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    });<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public boolean preMerge(final HRegion regionA, final HRegion regionB, final User user) throws IOException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      @Override<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      public void call(RegionServerObserver oserver,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        oserver.preMerge(ctx, regionA, regionB);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      }<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    });<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public void postMerge(final HRegion regionA, final HRegion regionB, final HRegion mergedRegion,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>                        final User user)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      throws IOException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      @Override<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      public void call(RegionServerObserver oserver,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        oserver.postMerge(ctx, regionA, regionB, mergedRegion);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    });<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public boolean preMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      final @MetaMutationAnnotation List&lt;Mutation&gt; metaEntries, final User user)<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      throws IOException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      public void call(RegionServerObserver oserver,<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        oserver.preMergeCommit(ctx, regionA, regionB, metaEntries);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    });<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public void postMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      final HRegion mergedRegion, final User user) throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      @Override<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      public void call(RegionServerObserver oserver,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        oserver.postMergeCommit(ctx, regionA, regionB, mergedRegion);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    });<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public void preRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      throws IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      public void call(RegionServerObserver oserver,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        oserver.preRollBackMerge(ctx, regionA, regionB);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    });<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  public void postRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      throws IOException {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      public void call(RegionServerObserver oserver,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        oserver.postRollBackMerge(ctx, regionA, regionB);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      }<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    });<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      @Override<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      public void call(RegionServerObserver oserver,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    });<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      @Override<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      public void call(RegionServerObserver oserver,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    });<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
+<span class="sourceLineNo">056</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      Configuration conf) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    super(rsServices);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    this.rsServices = rsServices;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    this.conf = conf;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    LOG.info("Table coprocessor loading is " +<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      sequence, conf, this.rsServices);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public void preStop(String message, User user) throws IOException {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    // coprocessor should be cleaned up.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      public void call(RegionServerObserver oserver,<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        oserver.preStopRegionServer(ctx);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      }<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        // invoke coprocessor stop method<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        shutdown(env);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    });<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      @Override<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      public void call(RegionServerObserver oserver,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    });<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      @Override<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      public void call(RegionServerObserver oserver,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    });<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      throws IOException {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      public void call(RegionServerObserver oserver,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    });<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      throws IOException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      public void call(RegionServerObserver oserver,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    });<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      throws IOException {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          public void call(RegionServerObserver oserver,<a name="line.145"></a>
+<span class="sourceLineNo">146</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        });<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public void preClearCompactionQueues() throws IOException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      public void call(RegionServerObserver oserver,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        oserver.preClearCompactionQueues(ctx);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    });<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public void postClearCompactionQueues() throws IOException {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      public void call(RegionServerObserver oserver,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        oserver.postClearCompactionQueues(ctx);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    });<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    if (ctx == null)<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      return defaultValue;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    ctx.setResult(defaultValue);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    execOperation(ctx);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    return ctx.getResult();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private static abstract class CoprocessorOperation<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    public CoprocessorOperation() {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      this(RpcServer.getRequestUser());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
 <span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      @Override<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      public void call(RegionServerObserver oserver,<a name="line.191"></a>
-<span class="sourceLineNo">192</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    });<a name="line.195"></a>
+<span class="sourceLineNo">187</span>    public CoprocessorOperation(User user) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      super(user);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public abstract void call(RegionServerObserver oserver,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
 <span class="sourceLineNo">196</span>  }<a name="line.196"></a>
 <span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      throws IOException {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      @Override<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      public void call(RegionServerObserver oserver,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    });<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      throws IOException {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          @Override<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          public void call(RegionServerObserver oserver,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>          }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        });<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  public void preClearCompactionQueues() throws IOException {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      @Override<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      public void call(RegionServerObserver oserver,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        oserver.preClearCompactionQueues(ctx);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    });<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public void postClearCompactionQueues() throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public void call(RegionServerObserver oserver,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        oserver.postClearCompactionQueues(ctx);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    });<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (ctx == null)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return defaultValue;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    ctx.setResult(defaultValue);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    execOperation(ctx);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    return ctx.getResult();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  private static abstract class CoprocessorOperation<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public CoprocessorOperation() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      this(RpcServer.getRequestUser());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public CoprocessorOperation(User user) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(user);<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>    public abstract void call(RegionServerObserver oserver,<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    private T result = null;<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public void setResult(final T result) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.result = result;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public T getResult() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return this.result;<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (ctx == null) return false;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    boolean bypass = false;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      RegionServerEnvironment env = envs.get(i);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        ctx.prepare(env);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        Thread currentThread = Thread.currentThread();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        try {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        } catch (Throwable e) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          handleCoprocessorThrowable(env, e);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        } finally {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          currentThread.setContextClassLoader(cl);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        bypass |= ctx.shouldBypass();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        if (ctx.shouldComplete()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          break;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      ctx.postEnvCall(env);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return bypass;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * RegionServer stop. (Refer:<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param ctx CoprocessorOperation<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @throws IOException<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (ctx == null) return false;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    boolean bypass = false;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    int envsSize = envs.size();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      RegionServerEnvironment env = envs.get(i);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        ctx.prepare(env);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        Thread currentThread = Thread.currentThread();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        try {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        } catch (Throwable e) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          handleCoprocessorThrowable(env, e);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        } finally {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>          currentThread.setContextClassLoader(cl);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        bypass |= ctx.shouldBypass();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        if (ctx.shouldComplete()) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          break;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">198</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    private T result = null;<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    public void setResult(final T result) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      this.result = result;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public T getResult() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return this.result;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (ctx == null) return false;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    boolean bypass = false;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      RegionServerEnvironment env = envs.get(i);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        ctx.prepare(env);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        Thread currentThread = Thread.currentThread();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        } catch (Throwable e) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          handleCoprocessorThrowable(env, e);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        } finally {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>          currentThread.setContextClassLoader(cl);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        bypass |= ctx.shouldBypass();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        if (ctx.shouldComplete()) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          break;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ctx.postEnvCall(env);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return bypass;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * RegionServer stop. (Refer:<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * @param ctx CoprocessorOperation<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * @throws IOException<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    if (ctx == null) return false;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    boolean bypass = false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    int envsSize = envs.size();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      RegionServerEnvironment env = envs.get(i);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        ctx.prepare(env);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Thread currentThread = Thread.currentThread();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        } catch (Throwable e) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          handleCoprocessorThrowable(env, e);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        } finally {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          currentThread.setContextClassLoader(cl);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        bypass |= ctx.shouldBypass();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        if (ctx.shouldComplete()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          break;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      }<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>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      RegionServerEnvironment env = envs.get(i);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      ctx.postEnvCall(env);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    return bypass;<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>  /**<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * Coprocessor environment extension providing access to region server<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * related services.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      implements RegionServerCoprocessorEnvironment {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    private final RegionServerServices regionServerServices;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    private final MetricRegistry metricRegistry;<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        final Configuration conf, final RegionServerServices services) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      super(impl, priority, seq, conf);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      this.regionServerServices = services;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          this.regionServerServices.registerService(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          break;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      this.metricRegistry =<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    @Override<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    public RegionServerServices getRegionServerServices() {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      return regionServerServices;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      return metricRegistry;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    @Override<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    protected void shutdown() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      super.shutdown();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<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>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * order.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  static class EnvironmentPriorityComparator implements<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        final CoprocessorEnvironment env2) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        return -1;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        return 1;<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><a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      RegionServerEnvironment env = envs.get(i);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      ctx.postEnvCall(env);<a name="line.349"></a>
+<span class="sourceLineNo">344</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        return -1;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        return 1;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      return 0;<a name="line.349"></a>
 <span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return bypass;<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>   * Coprocessor environment extension providing access to region server<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * related services.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      implements RegionServerCoprocessorEnvironment {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    private final RegionServerServices regionServerServices;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    private final MetricRegistry metricRegistry;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        final Configuration conf, final RegionServerServices services) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      super(impl, priority, seq, conf);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      this.regionServerServices = services;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          this.regionServerServices.registerService(<a name="line.373"></a>
-<span class="sourceLineNo">374</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          break;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      this.metricRegistry =<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    public RegionServerServices getRegionServerServices() {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      return regionServerServices;<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>    @Override<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      return metricRegistry;<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>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    protected void shutdown() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      super.shutdown();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * order.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  static class EnvironmentPriorityComparator implements<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    @Override<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        final CoprocessorEnvironment env2) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        return -1;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        return 1;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        return -1;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        return 1;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return 0;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<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">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>}<a name="line.352"></a>
 
 
 


[13/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-info.html b/hbase-shaded-check-invariants/project-info.html
index 5d62bb8..52b228a 100644
--- a/hbase-shaded-check-invariants/project-info.html
+++ b/hbase-shaded-check-invariants/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -170,7 +170,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-reports.html b/hbase-shaded-check-invariants/project-reports.html
index 2a31fdb..d3b03c4 100644
--- a/hbase-shaded-check-invariants/project-reports.html
+++ b/hbase-shaded-check-invariants/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-summary.html b/hbase-shaded-check-invariants/project-summary.html
index 0b5983f..d85e115 100644
--- a/hbase-shaded-check-invariants/project-summary.html
+++ b/hbase-shaded-check-invariants/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/source-repository.html b/hbase-shaded-check-invariants/source-repository.html
index d8d54ae..4727119 100644
--- a/hbase-shaded-check-invariants/source-repository.html
+++ b/hbase-shaded-check-invariants/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-shaded-check-invariants/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/team-list.html b/hbase-shaded-check-invariants/team-list.html
index 6e9ec98..3c7104f 100644
--- a/hbase-shaded-check-invariants/team-list.html
+++ b/hbase-shaded-check-invariants/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -529,7 +529,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index db8330b..dd230ad 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -438,7 +438,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index ce154aa..68a321a 100644
--- a/integration.html
+++ b/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -296,7 +296,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 08a5084..ee8b50e 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -293,7 +293,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 1d1ffb5..ede35a2 100644
--- a/license.html
+++ b/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -496,7 +496,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 4501286..abab73e 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -346,7 +346,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index a82e8a6..4d795f3 100644
--- a/metrics.html
+++ b/metrics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -464,7 +464,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index fea454c..56513d4 100644
--- a/old_news.html
+++ b/old_news.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -419,7 +419,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 6947ba5..a8378b1 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -441,7 +441,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index b53cee9..9933d0a 100644
--- a/plugins.html
+++ b/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -380,7 +380,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 6e4de6e..31c3d58 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -774,7 +774,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index e04b49a..04bd254 100644
--- a/project-info.html
+++ b/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 0c0b3a2..ca9cb83 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -310,7 +310,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index b0929e2..d83bcb0 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index b747b75..7c2d054 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -313,7 +313,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 74c6b89..112df52 100644
--- a/replication.html
+++ b/replication.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -308,7 +308,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 4aa757d..02b2997 100644
--- a/resources.html
+++ b/resources.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 3f3e9da..8c374cb 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -304,7 +304,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index c97c8ea..d76f321 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -338,7 +338,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 9d2169b..4dda4c7 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -525,7 +525,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index e21ae64..9370f01 100644
--- a/team-list.html
+++ b/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -699,7 +699,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 92b2e7d..5624194 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -26227,8 +26227,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html#preMasterInitializationCalled">preMasterInitializationCalled</a></span> - Variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver.CPMasterObserver</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region)</a></span> - Method in class org.apache.hadoop.hbase.namespace.<a href="org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html" title="class in org.apache.hadoop.hbase.namespace">TestNamespaceAuditor.CPRegionServerObserver</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html#preMergeRegions-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-">preMergeRegions(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, HRegionInfo[])</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver.CPMasterObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html#preMergeRegionsAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-">preMergeRegionsAction(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, HRegionInfo[])</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver.CPMasterObserver</a></dt>
@@ -48346,8 +48344,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.html#testMergeRegions--">testMergeRegions()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncRegionAdminApi</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/TestAccessController.html#testMergeRegions--">testMergeRegions()</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/TestAccessController.html" title="class in org.apache.hadoop.hbase.security.access">TestAccessController</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html#testMergeRegionsConcurrently--">testMergeRegionsConcurrently()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TestMergeTableRegionsProcedure</a></dt>
 <dd>
 <div class="block">This tests two concurrent region merges</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/TestJMXConnectorServer.MyAccessController.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestJMXConnectorServer.MyAccessController.html b/testdevapidocs/org/apache/hadoop/hbase/TestJMXConnectorServer.MyAccessController.html
index 3c312a4..0e76abb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestJMXConnectorServer.MyAccessController.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestJMXConnectorServer.MyAccessController.html
@@ -214,7 +214,7 @@ extends org.apache.hadoop.hbase.security.access.AccessController</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.security.access.AccessController</h3>
-<code>checkPermissions, getAuthManager, getRegion, getService, getUserPermissions, grant, isAuthorizationSupported, isCellAuthorizationSupported, postAbortProcedure, postCompletedCreateTableAction, postCreateReplicationEndPoint, postDelete, postDeleteColumnFamily, postDeleteNamespace, postDeleteTable, postEndpointInvocation, postGetProcedures, postGetTableDescriptors, postGetTableNames, postListNamespaceDescriptors, postLogReplay, postMerge, postMergeCommit, postModifyTable, postMutationBeforeWAL, postOpen, postPut, postReplicateLogEntries, postRollBackMerge, postRollWALWriterRequest, postScannerClose, postScannerFilterRow, postScannerOpen, postSetSplitOrMergeEnabled, postStartMaster, postTruncateTable, preAbortProcedure, preAddColumnFamily, preAddReplicationPeer, preAddRSGroup, preAppend, preAppendAfterRowLock, preAssign, preBalance, preBalanceRSGroup, preBalanceSwitch, preBatchMutate, preBulkLoadHFile, preCheckAndDelete, preCheckAndDeleteAfterRowLock, preCheckAndPut, preCheckAndPu
 tAfterRowLock, preCleanupBulkLoad, preClearCompactionQueues, preClearDeadServers, preCloneSnapshot, preClose, preCompact, preCreateNamespace, preCreateTable, preDelete, preDeleteColumnFamily, preDeleteNamespace, preDeleteSnapshot, preDeleteTable, preDisableReplicationPeer, preDisableTable, preEnableReplicationPeer, preEnableTable, preEndpointInvocation, preExists, preFlush, preGetLocks, preGetNamespaceDescriptor, preGetOp, preGetProcedures, preGetReplicationPeerConfig, preGetTableDescriptors, preIncrement, preIncrementAfterRowLock, preListReplicationPeers, preListSnapshot, preLockHeartbeat, preMerge, preMergeCommit, preMergeRegions, preModifyColumnFamily, preModifyNamespace, preModifyTable, preMove, preMoveServers, preMoveServersAndTables, preMoveTables, preOpen, prePrepareBulkLoad, prePut, preRegionOffline, preRemoveReplicationPeer, preRemoveRSGroup, preReplicateLogEntries, preRequestLock, preRestoreSnapshot, preRollBackMerge, preRollWALWriterRequest, preScannerClose, preScannerNex
 t, preScannerOpen, preSetNamespaceQuota, preSetSplitOrMergeEnabled, preSetTableQuota, preSetUserQuota, preSetUserQuota, preSetUserQuota, preSnapshot, preSplitRegion, preTableFlush, preTruncateTable, preUnassign, preUpdateReplicationPeerConfig, requireNamespacePermission, requireNamespacePermission, revoke, start, stop</code></li>
+<code>checkPermissions, getAuthManager, getRegion, getService, getUserPermissions, grant, isAuthorizationSupported, isCellAuthorizationSupported, postAbortProcedure, postCompletedCreateTableAction, postCreateReplicationEndPoint, postDelete, postDeleteColumnFamily, postDeleteNamespace, postDeleteTable, postEndpointInvocation, postGetProcedures, postGetTableDescriptors, postGetTableNames, postListNamespaceDescriptors, postLogReplay, postModifyTable, postMutationBeforeWAL, postOpen, postPut, postReplicateLogEntries, postRollWALWriterRequest, postScannerClose, postScannerFilterRow, postScannerOpen, postSetSplitOrMergeEnabled, postStartMaster, postTruncateTable, preAbortProcedure, preAddColumnFamily, preAddReplicationPeer, preAddRSGroup, preAppend, preAppendAfterRowLock, preAssign, preBalance, preBalanceRSGroup, preBalanceSwitch, preBatchMutate, preBulkLoadHFile, preCheckAndDelete, preCheckAndDeleteAfterRowLock, preCheckAndPut, preCheckAndPutAfterRowLock, preCleanupBulkLoad, preClearComp
 actionQueues, preClearDeadServers, preCloneSnapshot, preClose, preCompact, preCreateNamespace, preCreateTable, preDelete, preDeleteColumnFamily, preDeleteNamespace, preDeleteSnapshot, preDeleteTable, preDisableReplicationPeer, preDisableTable, preEnableReplicationPeer, preEnableTable, preEndpointInvocation, preExists, preFlush, preGetLocks, preGetNamespaceDescriptor, preGetOp, preGetProcedures, preGetReplicationPeerConfig, preGetTableDescriptors, preIncrement, preIncrementAfterRowLock, preListReplicationPeers, preListSnapshot, preLockHeartbeat, preMergeRegions, preModifyColumnFamily, preModifyNamespace, preModifyTable, preMove, preMoveServers, preMoveServersAndTables, preMoveTables, preOpen, prePrepareBulkLoad, prePut, preRegionOffline, preRemoveReplicationPeer, preRemoveRSGroup, preReplicateLogEntries, preRequestLock, preRestoreSnapshot, preRollWALWriterRequest, preScannerClose, preScannerNext, preScannerOpen, preSetNamespaceQuota, preSetSplitOrMergeEnabled, preSetTableQuota, preSe
 tUserQuota, preSetUserQuota, preSetUserQuota, preSnapshot, preSplitRegion, preTableFlush, preTruncateTable, preUnassign, preUpdateReplicationPeerConfig, requireNamespacePermission, requireNamespacePermission, revoke, start, stop</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 508d74e..47ae915 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -142,8 +142,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionServerObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionServerObserver.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionServerObserver.html
index e8cb122..7121768 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionServerObserver.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomRegionServerObserver.html
@@ -220,7 +220,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.RegionServerObserver</h3>
-<code>postClearCompactionQueues, postCreateReplicationEndPoint, postMerge, postMergeCommit, postReplicateLogEntries, postRollBackMerge, preClearCompactionQueues, preMerge, preMergeCommit, preReplicateLogEntries, preRollBackMerge, preRollWALWriterRequest, preStopRegionServer</code></li>
+<code>postClearCompactionQueues, postCreateReplicationEndPoint, postReplicateLogEntries, preClearCompactionQueues, preReplicateLogEntries, preRollWALWriterRequest, preStopRegionServer</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
index ccb89a4..a694726 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.309">TestNamespaceAuditor.CPMasterObserver</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.296">TestNamespaceAuditor.CPMasterObserver</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 </li>
@@ -247,7 +247,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>shouldFailMerge</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html#line.310">shouldFailMerge</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html#line.297">shouldFailMerge</a></pre>
 </li>
 </ul>
 </li>
@@ -264,7 +264,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CPMasterObserver</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html#line.309">CPMasterObserver</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html#line.296">CPMasterObserver</a>()</pre>
 </li>
 </ul>
 </li>
@@ -281,7 +281,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>failMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html#line.312">failMerge</a>(boolean&nbsp;fail)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html#line.299">failMerge</a>(boolean&nbsp;fail)</pre>
 </li>
 </ul>
 <a name="preMergeRegionsAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-">
@@ -290,7 +290,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>preMergeRegionsAction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html#line.317">preMergeRegionsAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html#line.304">preMergeRegionsAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
                                   org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regionsToMerge)
                            throws <a href="http://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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
index e9244d3..354a9a2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10};
+var methods = {"i0":10,"i1":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.283">TestNamespaceAuditor.CPRegionServerObserver</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.280">TestNamespaceAuditor.CPRegionServerObserver</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver</pre>
 </li>
@@ -206,12 +206,6 @@ implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver</pre>
 </tr>
 <tr id="i1" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment&gt;&nbsp;ctx,
-        org.apache.hadoop.hbase.regionserver.Region&nbsp;regionA,
-        org.apache.hadoop.hbase.regionserver.Region&nbsp;regionB)</code>&nbsp;</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#waitUtilTriggered--">waitUtilTriggered</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
@@ -227,7 +221,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.RegionServerObserver</h3>
-<code>postClearCompactionQueues, postCreateReplicationEndPoint, postMerge, postMergeCommit, postReplicateLogEntries, postRollBackMerge, postRollWALWriterRequest, preClearCompactionQueues, preMergeCommit, preReplicateLogEntries, preRollBackMerge, preRollWALWriterRequest, preStopRegionServer</code></li>
+<code>postClearCompactionQueues, postCreateReplicationEndPoint, postReplicateLogEntries, postRollWALWriterRequest, preClearCompactionQueues, preReplicateLogEntries, preRollWALWriterRequest, preStopRegionServer</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
@@ -256,7 +250,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldFailMerge</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.284">shouldFailMerge</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.281">shouldFailMerge</a></pre>
 </li>
 </ul>
 <a name="triggered">
@@ -265,7 +259,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>triggered</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.290">triggered</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.287">triggered</a></pre>
 </li>
 </ul>
 </li>
@@ -282,7 +276,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CPRegionServerObserver</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.283">CPRegionServerObserver</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.280">CPRegionServerObserver</a>()</pre>
 </li>
 </ul>
 </li>
@@ -299,16 +293,16 @@ implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>failMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.286">failMerge</a>(boolean&nbsp;fail)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.283">failMerge</a>(boolean&nbsp;fail)</pre>
 </li>
 </ul>
 <a name="waitUtilTriggered--">
 <!--   -->
 </a>
-<ul class="blockList">
+<ul class="blockListLast">
 <li class="blockList">
 <h4>waitUtilTriggered</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.292">waitUtilTriggered</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.289">waitUtilTriggered</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -316,24 +310,6 @@ implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver</pre>
 </dl>
 </li>
 </ul>
-<a name="preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>preMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html#line.299">preMerge</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment&gt;&nbsp;ctx,
-                     org.apache.hadoop.hbase.regionserver.Region&nbsp;regionA,
-                     org.apache.hadoop.hbase.regionserver.Region&nbsp;regionB)
-              throws <a href="http://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="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>preMerge</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.RegionServerObserver</code></dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
index f7b2359..0539f9e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.460">TestNamespaceAuditor.CustomObserver</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.447">TestNamespaceAuditor.CustomObserver</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.coprocessor.RegionObserver</pre>
 </li>
@@ -256,7 +256,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>postCompact</h4>
-<pre>volatile&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.461">postCompact</a></pre>
+<pre>volatile&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.448">postCompact</a></pre>
 </li>
 </ul>
 </li>
@@ -273,7 +273,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CustomObserver</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.460">CustomObserver</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.447">CustomObserver</a>()</pre>
 </li>
 </ul>
 </li>
@@ -290,7 +290,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>postCompact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.464">postCompact</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.451">postCompact</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
                         org.apache.hadoop.hbase.regionserver.Store&nbsp;store,
                         org.apache.hadoop.hbase.regionserver.StoreFile&nbsp;resultFile,
                         org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker&nbsp;tracker)
@@ -309,7 +309,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.470">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;e)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html#line.457">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;e)
            throws <a href="http://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="overrideSpecifyLabel">Specified by:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
index 3537340..5371506 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.537">TestNamespaceAuditor.MasterSyncObserver</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.524">TestNamespaceAuditor.MasterSyncObserver</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 </li>
@@ -258,7 +258,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>tableDeletionLatch</h4>
-<pre>volatile&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.538">tableDeletionLatch</a></pre>
+<pre>volatile&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.525">tableDeletionLatch</a></pre>
 </li>
 </ul>
 <a name="throwExceptionInPreCreateTableAction">
@@ -267,7 +267,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>throwExceptionInPreCreateTableAction</h4>
-<pre>static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.539">throwExceptionInPreCreateTableAction</a></pre>
+<pre>static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.526">throwExceptionInPreCreateTableAction</a></pre>
 </li>
 </ul>
 </li>
@@ -284,7 +284,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterSyncObserver</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.537">MasterSyncObserver</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.524">MasterSyncObserver</a>()</pre>
 </li>
 </ul>
 </li>
@@ -301,7 +301,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>preDeleteTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.542">preDeleteTable</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.529">preDeleteTable</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
                            org.apache.hadoop.hbase.TableName&nbsp;tableName)
                     throws <a href="http://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>
@@ -318,7 +318,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>postCompletedDeleteTableAction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.548">postCompletedDeleteTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.535">postCompletedDeleteTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
                                            org.apache.hadoop.hbase.TableName&nbsp;tableName)
                                     throws <a href="http://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>
@@ -335,7 +335,7 @@ implements org.apache.hadoop.hbase.coprocessor.MasterObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>preCreateTableAction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.555">preCreateTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html#line.542">preCreateTableAction</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
                                  org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
                                  org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regions)
                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
index cb929fa..50df45c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.94">TestNamespaceAuditor</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.91">TestNamespaceAuditor</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -321,7 +321,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>timeout</h4>
-<pre>public final&nbsp;org.junit.rules.TestRule <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.95">timeout</a></pre>
+<pre>public final&nbsp;org.junit.rules.TestRule <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.92">timeout</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -330,7 +330,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.97">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.94">LOG</a></pre>
 </li>
 </ul>
 <a name="UTIL">
@@ -339,7 +339,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.98">UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.95">UTIL</a></pre>
 </li>
 </ul>
 <a name="ADMIN">
@@ -348,7 +348,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ADMIN</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.client.Admin <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.99">ADMIN</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Admin <a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.96">ADMIN</a></pre>
 </li>
 </ul>
 <a name="prefix">
@@ -357,7 +357,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>prefix</h4>
-<pre>private&nbsp;<a href="http://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/namespace/TestNamespaceAuditor.html#line.100">prefix</a></pre>
+<pre>private&nbsp;<a href="http://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/namespace/TestNamespaceAuditor.html#line.97">prefix</a></pre>
 </li>
 </ul>
 </li>
@@ -374,7 +374,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestNamespaceAuditor</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.94">TestNamespaceAuditor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.91">TestNamespaceAuditor</a>()</pre>
 </li>
 </ul>
 </li>
@@ -391,7 +391,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>before</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.103">before</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.100">before</a>()
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -405,7 +405,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.119">tearDown</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.116">tearDown</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -419,7 +419,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.124">cleanup</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.121">cleanup</a>()
              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>,
                     org.apache.zookeeper.KeeperException</pre>
 <dl>
@@ -435,7 +435,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testTableOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.139">testTableOperations</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.136">testTableOperations</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -449,7 +449,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testValidQuotas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.187">testValidQuotas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.184">testValidQuotas</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -463,7 +463,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.246">testDeleteTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.243">testDeleteTable</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -477,7 +477,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.328">testRegionMerge</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.315">testRegionMerge</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -491,7 +491,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecreateTableWithSameNameAfterFirstTimeFailure</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.398">testRecreateTableWithSameNameAfterFirstTimeFailure</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.385">testRecreateTableWithSameNameAfterFirstTimeFailure</a>()
                                                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -505,7 +505,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaceState</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.namespace.NamespaceTableAndRegionInfo&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.444">getNamespaceState</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)
+<pre>private&nbsp;org.apache.hadoop.hbase.namespace.NamespaceTableAndRegionInfo&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.431">getNamespaceState</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)
                                                                                  throws org.apache.zookeeper.KeeperException,
                                                                                         <a href="http://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>
@@ -521,7 +521,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitKey</h4>
-<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.449">getSplitKey</a>(byte[]&nbsp;startKey,
+<pre>byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.436">getSplitKey</a>(byte[]&nbsp;startKey,
                    byte[]&nbsp;endKey)</pre>
 </li>
 </ul>
@@ -531,7 +531,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testStatePreserve</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.476">testStatePreserve</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.463">testStatePreserve</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -545,7 +545,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForQuotaInitialize</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.511">waitForQuotaInitialize</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.498">waitForQuotaInitialize</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util)
                                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -559,7 +559,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>restartMaster</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.525">restartMaster</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.512">restartMaster</a>()
                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -573,7 +573,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getQuotaManager</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.namespace.NamespaceAuditor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.532">getQuotaManager</a>()</pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.namespace.NamespaceAuditor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.519">getQuotaManager</a>()</pre>
 </li>
 </ul>
 <a name="deleteTable-org.apache.hadoop.hbase.TableName-">
@@ -582,7 +582,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.563">deleteTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.550">deleteTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -596,7 +596,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testExceedTableQuotaInNamespace</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.573">testExceedTableQuotaInNamespace</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.560">testExceedTableQuotaInNamespace</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -610,7 +610,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCloneSnapshotQuotaExceed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.593">testCloneSnapshotQuotaExceed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.580">testCloneSnapshotQuotaExceed</a>()
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -624,7 +624,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCloneSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.613">testCloneSnapshot</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.600">testCloneSnapshot</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -638,7 +638,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRestoreSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.651">testRestoreSnapshot</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.638">testRestoreSnapshot</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -652,7 +652,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testRestoreSnapshotQuotaExceed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.687">testRestoreSnapshotQuotaExceed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.html#line.674">testRestoreSnapshotQuotaExceed</a>()
                                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>


[02/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html
index 6899321..da046b2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html
@@ -865,2376 +865,2351 @@
 <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>  @Test (timeout=180000)<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  public void testMergeRegions() throws Exception {<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    createTestTable(tableName);<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    try {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>      final List&lt;HRegion&gt; regions = TEST_UTIL.getHBaseCluster().findRegionsForTable(tableName);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      assertTrue("not enough regions: " + regions.size(), regions.size() &gt;= 2);<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>      AccessTestAction action = new AccessTestAction() {<a name="line.867"></a>
-<span class="sourceLineNo">868</span>        @Override<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        public Object run() throws Exception {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>          ACCESS_CONTROLLER.preMerge(ObserverContext.createAndPrepare(RSCP_ENV, null),<a name="line.870"></a>
-<span class="sourceLineNo">871</span>            regions.get(0), regions.get(1));<a name="line.871"></a>
-<span class="sourceLineNo">872</span>          return null;<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        }<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      };<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>      verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      verifyDenied(action, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    } finally {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      deleteTable(TEST_UTIL, tableName);<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    }<a name="line.881"></a>
-<span class="sourceLineNo">882</span>  }<a name="line.882"></a>
-<span class="sourceLineNo">883</span><a name="line.883"></a>
-<span class="sourceLineNo">884</span>  @Test (timeout=180000)<a name="line.884"></a>
-<span class="sourceLineNo">885</span>  public void testFlush() throws Exception {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    AccessTestAction action = new AccessTestAction() {<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      @Override<a name="line.887"></a>
-<span class="sourceLineNo">888</span>      public Object run() throws Exception {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.889"></a>
-<span class="sourceLineNo">890</span>        return null;<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    };<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      USER_GROUP_ADMIN);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<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>  @Test (timeout=180000)<a name="line.899"></a>
-<span class="sourceLineNo">900</span>  public void testCompact() throws Exception {<a name="line.900"></a>
-<span class="sourceLineNo">901</span>    AccessTestAction action = new AccessTestAction() {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      @Override<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      public Object run() throws Exception {<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        ACCESS_CONTROLLER.preCompact(ObserverContext.createAndPrepare(RCP_ENV, null), null, null,<a name="line.904"></a>
-<span class="sourceLineNo">905</span>          ScanType.COMPACT_RETAIN_DELETES, null);<a name="line.905"></a>
-<span class="sourceLineNo">906</span>        return null;<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>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      USER_GROUP_ADMIN);<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<a name="line.912"></a>
-<span class="sourceLineNo">913</span>  }<a name="line.913"></a>
-<span class="sourceLineNo">914</span><a name="line.914"></a>
-<span class="sourceLineNo">915</span>  private void verifyRead(AccessTestAction action) throws Exception {<a name="line.915"></a>
-<span class="sourceLineNo">916</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW, USER_RO,<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      USER_GROUP_READ);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    verifyDenied(action, USER_NONE, USER_GROUP_CREATE, USER_GROUP_ADMIN, USER_GROUP_WRITE);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>  }<a name="line.919"></a>
-<span class="sourceLineNo">920</span><a name="line.920"></a>
-<span class="sourceLineNo">921</span>  private void verifyReadWrite(AccessTestAction action) throws Exception {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    verifyDenied(action, USER_NONE, USER_RO, USER_GROUP_ADMIN, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        USER_GROUP_WRITE);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>  }<a name="line.925"></a>
-<span class="sourceLineNo">926</span><a name="line.926"></a>
-<span class="sourceLineNo">927</span>  @Test (timeout=180000)<a name="line.927"></a>
-<span class="sourceLineNo">928</span>  public void testRead() throws Exception {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>    // get action<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    AccessTestAction getAction = new AccessTestAction() {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>      @Override<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      public Object run() throws Exception {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        Get g = new Get(TEST_ROW);<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        g.addFamily(TEST_FAMILY);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.936"></a>
-<span class="sourceLineNo">937</span>          t.get(g);<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        }<a name="line.938"></a>
-<span class="sourceLineNo">939</span>        return null;<a name="line.939"></a>
-<span class="sourceLineNo">940</span>      }<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    };<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    verifyRead(getAction);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    // action for scanning<a name="line.944"></a>
-<span class="sourceLineNo">945</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      @Override<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      public Object run() throws Exception {<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        Scan s = new Scan();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>        s.addFamily(TEST_FAMILY);<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>            Table table = conn.getTable(TEST_TABLE)) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>          ResultScanner scanner = table.getScanner(s);<a name="line.952"></a>
-<span class="sourceLineNo">953</span>          try {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>            for (Result r = scanner.next(); r != null; r = scanner.next()) {<a name="line.954"></a>
-<span class="sourceLineNo">955</span>              // do nothing<a name="line.955"></a>
-<span class="sourceLineNo">956</span>            }<a name="line.956"></a>
-<span class="sourceLineNo">957</span>          } finally {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>            scanner.close();<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>        return null;<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      }<a name="line.962"></a>
-<span class="sourceLineNo">963</span>    };<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    verifyRead(scanAction);<a name="line.964"></a>
-<span class="sourceLineNo">965</span>  }<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>  @Test (timeout=180000)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>  // test put, delete, increment<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  public void testWrite() throws Exception {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    // put action<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    AccessTestAction putAction = new AccessTestAction() {<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      @Override<a name="line.972"></a>
-<span class="sourceLineNo">973</span>      public Object run() throws Exception {<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Put p = new Put(TEST_ROW);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.977"></a>
-<span class="sourceLineNo">978</span>          t.put(p);<a name="line.978"></a>
-<span class="sourceLineNo">979</span>        }<a name="line.979"></a>
-<span class="sourceLineNo">980</span>        return null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      }<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    };<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    verifyWrite(putAction);<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    // delete action<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    AccessTestAction deleteAction = new AccessTestAction() {<a name="line.986"></a>
-<span class="sourceLineNo">987</span>      @Override<a name="line.987"></a>
-<span class="sourceLineNo">988</span>      public Object run() throws Exception {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>        Delete d = new Delete(TEST_ROW);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>        d.addFamily(TEST_FAMILY);<a name="line.990"></a>
-<span class="sourceLineNo">991</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>          t.delete(d);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>        }<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        return null;<a name="line.995"></a>
-<span class="sourceLineNo">996</span>      }<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    };<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    verifyWrite(deleteAction);<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    // increment action<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>    AccessTestAction incrementAction = new AccessTestAction() {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>      @Override<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      public Object run() throws Exception {<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>        Increment inc = new Increment(TEST_ROW);<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>        inc.addColumn(TEST_FAMILY, TEST_QUALIFIER, 1);<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>          t.increment(inc);<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        }<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        return null;<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>    verifyWrite(incrementAction);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  @Test (timeout=180000)<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  public void testReadWrite() throws Exception {<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>    // action for checkAndDelete<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    AccessTestAction checkAndDeleteAction = new AccessTestAction() {<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      @Override<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      public Object run() throws Exception {<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>        Delete d = new Delete(TEST_ROW);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        d.addFamily(TEST_FAMILY);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          t.checkAndDelete(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>              Bytes.toBytes("test_value"), d);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>        }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        return null;<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    };<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    verifyReadWrite(checkAndDeleteAction);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span><a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    // action for checkAndPut()<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    AccessTestAction checkAndPut = new AccessTestAction() {<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      @Override<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      public Object run() throws Exception {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>        Put p = new Put(TEST_ROW);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>          t.checkAndPut(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>              Bytes.toBytes("test_value"), p);<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>        }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>        return null;<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>      }<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>    };<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>    verifyReadWrite(checkAndPut);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>  }<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span><a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>  @Test (timeout=180000)<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>  public void testBulkLoad() throws Exception {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    try {<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>      FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      final Path dir = TEST_UTIL.getDataTestDirOnTestFS("testBulkLoad");<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>      fs.mkdirs(dir);<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      // need to make it globally writable<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      // so users creating HFiles have write permissions<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>      fs.setPermission(dir, FsPermission.valueOf("-rwxrwxrwx"));<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>      AccessTestAction bulkLoadAction = new AccessTestAction() {<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>        @Override<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        public Object run() throws Exception {<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>          int numRows = 3;<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span><a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>          // Making the assumption that the test table won't split between the range<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          byte[][][] hfileRanges = { { { (byte) 0 }, { (byte) 9 } } };<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          Path bulkLoadBasePath = new Path(dir, new Path(User.getCurrent().getName()));<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          new BulkLoadHelper(bulkLoadBasePath).bulkLoadHFile(TEST_TABLE, TEST_FAMILY,<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>            TEST_QUALIFIER, hfileRanges, numRows);<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span><a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>          return null;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      };<a name="line.1075"></a>
+<span class="sourceLineNo">860</span>  public void testFlush() throws Exception {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    AccessTestAction action = new AccessTestAction() {<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      @Override<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      public Object run() throws Exception {<a name="line.863"></a>
+<span class="sourceLineNo">864</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.864"></a>
+<span class="sourceLineNo">865</span>        return null;<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>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      USER_GROUP_ADMIN);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>  }<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>  @Test (timeout=180000)<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  public void testCompact() throws Exception {<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    AccessTestAction action = new AccessTestAction() {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>      @Override<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      public Object run() throws Exception {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>        ACCESS_CONTROLLER.preCompact(ObserverContext.createAndPrepare(RCP_ENV, null), null, null,<a name="line.879"></a>
+<span class="sourceLineNo">880</span>          ScanType.COMPACT_RETAIN_DELETES, null);<a name="line.880"></a>
+<span class="sourceLineNo">881</span>        return null;<a name="line.881"></a>
+<span class="sourceLineNo">882</span>      }<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    };<a name="line.883"></a>
+<span class="sourceLineNo">884</span><a name="line.884"></a>
+<span class="sourceLineNo">885</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      USER_GROUP_ADMIN);<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<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>  private void verifyRead(AccessTestAction action) throws Exception {<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW, USER_RO,<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      USER_GROUP_READ);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>    verifyDenied(action, USER_NONE, USER_GROUP_CREATE, USER_GROUP_ADMIN, USER_GROUP_WRITE);<a name="line.893"></a>
+<span class="sourceLineNo">894</span>  }<a name="line.894"></a>
+<span class="sourceLineNo">895</span><a name="line.895"></a>
+<span class="sourceLineNo">896</span>  private void verifyReadWrite(AccessTestAction action) throws Exception {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW);<a name="line.897"></a>
+<span class="sourceLineNo">898</span>    verifyDenied(action, USER_NONE, USER_RO, USER_GROUP_ADMIN, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        USER_GROUP_WRITE);<a name="line.899"></a>
+<span class="sourceLineNo">900</span>  }<a name="line.900"></a>
+<span class="sourceLineNo">901</span><a name="line.901"></a>
+<span class="sourceLineNo">902</span>  @Test (timeout=180000)<a name="line.902"></a>
+<span class="sourceLineNo">903</span>  public void testRead() throws Exception {<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    // get action<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    AccessTestAction getAction = new AccessTestAction() {<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      @Override<a name="line.906"></a>
+<span class="sourceLineNo">907</span>      public Object run() throws Exception {<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        Get g = new Get(TEST_ROW);<a name="line.908"></a>
+<span class="sourceLineNo">909</span>        g.addFamily(TEST_FAMILY);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.911"></a>
+<span class="sourceLineNo">912</span>          t.get(g);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>        }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        return null;<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>    verifyRead(getAction);<a name="line.917"></a>
+<span class="sourceLineNo">918</span><a name="line.918"></a>
+<span class="sourceLineNo">919</span>    // action for scanning<a name="line.919"></a>
+<span class="sourceLineNo">920</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      @Override<a name="line.921"></a>
+<span class="sourceLineNo">922</span>      public Object run() throws Exception {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        Scan s = new Scan();<a name="line.923"></a>
+<span class="sourceLineNo">924</span>        s.addFamily(TEST_FAMILY);<a name="line.924"></a>
+<span class="sourceLineNo">925</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.925"></a>
+<span class="sourceLineNo">926</span>            Table table = conn.getTable(TEST_TABLE)) {<a name="line.926"></a>
+<span class="sourceLineNo">927</span>          ResultScanner scanner = table.getScanner(s);<a name="line.927"></a>
+<span class="sourceLineNo">928</span>          try {<a name="line.928"></a>
+<span class="sourceLineNo">929</span>            for (Result r = scanner.next(); r != null; r = scanner.next()) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>              // do nothing<a name="line.930"></a>
+<span class="sourceLineNo">931</span>            }<a name="line.931"></a>
+<span class="sourceLineNo">932</span>          } finally {<a name="line.932"></a>
+<span class="sourceLineNo">933</span>            scanner.close();<a name="line.933"></a>
+<span class="sourceLineNo">934</span>          }<a name="line.934"></a>
+<span class="sourceLineNo">935</span>        }<a name="line.935"></a>
+<span class="sourceLineNo">936</span>        return null;<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>    verifyRead(scanAction);<a name="line.939"></a>
+<span class="sourceLineNo">940</span>  }<a name="line.940"></a>
+<span class="sourceLineNo">941</span><a name="line.941"></a>
+<span class="sourceLineNo">942</span>  @Test (timeout=180000)<a name="line.942"></a>
+<span class="sourceLineNo">943</span>  // test put, delete, increment<a name="line.943"></a>
+<span class="sourceLineNo">944</span>  public void testWrite() throws Exception {<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    // put action<a name="line.945"></a>
+<span class="sourceLineNo">946</span>    AccessTestAction putAction = new AccessTestAction() {<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      @Override<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      public Object run() throws Exception {<a name="line.948"></a>
+<span class="sourceLineNo">949</span>        Put p = new Put(TEST_ROW);<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>          t.put(p);<a name="line.953"></a>
+<span class="sourceLineNo">954</span>        }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>        return null;<a name="line.955"></a>
+<span class="sourceLineNo">956</span>      }<a name="line.956"></a>
+<span class="sourceLineNo">957</span>    };<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    verifyWrite(putAction);<a name="line.958"></a>
+<span class="sourceLineNo">959</span><a name="line.959"></a>
+<span class="sourceLineNo">960</span>    // delete action<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    AccessTestAction deleteAction = new AccessTestAction() {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      @Override<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      public Object run() throws Exception {<a name="line.963"></a>
+<span class="sourceLineNo">964</span>        Delete d = new Delete(TEST_ROW);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>        d.addFamily(TEST_FAMILY);<a name="line.965"></a>
+<span class="sourceLineNo">966</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>          t.delete(d);<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        }<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        return 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>    verifyWrite(deleteAction);<a name="line.973"></a>
+<span class="sourceLineNo">974</span><a name="line.974"></a>
+<span class="sourceLineNo">975</span>    // increment action<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    AccessTestAction incrementAction = new AccessTestAction() {<a name="line.976"></a>
+<span class="sourceLineNo">977</span>      @Override<a name="line.977"></a>
+<span class="sourceLineNo">978</span>      public Object run() throws Exception {<a name="line.978"></a>
+<span class="sourceLineNo">979</span>        Increment inc = new Increment(TEST_ROW);<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        inc.addColumn(TEST_FAMILY, TEST_QUALIFIER, 1);<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.981"></a>
+<span class="sourceLineNo">982</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.982"></a>
+<span class="sourceLineNo">983</span>          t.increment(inc);<a name="line.983"></a>
+<span class="sourceLineNo">984</span>        }<a name="line.984"></a>
+<span class="sourceLineNo">985</span>        return null;<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>    verifyWrite(incrementAction);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Test (timeout=180000)<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public void testReadWrite() throws Exception {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    // action for checkAndDelete<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    AccessTestAction checkAndDeleteAction = new AccessTestAction() {<a name="line.994"></a>
+<span class="sourceLineNo">995</span>      @Override<a name="line.995"></a>
+<span class="sourceLineNo">996</span>      public Object run() throws Exception {<a name="line.996"></a>
+<span class="sourceLineNo">997</span>        Delete d = new Delete(TEST_ROW);<a name="line.997"></a>
+<span class="sourceLineNo">998</span>        d.addFamily(TEST_FAMILY);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>          t.checkAndDelete(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>              Bytes.toBytes("test_value"), d);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>        }<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>        return null;<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>    verifyReadWrite(checkAndDeleteAction);<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span><a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    // action for checkAndPut()<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>    AccessTestAction checkAndPut = new AccessTestAction() {<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      @Override<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>      public Object run() throws Exception {<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>        Put p = new Put(TEST_ROW);<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>          t.checkAndPut(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>              Bytes.toBytes("test_value"), p);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>        }<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>        return null;<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>      }<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    };<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    verifyReadWrite(checkAndPut);<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>  @Test (timeout=180000)<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>  public void testBulkLoad() throws Exception {<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    try {<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>      FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>      final Path dir = TEST_UTIL.getDataTestDirOnTestFS("testBulkLoad");<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>      fs.mkdirs(dir);<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>      // need to make it globally writable<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // so users creating HFiles have write permissions<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      fs.setPermission(dir, FsPermission.valueOf("-rwxrwxrwx"));<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span><a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      AccessTestAction bulkLoadAction = new AccessTestAction() {<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>        @Override<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>        public Object run() throws Exception {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>          int numRows = 3;<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span><a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>          // Making the assumption that the test table won't split between the range<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          byte[][][] hfileRanges = { { { (byte) 0 }, { (byte) 9 } } };<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span><a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>          Path bulkLoadBasePath = new Path(dir, new Path(User.getCurrent().getName()));<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          new BulkLoadHelper(bulkLoadBasePath).bulkLoadHFile(TEST_TABLE, TEST_FAMILY,<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>            TEST_QUALIFIER, hfileRanges, numRows);<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span><a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>          return null;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>        }<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      };<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span><a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>      // User performing bulk loads must have privilege to read table metadata<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>      // (ADMIN or CREATE)<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>      verifyAllowed(bulkLoadAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE,<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>        USER_GROUP_CREATE);<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>      verifyDenied(bulkLoadAction, USER_RW, USER_NONE, USER_RO, USER_GROUP_READ, USER_GROUP_WRITE,<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>        USER_GROUP_ADMIN);<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    } finally {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>      // Reinit after the bulk upload<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>      TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>    }<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>  }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span><a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>  public class BulkLoadHelper {<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    private final FileSystem fs;<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>    private final Path loadPath;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    private final Configuration conf;<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    public BulkLoadHelper(Path loadPath) throws IOException {<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>      fs = TEST_UTIL.getTestFileSystem();<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>      conf = TEST_UTIL.getConfiguration();<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>      loadPath = loadPath.makeQualified(fs);<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>      this.loadPath = loadPath;<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>    }<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span><a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      // User performing bulk loads must have privilege to read table metadata<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>      // (ADMIN or CREATE)<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      verifyAllowed(bulkLoadAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE,<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>        USER_GROUP_CREATE);<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>      verifyDenied(bulkLoadAction, USER_RW, USER_NONE, USER_RO, USER_GROUP_READ, USER_GROUP_WRITE,<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>        USER_GROUP_ADMIN);<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    } finally {<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      // Reinit after the bulk upload<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>      TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>      TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<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><a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>  public class BulkLoadHelper {<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    private final FileSystem fs;<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    private final Path loadPath;<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>    private final Configuration conf;<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span><a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    public BulkLoadHelper(Path loadPath) throws IOException {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      fs = TEST_UTIL.getTestFileSystem();<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      conf = TEST_UTIL.getConfiguration();<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>      loadPath = loadPath.makeQualified(fs);<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      this.loadPath = loadPath;<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>    }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span><a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    private void createHFile(Path path,<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>        byte[] family, byte[] qualifier,<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>        byte[] startKey, byte[] endKey, int numRows) throws IOException {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      HFile.Writer writer = null;<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      long now = System.currentTimeMillis();<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>      try {<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>        HFileContext context = new HFileContextBuilder().build();<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>        writer = HFile.getWriterFactory(conf, new CacheConfig(conf))<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>            .withPath(fs, path)<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>            .withFileContext(context)<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>            .create();<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>        // subtract 2 since numRows doesn't include boundary keys<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>        for (byte[] key : Bytes.iterateOnSplits(startKey, endKey, true, numRows-2)) {<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>          KeyValue kv = new KeyValue(key, family, qualifier, now, key);<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>          writer.append(kv);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>        }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>      } finally {<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>        if(writer != null)<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>          writer.close();<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>      }<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    }<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span><a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>    private void bulkLoadHFile(<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>        TableName tableName,<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>        byte[] family,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        byte[] qualifier,<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>        byte[][][] hfileRanges,<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>        int numRowsPerRange) throws Exception {<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span><a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>      Path familyDir = new Path(loadPath, Bytes.toString(family));<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>      fs.mkdirs(familyDir);<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      int hfileIdx = 0;<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>      for (byte[][] range : hfileRanges) {<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>        byte[] from = range[0];<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>        byte[] to = range[1];<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>        createHFile(new Path(familyDir, "hfile_"+(hfileIdx++)),<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>            family, qualifier, from, to, numRowsPerRange);<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      }<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>      //set global read so RegionServer can move it<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      setPermission(loadPath, FsPermission.valueOf("-rwxrwxrwx"));<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>      try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>           Admin admin = conn.getAdmin();<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>           RegionLocator locator = conn.getRegionLocator(tableName);<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>           Table table = conn.getTable(tableName)) {<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>        TEST_UTIL.waitUntilAllRegionsAssigned(tableName);<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>        LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>        loader.doBulkLoad(loadPath, admin, table, locator);<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>      }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span><a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    public void setPermission(Path dir, FsPermission perm) throws IOException {<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>      if(!fs.getFileStatus(dir).isDirectory()) {<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        fs.setPermission(dir,perm);<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>      }<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>      else {<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>        for(FileStatus el : fs.listStatus(dir)) {<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>          fs.setPermission(el.getPath(), perm);<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>          setPermission(el.getPath() , perm);<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>        }<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>      }<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>    }<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>  }<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span><a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>  @Test (timeout=180000)<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>  public void testAppend() throws Exception {<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span><a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>    AccessTestAction appendAction = new AccessTestAction() {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>      @Override<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>      public Object run() throws Exception {<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>        byte[] row = TEST_ROW;<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>        byte[] qualifier = TEST_QUALIFIER;<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>        Put put = new Put(row);<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>        put.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(1));<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>        Append append = new Append(row);<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>        append.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(2));<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>          t.put(put);<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>          t.append(append);<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>        }<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>        return null;<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      }<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>    verifyAllowed(appendAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW,<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>      USER_GROUP_WRITE);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    verifyDenied(appendAction, USER_RO, USER_NONE, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      USER_GROUP_ADMIN);<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>  }<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span><a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>  @Test (timeout=180000)<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>  public void testGrantRevoke() throws Exception {<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>    AccessTestAction grantAction = new AccessTestAction() {<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      @Override<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>      public Object run() throws Exception {<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          AccessControlService.BlockingInterface protocol =<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>            AccessControlService.newBlockingStub(service);<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>          AccessControlUtil.grant(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY,<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>              null, false, Action.READ);<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>        }<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>        return null;<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>      }<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>    };<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span><a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>    AccessTestAction revokeAction = new AccessTestAction() {<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>      @Override<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>      public Object run() throws Exception {<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>          AccessControlService.BlockingInterface protocol =<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>            AccessControlService.newBlockingStub(service);<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>          AccessControlUtil.revoke(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>            Action.READ);<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>        }<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>        return null;<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>      }<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    };<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span><a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>    AccessTestAction getTablePermissionsAction = new AccessTestAction() {<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>      @Override<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>      public Object run() throws Exception {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)){<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>          AccessControlService.BlockingInterface protocol =<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>              AccessControlService.newBlockingStub(service);<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>          AccessControlUtil.getUserPermissions(null, protocol, TEST_TABLE);<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>        }<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>        return null;<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>      }<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>    };<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>    AccessTestAction getGlobalPermissionsAction = new AccessTestAction() {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      @Override<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      public Object run() throws Exception {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME);) {<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>          BlockingRpcChannel service = acl.coprocessorService(HConstants.EMPTY_START_ROW);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>          AccessControlService.BlockingInterface protocol =<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>            AccessControlService.newBlockingStub(service);<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>          AccessControlUtil.getUserPermissions(null, protocol);<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>        }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>        return null;<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>      }<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    };<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span><a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>    verifyAllowed(grantAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>    verifyDenied(grantAction, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>    try {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>      verifyAllowed(revokeAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>      verifyDenied(revokeAction, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span><a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>      verifyAllowed(getTablePermissionsAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>      verifyDenied(getTablePermissionsAction, USER_CREATE, USER_RW, USER_RO, USER_NONE,<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>        USER_GROUP_READ, USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span><a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>      verifyAllowed(getGlobalPermissionsAction, SUPERUSER, USER_ADMIN, USER_GROUP_ADMIN);<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>      verifyDenied(getGlobalPermissionsAction, USER_CREATE, USER_OWNER, USER_RW, USER_RO,<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>        USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    } finally {<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>      // Cleanup, Grant the revoked permission back to the user<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>      grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>        Permission.Action.READ);<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span><a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>  @Test (timeout=180000)<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  public void testPostGrantRevoke() throws Exception {<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    final TableName tableName =<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>        TableName.valueOf("TempTable");<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>    final byte[] family1 = Bytes.toBytes("f1");<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>    final byte[] family2 = Bytes.toBytes("f2");<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>    final byte[] qualifier = Bytes.toBytes("q");<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span><a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    // create table<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>    Admin admin = TEST_UTIL.getAdmin();<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>    if (admin.tableExists(tableName)) {<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>      deleteTable(TEST_UTIL, tableName);<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>    }<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    htd.addFamily(new HColumnDescriptor(family1));<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>    htd.addFamily(new HColumnDescriptor(family2));<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>    createTable(TEST_UTIL, htd);<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>    try {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>      // create temp users<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>      User tblUser =<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>          User.createUserForTesting(TEST_UTIL.getConfiguration(), "tbluser", new String[0]);<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>      User gblUser =<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>          User.createUserForTesting(TEST_UTIL.getConfiguration(), "gbluser", new String[0]);<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span><a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>      // prepare actions:<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>      AccessTestAction putActionAll = new AccessTestAction() {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>        @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>        public Object run() throws Exception {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>          p.addColumn(family1, qualifier, Bytes.toBytes("v1"));<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>          p.addColumn(family2, qualifier, Bytes.toBytes("v2"));<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span><a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>              Table t = conn.getTable(tableName);) {<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>            t.put(p);<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>          }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>          return null;<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>        }<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>      };<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span><a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>      AccessTestAction putAction1 = new AccessTestAction() {<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>        @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>        public Object run() throws Exception {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>          p.addColumn(family1, qualifier, Bytes.toBytes("v1"));<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>              Table t = conn.getTable(tableName)) {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>            t.put(p);<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>          }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>          return null;<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>        }<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>      };<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span><a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>      AccessTestAction putAction2 = new AccessTestAction() {<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>        @Override<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>        public Object run() throws Exception {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>          p.addColumn(family2, qualifier, Bytes.toBytes("v2"));<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>              Table t = conn.getTable(tableName);) {<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>            t.put(p);<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>          }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>          return null;<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>        }<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>      };<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span><a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      AccessTestAction getActionAll = new AccessTestAction() {<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>        @Override<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>        public Object run() throws Exception {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>          Get g = new Get(TEST_ROW);<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>          g.addFamily(family1);<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>          g.addFamily(family2);<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>              Table t = conn.getTable(tableName);) {<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>            t.get(g);<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>          }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>          return null;<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>        }<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>      };<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span><a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>      AccessTestAction getAction1 = new AccessTestAction() {<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>        @Override<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>        public Object run() throws Exception {<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>          Get g = new Get(TEST_ROW);<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>          g.addFamily(family1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>              Table t = conn.getTable(tableName)) {<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>            t.get(g);<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>          }<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>          return null;<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>        }<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      };<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span><a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      AccessTestAction getAction2 = new AccessTestAction() {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>        @Override<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>        public Object run() throws Exception {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>          Get g = new Get(TEST_ROW);<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>          g.addFamily(family2);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>              Table t = conn.getTable(tableName)) {<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>            t.get(g);<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>          }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>          return null;<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>        }<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>      AccessTestAction deleteActionAll = new AccessTestAction() {<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>        @Override<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>        public Object run() throws Exception {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>          Delete d = new Delete(TEST_ROW);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>          d.addFamily(family1);<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>          d.addFamily(family2);<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>              Table t = conn.getTable(tableName)) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>            t.delete(d);<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>          }<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>          return null;<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        }<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>      };<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span><a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>      AccessTestAction deleteAction1 = new AccessTestAction() {<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>        @Override<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>        public Object run() throws Exception {<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          Delete d = new Delete(TEST_ROW);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>          d.addFamily(family1);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>              Table t = conn.getTable(tableName)) {<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>            t.delete(d);<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>          }<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          return null;<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>        }<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>      };<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>      AccessTestAction deleteAction2 = new AccessTestAction() {<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>        @Override<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        public Object run() throws Exception {<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>          Delete d = new Delete(TEST_ROW);<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>          d.addFamily(family2);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>              Table t = conn.getTable(tableName)) {<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>            t.delete(d);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>          }<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>          return null;<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>        }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>      };<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span><a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>      // initial check:<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>      verifyDenied(tblUser, getActionAll, getAction1, getAction2);<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>      verifyDenied(tblUser, putActionAll, putAction1, putAction2);<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>      verifyDenied(tblUser, deleteActionAll, deleteAction1, deleteAction2);<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span><a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>      verifyDenied(gblUser, getActionAll, getAction1, getAction2);<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>      verifyDenied(gblUser, putActionAll, putAction1, putAction2);<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>      verifyDenied(gblUser, deleteActionAll, deleteAction1, deleteAction2);<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span><a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>      // grant table read permission<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>      grantGlobal(TEST_UTIL, gblUser.getShortName(), Permission.Action.READ);<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>      grantOnTable(TEST_UTIL, tblUser.getShortName(), tableName, null, null, Permission.Action.READ);<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span><a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>      // check<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>      verifyAllowed(tblUser, getActionAll, getAction1, getAction2);<a name="line.1438"></a>
+<span class="sourceLineNo">1077</span>    private void createHFile(Path path,<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        byte[] family, byte[] qualifier,<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>        byte[] startKey, byte[] endKey, int numRows) throws IOException {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span><a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      HFile.Writer writer = null;<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>      long now = System.currentTimeMillis();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      try {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>        HFileContext context = new HFileContextBuilder().build();<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>        writer = HFile.getWriterFactory(conf, new CacheConfig(conf))<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>            .withPath(fs, path)<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            .withFileContext(context)<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>            .create();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>        // subtract 2 since numRows doesn't include boundary keys<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>        for (byte[] key : Bytes.iterateOnSplits(startKey, endKey, true, numRows-2)) {<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>          KeyValue kv = new KeyValue(key, family, qualifier, now, key);<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>          writer.append(kv);<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>        }<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>      } finally {<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>        if(writer != null)<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>          writer.close();<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>      }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>    }<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span><a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    private void bulkLoadHFile(<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>        TableName tableName,<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>        byte[] family,<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>        byte[] qualifier,<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>        byte[][][] hfileRanges,<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>        int numRowsPerRange) throws Exception {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span><a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>      Path familyDir = new Path(loadPath, Bytes.toString(family));<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>      fs.mkdirs(familyDir);<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>      int hfileIdx = 0;<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>      for (byte[][] range : hfileRanges) {<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>        byte[] from = range[0];<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>        byte[] to = range[1];<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>        createHFile(new Path(familyDir, "hfile_"+(hfileIdx++)),<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>            family, qualifier, from, to, numRowsPerRange);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>      }<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      //set global read so RegionServer can move it<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      setPermission(loadPath, FsPermission.valueOf("-rwxrwxrwx"));<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>      try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>           Admin admin = conn.getAdmin();<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>           RegionLocator locator = conn.getRegionLocator(tableName);<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>           Table table = conn.getTable(tableName)) {<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>        TEST_UTIL.waitUntilAllRegionsAssigned(tableName);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>        LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>        loader.doBulkLoad(loadPath, admin, table, locator);<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>      }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>    }<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span><a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>    public void setPermission(Path dir, FsPermission perm) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>      if(!fs.getFileStatus(dir).isDirectory()) {<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>        fs.setPermission(dir,perm);<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      }<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      else {<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>        for(FileStatus el : fs.listStatus(dir)) {<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>          fs.setPermission(el.getPath(), perm);<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>          setPermission(el.getPath() , perm);<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>        }<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>      }<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    }<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>  }<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span><a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>  @Test (timeout=180000)<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>  public void testAppend() throws Exception {<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span><a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>    AccessTestAction appendAction = new AccessTestAction() {<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>      @Override<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>      public Object run() throws Exception {<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>        byte[] row = TEST_ROW;<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>        byte[] qualifier = TEST_QUALIFIER;<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>        Put put = new Put(row);<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        put.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(1));<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>        Append append = new Append(row);<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>        append.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(2));<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>          t.put(put);<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>          t.append(append);<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>        }<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>        return null;<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>      }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>    };<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span><a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    verifyAllowed(appendAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW,<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>      USER_GROUP_WRITE);<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span>    verifyDenied(appendAction, USER_RO, USER_NONE, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>      USER_GROUP_ADMIN);<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>  }<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span><a name="line.1169"></a>
+<span class="sourceLineNo">1170</span>  @Test (timeout=180000)<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span>  public void testGrantRevoke() throws Exception {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    AccessTestAction grantAction = new AccessTestAction() {<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>      @Override<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>      public Object run() throws Exception {<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span>          AccessControlService.BlockingInterface protocol =<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>            AccessControlService.newBlockingStub(service);<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>          AccessControlUtil.grant(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY,<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>              null, false, Action.READ);<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>        }<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>        return null;<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span>      }<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span>   

<TRUNCATED>

[22/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/security/class-use/User.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/class-use/User.html b/devapidocs/org/apache/hadoop/hbase/security/class-use/User.html
index d5b2d98..af3c56d 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/class-use/User.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/class-use/User.html
@@ -997,26 +997,6 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;mergedRegion,
-         <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;mergedRegion,
-               <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                 <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html#preCompact-org.apache.hadoop.hbase.regionserver.Store-org.apache.hadoop.hbase.regionserver.InternalScanner-org.apache.hadoop.hbase.regionserver.ScanType-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-org.apache.hadoop.hbase.security.User-">preCompact</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a>&nbsp;scanner,
@@ -1026,7 +1006,7 @@
 <div class="block">Called prior to rewriting the store files selected for compaction</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html#preCompactScannerOpen-org.apache.hadoop.hbase.regionserver.Store-java.util.List-org.apache.hadoop.hbase.regionserver.ScanType-long-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-org.apache.hadoop.hbase.security.User-long-">preCompactScannerOpen</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
                      <a href="http://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/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&gt;&nbsp;scanners,
@@ -1040,7 +1020,7 @@
    InternalScanner, CompactionLifeCycleTracker, long)</code></a></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html#preCompactSelection-org.apache.hadoop.hbase.regionserver.Store-java.util.List-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-org.apache.hadoop.hbase.security.User-">preCompactSelection</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
                    <a href="http://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/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates,
@@ -1050,25 +1030,6 @@
  available candidates.</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">preMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-        <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.security.User-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries,
-              <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">preRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preStop-java.lang.String-org.apache.hadoop.hbase.security.User-">preStop</a></span>(<a href="http://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,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index d776b93..bec1bbc 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -191,9 +191,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/security/visibility/VisibilityController.VisibilityReplication.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/visibility/VisibilityController.VisibilityReplication.html b/devapidocs/org/apache/hadoop/hbase/security/visibility/VisibilityController.VisibilityReplication.html
index 9663e07..04702e7 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/visibility/VisibilityController.VisibilityReplication.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/visibility/VisibilityController.VisibilityReplication.html
@@ -233,7 +233,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Region
 <!--   -->
 </a>
 <h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postClearCompactionQueues</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List
 -org.apache.hadoop.hbase.CellScanner-">postReplicateLogEntries</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postRollWALWriterRequest</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearCompactionQueues</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge</a>, <a href
 ="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">preReplicateLogEntries</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preRollBackMerge</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preRollWALWriterRequest</a>, <a href="../
 ../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preStopRegionServer-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preStopRegionServer</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postClearCompactionQueues</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">postReplicateLogEntries</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postRollWALWriterRequest</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearCompactionQueues</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.
 ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">preReplicateLogEntries</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preRollWALWriterRequest</a>, <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preStopRegionServer-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preStopRegionServer</a></code></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 29f4bfc..59ab0ce 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -198,9 +198,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index 26de730..48beef9 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -522,14 +522,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index c0d1321..fcd3d1f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "5c12e424e679e738a5b6282ff24348a50ed4ca14";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "efb95a17945cc91aa639396f6f6c528b52c71fcb";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Sun Sep 17 14:41:52 UTC 2017";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Mon Sep 18 14:41:42 UTC 2017";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://asf920.gq1.ygridcore.net/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "fc0595d126eb797f26d49ce1f5e2d769";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "fcb83aae1cc0d99891c52f37883052a5";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html
index d56581a..174d5e4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html
@@ -32,170 +32,108 @@
 <span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.MetaMutationAnnotation;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>/**<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * Defines coprocessor hooks for interacting with operations on the<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * {@link org.apache.hadoop.hbase.regionserver.HRegionServer} process.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> *<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * Since most implementations will be interested in only a subset of hooks, this class uses<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * 'default' functions to avoid having to add unnecessary overrides. When the functions are<a name="line.40"></a>
-<span class="sourceLineNo">041</span> * non-empty, it's simply to satisfy the compiler by returning value of expected (non-void) type.<a name="line.41"></a>
-<span class="sourceLineNo">042</span> * It is done in a way that these default definitions act as no-op. So our suggestion to<a name="line.42"></a>
-<span class="sourceLineNo">043</span> * implementation would be to not call these 'default' methods from overrides.<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * &lt;br&gt;&lt;br&gt;<a name="line.44"></a>
-<span class="sourceLineNo">045</span> *<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * &lt;h3&gt;Exception Handling&lt;/h3&gt;<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * For all functions, exception handling is done as follows:<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * &lt;ul&gt;<a name="line.48"></a>
-<span class="sourceLineNo">049</span> *   &lt;li&gt;Exceptions of type {@link IOException} are reported back to client.&lt;/li&gt;<a name="line.49"></a>
-<span class="sourceLineNo">050</span> *   &lt;li&gt;For any other kind of exception:<a name="line.50"></a>
-<span class="sourceLineNo">051</span> *     &lt;ul&gt;<a name="line.51"></a>
-<span class="sourceLineNo">052</span> *       &lt;li&gt;If the configuration {@link CoprocessorHost#ABORT_ON_ERROR_KEY} is set to true, then<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *         the server aborts.&lt;/li&gt;<a name="line.53"></a>
-<span class="sourceLineNo">054</span> *       &lt;li&gt;Otherwise, coprocessor is removed from the server and<a name="line.54"></a>
-<span class="sourceLineNo">055</span> *         {@link org.apache.hadoop.hbase.DoNotRetryIOException} is returned to the client.&lt;/li&gt;<a name="line.55"></a>
-<span class="sourceLineNo">056</span> *     &lt;/ul&gt;<a name="line.56"></a>
-<span class="sourceLineNo">057</span> *   &lt;/li&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * &lt;/ul&gt;<a name="line.58"></a>
-<span class="sourceLineNo">059</span> */<a name="line.59"></a>
-<span class="sourceLineNo">060</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.60"></a>
-<span class="sourceLineNo">061</span>@InterfaceStability.Evolving<a name="line.61"></a>
-<span class="sourceLineNo">062</span>public interface RegionServerObserver extends Coprocessor {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  /**<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   * Called before stopping region server.<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   */<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  default void preStopRegionServer(<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {}<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  /**<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   * Called before the regions merge.<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   * Call {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} to skip the merge.<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   * @param regionA region being merged.<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   * @param regionB region being merged.<a name="line.75"></a>
-<span class="sourceLineNo">076</span>   */<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  default void preMerge(final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      final Region regionA, final Region regionB) throws IOException {}<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /**<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * called after the regions merge.<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * @param regionA region being merged.<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * @param regionB region being merged.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  default void postMerge(final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      final Region regionA, final Region regionB, final Region mergedRegion) throws IOException {}<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * This will be called before PONR step as part of regions merge transaction. Calling<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * {@link org.apache.hadoop.hbase.coprocessor.ObserverContext#bypass()} rollback the merge<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * @param regionA region being merged.<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * @param regionB region being merged.<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * @param metaEntries mutations to execute on hbase:meta atomically with regions merge updates.<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   *        Any puts or deletes to execute on hbase:meta can be added to the mutations.<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  default void preMergeCommit(final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      final Region regionA, final Region regionB,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      @MetaMutationAnnotation List&lt;Mutation&gt; metaEntries) throws IOException {}<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  /**<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * This will be called after PONR step as part of regions merge transaction.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param regionA region being merged.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @param regionB region being merged.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  default void postMergeCommit(final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      final Region regionA, final Region regionB, final Region mergedRegion) throws IOException {}<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  /**<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * This will be called before the roll back of the regions merge.<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @param regionA region being merged.<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * @param regionB region being merged.<a name="line.115"></a>
+<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * Defines coprocessor hooks for interacting with operations on the<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * {@link org.apache.hadoop.hbase.regionserver.HRegionServer} process.<a name="line.34"></a>
+<span class="sourceLineNo">035</span> *<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * Since most implementations will be interested in only a subset of hooks, this class uses<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * 'default' functions to avoid having to add unnecessary overrides. When the functions are<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * non-empty, it's simply to satisfy the compiler by returning value of expected (non-void) type.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * It is done in a way that these default definitions act as no-op. So our suggestion to<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * implementation would be to not call these 'default' methods from overrides.<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * &lt;br&gt;&lt;br&gt;<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * &lt;h3&gt;Exception Handling&lt;/h3&gt;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * For all functions, exception handling is done as follows:<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * &lt;ul&gt;<a name="line.45"></a>
+<span class="sourceLineNo">046</span> *   &lt;li&gt;Exceptions of type {@link IOException} are reported back to client.&lt;/li&gt;<a name="line.46"></a>
+<span class="sourceLineNo">047</span> *   &lt;li&gt;For any other kind of exception:<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *     &lt;ul&gt;<a name="line.48"></a>
+<span class="sourceLineNo">049</span> *       &lt;li&gt;If the configuration {@link CoprocessorHost#ABORT_ON_ERROR_KEY} is set to true, then<a name="line.49"></a>
+<span class="sourceLineNo">050</span> *         the server aborts.&lt;/li&gt;<a name="line.50"></a>
+<span class="sourceLineNo">051</span> *       &lt;li&gt;Otherwise, coprocessor is removed from the server and<a name="line.51"></a>
+<span class="sourceLineNo">052</span> *         {@link org.apache.hadoop.hbase.DoNotRetryIOException} is returned to the client.&lt;/li&gt;<a name="line.52"></a>
+<span class="sourceLineNo">053</span> *     &lt;/ul&gt;<a name="line.53"></a>
+<span class="sourceLineNo">054</span> *   &lt;/li&gt;<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * &lt;/ul&gt;<a name="line.55"></a>
+<span class="sourceLineNo">056</span> */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.57"></a>
+<span class="sourceLineNo">058</span>@InterfaceStability.Evolving<a name="line.58"></a>
+<span class="sourceLineNo">059</span>public interface RegionServerObserver extends Coprocessor {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  /**<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * Called before stopping region server.<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   */<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  default void preStopRegionServer(<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {}<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  /**<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   * This will be called before executing user request to roll a region server WAL.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   */<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  default void preRollWALWriterRequest(<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      throws IOException {}<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  /**<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   * This will be called after executing user request to roll a region server WAL.<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  default void postRollWALWriterRequest(<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      throws IOException {}<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  /**<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * This will be called after the replication endpoint is instantiated.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * @param endpoint - the base endpoint for replication<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * @return the endpoint to use during replication.<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   */<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  default ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    return endpoint;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  /**<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   * This will be called before executing replication request to shipping log entries.<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   * @param entries list of WALEntries to replicate<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * @param cells Cells that the WALEntries refer to (if cells is non-null)<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  default void preReplicateLogEntries(final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {}<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * This will be called after executing replication request to shipping log entries.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param entries list of WALEntries to replicate<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param cells Cells that the WALEntries refer to (if cells is non-null)<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   */<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  default void postReplicateLogEntries(<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {}<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * This will be called before clearing compaction queues<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.115"></a>
 <span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  default void preRollBackMerge(final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      final Region regionA, final Region regionB) throws IOException {}<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * This will be called after the roll back of the regions merge.<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * @param regionA region being merged.<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   * @param regionB region being merged.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   */<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  default void postRollBackMerge(final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      final Region regionA, final Region regionB) throws IOException {}<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  /**<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * This will be called before executing user request to roll a region server WAL.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  default void preRollWALWriterRequest(<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      throws IOException {}<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  /**<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * This will be called after executing user request to roll a region server WAL.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  default void postRollWALWriterRequest(<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      throws IOException {}<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  /**<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * This will be called after the replication endpoint is instantiated.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param endpoint - the base endpoint for replication<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @return the endpoint to use during replication.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  default ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    return endpoint;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  /**<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * This will be called before executing replication request to shipping log entries.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   * @param entries list of WALEntries to replicate<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * @param cells Cells that the WALEntries refer to (if cells is non-null)<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  default void preReplicateLogEntries(final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {}<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  /**<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * This will be called after executing replication request to shipping log entries.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param entries list of WALEntries to replicate<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param cells Cells that the WALEntries refer to (if cells is non-null)<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  default void postReplicateLogEntries(<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {}<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>  /**<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * This will be called before clearing compaction queues<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   */<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  default void preClearCompactionQueues(<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      throws IOException {}<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * This will be called after clearing compaction queues<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  default void postClearCompactionQueues(<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      throws IOException {}<a name="line.189"></a>
-<span class="sourceLineNo">190</span>}<a name="line.190"></a>
+<span class="sourceLineNo">117</span>  default void preClearCompactionQueues(<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      throws IOException {}<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * This will be called after clearing compaction queues<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * @param ctx the environment to interact with the framework and region server.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   */<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  default void postClearCompactionQueues(<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      final ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      throws IOException {}<a name="line.127"></a>
+<span class="sourceLineNo">128</span>}<a name="line.128"></a>
 
 
 


[11/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.html b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.html
index b1d65f3..28f6fcd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":9,"i7":9,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":9,"i7":9,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -501,195 +501,191 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 </tr>
 <tr id="i42" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testMergeRegions--">testMergeRegions</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i43" class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testModifyColumn--">testModifyColumn</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testMove--">testMove</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testMoveServers--">testMoveServers</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testMoveTables--">testMoveTables</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testNamespaceUserGrant--">testNamespaceUserGrant</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testOpenRegion--">testOpenRegion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testPermissionList--">testPermissionList</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testPostGrantRevoke--">testPostGrantRevoke</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testPostGrantRevokeAtQualifierLevel--">testPostGrantRevokeAtQualifierLevel</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testPrepareAndCleanBulkLoad--">testPrepareAndCleanBulkLoad</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testRead--">testRead</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testReadWrite--">testReadWrite</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testRegionOffline--">testRegionOffline</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testRemoteLocks--">testRemoteLocks</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testRemoveGroup--">testRemoveGroup</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testRemoveReplicationPeer--">testRemoveReplicationPeer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testReplicateLogEntries--">testReplicateLogEntries</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testRollWALWriterRequest--">testRollWALWriterRequest</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testSecurityCapabilities--">testSecurityCapabilities</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testSetQuota--">testSetQuota</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testSetSplitOrMergeEnabled--">testSetSplitOrMergeEnabled</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testShutdown--">testShutdown</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testSnapshot--">testSnapshot</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testSnapshotWithOwner--">testSnapshotWithOwner</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testSplitWithSplitRow--">testSplitWithSplitRow</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testStopMaster--">testStopMaster</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testStopRegionServer--">testStopRegionServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTableCreate--">testTableCreate</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTableDelete--">testTableDelete</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTableDeletion--">testTableDeletion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTableDescriptorsEnumeration--">testTableDescriptorsEnumeration</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTableDisable--">testTableDisable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTableEnable--">testTableEnable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTableModify--">testTableModify</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTableNameEnumeration--">testTableNameEnumeration</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTableTruncate--">testTableTruncate</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testTruncatePerms--">testTruncatePerms</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testUnassign--">testUnassign</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testUnauthorizedShutdown--">testUnauthorizedShutdown</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testUnauthorizedStopMaster--">testUnauthorizedStopMaster</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testUpdateReplicationPeerConfig--">testUpdateReplicationPeerConfig</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#testWrite--">testWrite</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#verifyAnyCreate-org.apache.hadoop.hbase.security.access.SecureTestUtil.AccessTestAction-">verifyAnyCreate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#verifyGlobal-org.apache.hadoop.hbase.security.access.SecureTestUtil.AccessTestAction-">verifyGlobal</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)</code>
 <div class="block">global operations</div>
 </td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#verifyRead-org.apache.hadoop.hbase.security.access.SecureTestUtil.AccessTestAction-">verifyRead</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#verifyReadWrite-org.apache.hadoop.hbase.security.access.SecureTestUtil.AccessTestAction-">verifyReadWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController.html#verifyWrite-org.apache.hadoop.hbase.security.access.SecureTestUtil.AccessTestAction-">verifyWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
@@ -1456,27 +1452,13 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 </dl>
 </li>
 </ul>
-<a name="testMergeRegions--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testMergeRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.860">testMergeRegions</a>()
-                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
-</dl>
-</li>
-</ul>
 <a name="testFlush--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.885">testFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.860">testFlush</a>()
                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1490,7 +1472,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testCompact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.900">testCompact</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.875">testCompact</a>()
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1504,7 +1486,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyRead</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.915">verifyRead</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.890">verifyRead</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1518,7 +1500,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyReadWrite</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.921">verifyReadWrite</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.896">verifyReadWrite</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1532,7 +1514,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testRead</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.928">testRead</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.903">testRead</a>()
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1546,7 +1528,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testWrite</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.969">testWrite</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.944">testWrite</a>()
                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1560,7 +1542,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testReadWrite</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1017">testReadWrite</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.992">testReadWrite</a>()
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1574,7 +1556,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testBulkLoad</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1052">testBulkLoad</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1027">testBulkLoad</a>()
                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1588,7 +1570,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testAppend</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1169">testAppend</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1144">testAppend</a>()
                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1602,7 +1584,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testGrantRevoke</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1196">testGrantRevoke</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1171">testGrantRevoke</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1616,7 +1598,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testPostGrantRevoke</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1278">testPostGrantRevoke</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1253">testPostGrantRevoke</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1630,7 +1612,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>hasFoundUserPermission</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1522">hasFoundUserPermission</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&nbsp;userPermissions,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1497">hasFoundUserPermission</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&nbsp;userPermissions,
                                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&nbsp;perms)</pre>
 </li>
 </ul>
@@ -1640,7 +1622,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>hasFoundUserPermission</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1527">hasFoundUserPermission</a>(org.apache.hadoop.hbase.security.access.UserPermission&nbsp;userPermission,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1502">hasFoundUserPermission</a>(org.apache.hadoop.hbase.security.access.UserPermission&nbsp;userPermission,
                                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&nbsp;perms)</pre>
 </li>
 </ul>
@@ -1650,7 +1632,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testPostGrantRevokeAtQualifierLevel</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1532">testPostGrantRevokeAtQualifierLevel</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1507">testPostGrantRevokeAtQualifierLevel</a>()
                                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1664,7 +1646,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testPermissionList</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1635">testPermissionList</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1610">testPermissionList</a>()
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1678,7 +1660,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testGlobalPermissionList</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1765">testGlobalPermissionList</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1740">testGlobalPermissionList</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1692,7 +1674,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyGlobal</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1792">verifyGlobal</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1767">verifyGlobal</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)
                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">global operations</div>
 <dl>
@@ -1707,7 +1689,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckPermissions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1799">testCheckPermissions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1774">testCheckPermissions</a>()
                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1721,7 +1703,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testStopRegionServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1966">testStopRegionServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1941">testStopRegionServer</a>()
                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1735,7 +1717,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testRollWALWriterRequest</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1981">testRollWALWriterRequest</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1956">testRollWALWriterRequest</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1749,7 +1731,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testOpenRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1996">testOpenRegion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1971">testOpenRegion</a>()
                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1763,7 +1745,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testCloseRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2011">testCloseRegion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1986">testCloseRegion</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1777,7 +1759,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2026">testSnapshot</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2001">testSnapshot</a>()
                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1791,7 +1773,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testSnapshotWithOwner</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2087">testSnapshotWithOwner</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2062">testSnapshotWithOwner</a>()
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1805,7 +1787,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testGlobalAuthorizationForNewRegisteredRS</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2145">testGlobalAuthorizationForNewRegisteredRS</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2120">testGlobalAuthorizationForNewRegisteredRS</a>()
                                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1819,7 +1801,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testTableDescriptorsEnumeration</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2208">testTableDescriptorsEnumeration</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2183">testTableDescriptorsEnumeration</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1833,7 +1815,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testTableNameEnumeration</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2252">testTableNameEnumeration</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2227">testTableNameEnumeration</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1847,7 +1829,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testTableDeletion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2274">testTableDeletion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2249">testTableDeletion</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1861,7 +1843,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>createTestTable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2303">createTestTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tname)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2278">createTestTable</a>(org.apache.hadoop.hbase.TableName&nbsp;tname)
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1875,7 +1857,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testNamespaceUserGrant</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2313">testNamespaceUserGrant</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2288">testNamespaceUserGrant</a>()
                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1889,7 +1871,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testAccessControlClientGrantRevoke</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2337">testAccessControlClientGrantRevoke</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2312">testAccessControlClientGrantRevoke</a>()
                                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1903,7 +1885,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testAccessControlClientGlobalGrantRevoke</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2376">testAccessControlClientGlobalGrantRevoke</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2351">testAccessControlClientGlobalGrantRevoke</a>()
                                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1917,7 +1899,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testAccessControlClientMultiGrantRevoke</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2422">testAccessControlClientMultiGrantRevoke</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2397">testAccessControlClientMultiGrantRevoke</a>()
                                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1931,7 +1913,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testAccessControlClientGrantRevokeOnNamespace</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2545">testAccessControlClientGrantRevokeOnNamespace</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2520">testAccessControlClientGrantRevokeOnNamespace</a>()
                                                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1945,7 +1927,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testCoprocessorExec</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2636">testCoprocessorExec</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2611">testCoprocessorExec</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1959,7 +1941,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testSetQuota</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2687">testSetQuota</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2662">testSetQuota</a>()
                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1973,7 +1955,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetNamespacePermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2754">testGetNamespacePermission</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2729">testGetNamespacePermission</a>()
                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1987,7 +1969,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespacePermissionsAndVerify</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2780">getNamespacePermissionsAndVerify</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespaceRegexWithoutPrefix,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2755">getNamespacePermissionsAndVerify</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespaceRegexWithoutPrefix,
                                               int&nbsp;expectedAmount,
                                               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expectedNamespace)
                                        throws org.apache.hadoop.hbase.exceptions.HBaseException</pre>
@@ -2009,7 +1991,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testTruncatePerms</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2797">testTruncatePerms</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2772">testTruncatePerms</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2023,7 +2005,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>getPrivilegedAction</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/security/PrivilegedAction.html?is-external=true" title="class or interface in java.security">PrivilegedAction</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2815">getPrivilegedAction</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/security/PrivilegedAction.html?is-external=true" title="class or interface in java.security">PrivilegedAction</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.security.access.UserPermission&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2790">getPrivilegedAction</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)</pre>
 </li>
 </ul>
 <a name="testAccessControlClientUserPerms--">
@@ -2032,7 +2014,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testAccessControlClientUserPerms</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2830">testAccessControlClientUserPerms</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2805">testAccessControlClientUserPerms</a>()
                                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2046,7 +2028,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testAccessControllerUserPermsRegexHandling</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2849">testAccessControllerUserPermsRegexHandling</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2824">testAccessControllerUserPermsRegexHandling</a>()
                                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2060,7 +2042,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyAnyCreate</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2898">verifyAnyCreate</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2873">verifyAnyCreate</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a>&nbsp;action)
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2074,7 +2056,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testPrepareAndCleanBulkLoad</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2906">testPrepareAndCleanBulkLoad</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2881">testPrepareAndCleanBulkLoad</a>()
                                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2088,7 +2070,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplicateLogEntries</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2928">testReplicateLogEntries</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2903">testReplicateLogEntries</a>()
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2102,7 +2084,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testMoveServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2946">testMoveServers</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2921">testMoveServers</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2116,7 +2098,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testMoveTables</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2961">testMoveTables</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2936">testMoveTables</a>()
                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2130,7 +2112,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testAddGroup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2976">testAddGroup</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2951">testAddGroup</a>()
                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2144,7 +2126,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testRemoveGroup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2991">testRemoveGroup</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2966">testRemoveGroup</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2158,7 +2140,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testBalanceGroup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3006">testBalanceGroup</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2981">testBalanceGroup</a>()
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2172,7 +2154,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testAddReplicationPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3021">testAddReplicationPeer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2996">testAddReplicationPeer</a>()
                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2186,7 +2168,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testRemoveReplicationPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3036">testRemoveReplicationPeer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3011">testRemoveReplicationPeer</a>()
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2200,7 +2182,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testEnableReplicationPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3051">testEnableReplicationPeer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3026">testEnableReplicationPeer</a>()
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2214,7 +2196,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testDisableReplicationPeer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3066">testDisableReplicationPeer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3041">testDisableReplicationPeer</a>()
                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2228,7 +2210,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetReplicationPeerConfig</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3081">testGetReplicationPeerConfig</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3056">testGetReplicationPeerConfig</a>()
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2242,7 +2224,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testUpdateReplicationPeerConfig</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3096">testUpdateReplicationPeerConfig</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3071">testUpdateReplicationPeerConfig</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2256,7 +2238,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testListReplicationPeers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3111">testListReplicationPeers</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3086">testListReplicationPeers</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2270,7 +2252,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testRemoteLocks</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3126">testRemoteLocks</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3101">testRemoteLocks</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2284,7 +2266,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testAccessControlRevokeOnlyFewPermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3195">testAccessControlRevokeOnlyFewPermission</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.3170">testAccessControlRevokeOnlyFewPermission</a>()
                                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController2.MyAccessController.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController2.MyAccessController.html b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController2.MyAccessController.html
index 38a0636..339e70b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController2.MyAccessController.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController2.MyAccessController.html
@@ -196,7 +196,7 @@ extends org.apache.hadoop.hbase.security.access.AccessController</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.security.access.AccessController</h3>
-<code>checkPermissions, getAuthManager, getRegion, getService, getUserPermissions, grant, initialize, isAuthorizationSupported, isCellAuthorizationSupported, permissionGranted, permissionGranted, postAbortProcedure, postCompletedCreateTableAction, postCreateReplicationEndPoint, postDelete, postDeleteColumnFamily, postDeleteNamespace, postDeleteTable, postEndpointInvocation, postGetProcedures, postGetTableDescriptors, postGetTableNames, postListNamespaceDescriptors, postLogReplay, postMerge, postMergeCommit, postModifyTable, postMutationBeforeWAL, postOpen, postPut, postReplicateLogEntries, postRollBackMerge, postRollWALWriterRequest, postScannerClose, postScannerFilterRow, postScannerOpen, postSetSplitOrMergeEnabled, postStartMaster, postTruncateTable, preAbortProcedure, preAddColumnFamily, preAddReplicationPeer, preAddRSGroup, preAppend, preAppendAfterRowLock, preAssign, preBalance, preBalanceRSGroup, preBalanceSwitch, preBatchMutate, preBulkLoadHFile, preCheckAndDelete, preCheckAn
 dDeleteAfterRowLock, preCheckAndPut, preCheckAndPutAfterRowLock, preCleanupBulkLoad, preClearCompactionQueues, preClearDeadServers, preCloneSnapshot, preClose, preCompact, preCreateNamespace, preCreateTable, preDelete, preDeleteColumnFamily, preDeleteNamespace, preDeleteSnapshot, preDeleteTable, preDisableReplicationPeer, preDisableTable, preEnableReplicationPeer, preEnableTable, preEndpointInvocation, preExists, preFlush, preGetLocks, preGetNamespaceDescriptor, preGetOp, preGetProcedures, preGetReplicationPeerConfig, preGetTableDescriptors, preIncrement, preIncrementAfterRowLock, preListReplicationPeers, preListSnapshot, preLockHeartbeat, preMerge, preMergeCommit, preMergeRegions, preModifyColumnFamily, preModifyNamespace, preModifyTable, preMove, preMoveServers, preMoveServersAndTables, preMoveTables, preOpen, prePrepareBulkLoad, prePut, preRegionOffline, preRemoveReplicationPeer, preRemoveRSGroup, preReplicateLogEntries, preRequestLock, preRestoreSnapshot, preRollBackMerge, preRo
 llWALWriterRequest, preScannerClose, preScannerNext, preScannerOpen, preSetNamespaceQuota, preSetSplitOrMergeEnabled, preSetTableQuota, preSetUserQuota, preSetUserQuota, preSetUserQuota, preShutdown, preSnapshot, preSplitRegion, preStopMaster, preStopRegionServer, preTableFlush, preTruncateTable, preUnassign, preUpdateReplicationPeerConfig, requireNamespacePermission, requireNamespacePermission, revoke, start, stop, updateACL</code></li>
+<code>checkPermissions, getAuthManager, getRegion, getService, getUserPermissions, grant, initialize, isAuthorizationSupported, isCellAuthorizationSupported, permissionGranted, permissionGranted, postAbortProcedure, postCompletedCreateTableAction, postCreateReplicationEndPoint, postDelete, postDeleteColumnFamily, postDeleteNamespace, postDeleteTable, postEndpointInvocation, postGetProcedures, postGetTableDescriptors, postGetTableNames, postListNamespaceDescriptors, postLogReplay, postModifyTable, postMutationBeforeWAL, postOpen, postPut, postReplicateLogEntries, postRollWALWriterRequest, postScannerClose, postScannerFilterRow, postScannerOpen, postSetSplitOrMergeEnabled, postStartMaster, postTruncateTable, preAbortProcedure, preAddColumnFamily, preAddReplicationPeer, preAddRSGroup, preAppend, preAppendAfterRowLock, preAssign, preBalance, preBalanceRSGroup, preBalanceSwitch, preBatchMutate, preBulkLoadHFile, preCheckAndDelete, preCheckAndDeleteAfterRowLock, preCheckAndPut, preCheckAn
 dPutAfterRowLock, preCleanupBulkLoad, preClearCompactionQueues, preClearDeadServers, preCloneSnapshot, preClose, preCompact, preCreateNamespace, preCreateTable, preDelete, preDeleteColumnFamily, preDeleteNamespace, preDeleteSnapshot, preDeleteTable, preDisableReplicationPeer, preDisableTable, preEnableReplicationPeer, preEnableTable, preEndpointInvocation, preExists, preFlush, preGetLocks, preGetNamespaceDescriptor, preGetOp, preGetProcedures, preGetReplicationPeerConfig, preGetTableDescriptors, preIncrement, preIncrementAfterRowLock, preListReplicationPeers, preListSnapshot, preLockHeartbeat, preMergeRegions, preModifyColumnFamily, preModifyNamespace, preModifyTable, preMove, preMoveServers, preMoveServersAndTables, preMoveTables, preOpen, prePrepareBulkLoad, prePut, preRegionOffline, preRemoveReplicationPeer, preRemoveRSGroup, preReplicateLogEntries, preRequestLock, preRestoreSnapshot, preRollWALWriterRequest, preScannerClose, preScannerNext, preScannerOpen, preSetNamespaceQuota, 
 preSetSplitOrMergeEnabled, preSetTableQuota, preSetUserQuota, preSetUserQuota, preSetUserQuota, preShutdown, preSnapshot, preSplitRegion, preStopMaster, preStopRegionServer, preTableFlush, preTruncateTable, preUnassign, preUpdateReplicationPeerConfig, requireNamespacePermission, requireNamespacePermission, revoke, start, stop, updateACL</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController3.FaultyAccessController.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController3.FaultyAccessController.html b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController3.FaultyAccessController.html
index 4dd376c..b32fe2a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController3.FaultyAccessController.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController3.FaultyAccessController.html
@@ -213,7 +213,7 @@ extends org.apache.hadoop.hbase.security.access.AccessController</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.security.access.AccessController</h3>
-<code>checkPermissions, getAuthManager, getRegion, getService, getUserPermissions, grant, initialize, isAuthorizationSupported, isCellAuthorizationSupported, permissionGranted, permissionGranted, postAbortProcedure, postCompletedCreateTableAction, postCreateReplicationEndPoint, postDelete, postDeleteColumnFamily, postDeleteNamespace, postDeleteTable, postEndpointInvocation, postGetProcedures, postGetTableDescriptors, postGetTableNames, postListNamespaceDescriptors, postLogReplay, postMerge, postMergeCommit, postModifyTable, postMutationBeforeWAL, postOpen, postPut, postReplicateLogEntries, postRollBackMerge, postRollWALWriterRequest, postScannerClose, postScannerFilterRow, postScannerOpen, postSetSplitOrMergeEnabled, postStartMaster, postTruncateTable, preAbortProcedure, preAddColumnFamily, preAddReplicationPeer, preAddRSGroup, preAppend, preAppendAfterRowLock, preAssign, preBalance, preBalanceRSGroup, preBalanceSwitch, preBatchMutate, preBulkLoadHFile, preCheckAndDelete, preCheckAn
 dDeleteAfterRowLock, preCheckAndPut, preCheckAndPutAfterRowLock, preCleanupBulkLoad, preClearCompactionQueues, preClearDeadServers, preCloneSnapshot, preClose, preCompact, preCreateNamespace, preCreateTable, preDelete, preDeleteColumnFamily, preDeleteNamespace, preDeleteSnapshot, preDeleteTable, preDisableReplicationPeer, preDisableTable, preEnableReplicationPeer, preEnableTable, preEndpointInvocation, preExists, preFlush, preGetLocks, preGetNamespaceDescriptor, preGetOp, preGetProcedures, preGetReplicationPeerConfig, preGetTableDescriptors, preIncrement, preIncrementAfterRowLock, preListReplicationPeers, preListSnapshot, preLockHeartbeat, preMerge, preMergeCommit, preMergeRegions, preModifyColumnFamily, preModifyNamespace, preModifyTable, preMove, preMoveServers, preMoveServersAndTables, preMoveTables, preOpen, prePrepareBulkLoad, prePut, preRegionOffline, preRemoveReplicationPeer, preRemoveRSGroup, preReplicateLogEntries, preRequestLock, preRestoreSnapshot, preRollBackMerge, preRo
 llWALWriterRequest, preScannerClose, preScannerNext, preScannerOpen, preSetNamespaceQuota, preSetSplitOrMergeEnabled, preSetTableQuota, preSetUserQuota, preSetUserQuota, preSetUserQuota, preShutdown, preSnapshot, preSplitRegion, preStopMaster, preStopRegionServer, preTableFlush, preTruncateTable, preUnassign, preUpdateReplicationPeerConfig, requireNamespacePermission, requireNamespacePermission, revoke, start, updateACL</code></li>
+<code>checkPermissions, getAuthManager, getRegion, getService, getUserPermissions, grant, initialize, isAuthorizationSupported, isCellAuthorizationSupported, permissionGranted, permissionGranted, postAbortProcedure, postCompletedCreateTableAction, postCreateReplicationEndPoint, postDelete, postDeleteColumnFamily, postDeleteNamespace, postDeleteTable, postEndpointInvocation, postGetProcedures, postGetTableDescriptors, postGetTableNames, postListNamespaceDescriptors, postLogReplay, postModifyTable, postMutationBeforeWAL, postOpen, postPut, postReplicateLogEntries, postRollWALWriterRequest, postScannerClose, postScannerFilterRow, postScannerOpen, postSetSplitOrMergeEnabled, postStartMaster, postTruncateTable, preAbortProcedure, preAddColumnFamily, preAddReplicationPeer, preAddRSGroup, preAppend, preAppendAfterRowLock, preAssign, preBalance, preBalanceRSGroup, preBalanceSwitch, preBatchMutate, preBulkLoadHFile, preCheckAndDelete, preCheckAndDeleteAfterRowLock, preCheckAndPut, preCheckAn
 dPutAfterRowLock, preCleanupBulkLoad, preClearCompactionQueues, preClearDeadServers, preCloneSnapshot, preClose, preCompact, preCreateNamespace, preCreateTable, preDelete, preDeleteColumnFamily, preDeleteNamespace, preDeleteSnapshot, preDeleteTable, preDisableReplicationPeer, preDisableTable, preEnableReplicationPeer, preEnableTable, preEndpointInvocation, preExists, preFlush, preGetLocks, preGetNamespaceDescriptor, preGetOp, preGetProcedures, preGetReplicationPeerConfig, preGetTableDescriptors, preIncrement, preIncrementAfterRowLock, preListReplicationPeers, preListSnapshot, preLockHeartbeat, preMergeRegions, preModifyColumnFamily, preModifyNamespace, preModifyTable, preMove, preMoveServers, preMoveServersAndTables, preMoveTables, preOpen, prePrepareBulkLoad, prePut, preRegionOffline, preRemoveReplicationPeer, preRemoveRSGroup, preReplicateLogEntries, preRequestLock, preRestoreSnapshot, preRollWALWriterRequest, preScannerClose, preScannerNext, preScannerOpen, preSetNamespaceQuota, 
 preSetSplitOrMergeEnabled, preSetTableQuota, preSetUserQuota, preSetUserQuota, preSetUserQuota, preShutdown, preSnapshot, preSplitRegion, preStopMaster, preStopRegionServer, preTableFlush, preTruncateTable, preUnassign, preUpdateReplicationPeerConfig, requireNamespacePermission, requireNamespacePermission, revoke, start, updateACL</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html
index 1d8f708..187451b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html
@@ -703,7 +703,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockList">
 <li class="blockList">
 <h4>testPassiveRegionOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html#line.868">testPassiveRegionOperations</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html#line.853">testPassiveRegionOperations</a>()
                                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test region observer</div>
 <dl>
@@ -718,7 +718,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testPassiveCellPermissions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html#line.1005">testPassiveCellPermissions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html#line.990">testPassiveCellPermissions</a>()
                                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index 744f683..66aa226 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -248,10 +248,10 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index a8434ed..2573409 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -140,8 +140,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 </ul>
 </li>


[03/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.TestTableDDLProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.TestTableDDLProcedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.TestTableDDLProcedure.html
index 6899321..da046b2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.TestTableDDLProcedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.TestTableDDLProcedure.html
@@ -865,2376 +865,2351 @@
 <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>  @Test (timeout=180000)<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  public void testMergeRegions() throws Exception {<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    createTestTable(tableName);<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    try {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>      final List&lt;HRegion&gt; regions = TEST_UTIL.getHBaseCluster().findRegionsForTable(tableName);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      assertTrue("not enough regions: " + regions.size(), regions.size() &gt;= 2);<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>      AccessTestAction action = new AccessTestAction() {<a name="line.867"></a>
-<span class="sourceLineNo">868</span>        @Override<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        public Object run() throws Exception {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>          ACCESS_CONTROLLER.preMerge(ObserverContext.createAndPrepare(RSCP_ENV, null),<a name="line.870"></a>
-<span class="sourceLineNo">871</span>            regions.get(0), regions.get(1));<a name="line.871"></a>
-<span class="sourceLineNo">872</span>          return null;<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        }<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      };<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>      verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      verifyDenied(action, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    } finally {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      deleteTable(TEST_UTIL, tableName);<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    }<a name="line.881"></a>
-<span class="sourceLineNo">882</span>  }<a name="line.882"></a>
-<span class="sourceLineNo">883</span><a name="line.883"></a>
-<span class="sourceLineNo">884</span>  @Test (timeout=180000)<a name="line.884"></a>
-<span class="sourceLineNo">885</span>  public void testFlush() throws Exception {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    AccessTestAction action = new AccessTestAction() {<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      @Override<a name="line.887"></a>
-<span class="sourceLineNo">888</span>      public Object run() throws Exception {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.889"></a>
-<span class="sourceLineNo">890</span>        return null;<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    };<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      USER_GROUP_ADMIN);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<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>  @Test (timeout=180000)<a name="line.899"></a>
-<span class="sourceLineNo">900</span>  public void testCompact() throws Exception {<a name="line.900"></a>
-<span class="sourceLineNo">901</span>    AccessTestAction action = new AccessTestAction() {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      @Override<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      public Object run() throws Exception {<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        ACCESS_CONTROLLER.preCompact(ObserverContext.createAndPrepare(RCP_ENV, null), null, null,<a name="line.904"></a>
-<span class="sourceLineNo">905</span>          ScanType.COMPACT_RETAIN_DELETES, null);<a name="line.905"></a>
-<span class="sourceLineNo">906</span>        return null;<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>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      USER_GROUP_ADMIN);<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<a name="line.912"></a>
-<span class="sourceLineNo">913</span>  }<a name="line.913"></a>
-<span class="sourceLineNo">914</span><a name="line.914"></a>
-<span class="sourceLineNo">915</span>  private void verifyRead(AccessTestAction action) throws Exception {<a name="line.915"></a>
-<span class="sourceLineNo">916</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW, USER_RO,<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      USER_GROUP_READ);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    verifyDenied(action, USER_NONE, USER_GROUP_CREATE, USER_GROUP_ADMIN, USER_GROUP_WRITE);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>  }<a name="line.919"></a>
-<span class="sourceLineNo">920</span><a name="line.920"></a>
-<span class="sourceLineNo">921</span>  private void verifyReadWrite(AccessTestAction action) throws Exception {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    verifyDenied(action, USER_NONE, USER_RO, USER_GROUP_ADMIN, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        USER_GROUP_WRITE);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>  }<a name="line.925"></a>
-<span class="sourceLineNo">926</span><a name="line.926"></a>
-<span class="sourceLineNo">927</span>  @Test (timeout=180000)<a name="line.927"></a>
-<span class="sourceLineNo">928</span>  public void testRead() throws Exception {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>    // get action<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    AccessTestAction getAction = new AccessTestAction() {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>      @Override<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      public Object run() throws Exception {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        Get g = new Get(TEST_ROW);<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        g.addFamily(TEST_FAMILY);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.936"></a>
-<span class="sourceLineNo">937</span>          t.get(g);<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        }<a name="line.938"></a>
-<span class="sourceLineNo">939</span>        return null;<a name="line.939"></a>
-<span class="sourceLineNo">940</span>      }<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    };<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    verifyRead(getAction);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    // action for scanning<a name="line.944"></a>
-<span class="sourceLineNo">945</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      @Override<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      public Object run() throws Exception {<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        Scan s = new Scan();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>        s.addFamily(TEST_FAMILY);<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>            Table table = conn.getTable(TEST_TABLE)) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>          ResultScanner scanner = table.getScanner(s);<a name="line.952"></a>
-<span class="sourceLineNo">953</span>          try {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>            for (Result r = scanner.next(); r != null; r = scanner.next()) {<a name="line.954"></a>
-<span class="sourceLineNo">955</span>              // do nothing<a name="line.955"></a>
-<span class="sourceLineNo">956</span>            }<a name="line.956"></a>
-<span class="sourceLineNo">957</span>          } finally {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>            scanner.close();<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>        return null;<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      }<a name="line.962"></a>
-<span class="sourceLineNo">963</span>    };<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    verifyRead(scanAction);<a name="line.964"></a>
-<span class="sourceLineNo">965</span>  }<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>  @Test (timeout=180000)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>  // test put, delete, increment<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  public void testWrite() throws Exception {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    // put action<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    AccessTestAction putAction = new AccessTestAction() {<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      @Override<a name="line.972"></a>
-<span class="sourceLineNo">973</span>      public Object run() throws Exception {<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Put p = new Put(TEST_ROW);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.977"></a>
-<span class="sourceLineNo">978</span>          t.put(p);<a name="line.978"></a>
-<span class="sourceLineNo">979</span>        }<a name="line.979"></a>
-<span class="sourceLineNo">980</span>        return null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      }<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    };<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    verifyWrite(putAction);<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    // delete action<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    AccessTestAction deleteAction = new AccessTestAction() {<a name="line.986"></a>
-<span class="sourceLineNo">987</span>      @Override<a name="line.987"></a>
-<span class="sourceLineNo">988</span>      public Object run() throws Exception {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>        Delete d = new Delete(TEST_ROW);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>        d.addFamily(TEST_FAMILY);<a name="line.990"></a>
-<span class="sourceLineNo">991</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>          t.delete(d);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>        }<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        return null;<a name="line.995"></a>
-<span class="sourceLineNo">996</span>      }<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    };<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    verifyWrite(deleteAction);<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    // increment action<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>    AccessTestAction incrementAction = new AccessTestAction() {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>      @Override<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      public Object run() throws Exception {<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>        Increment inc = new Increment(TEST_ROW);<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>        inc.addColumn(TEST_FAMILY, TEST_QUALIFIER, 1);<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>          t.increment(inc);<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        }<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        return null;<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>    verifyWrite(incrementAction);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  @Test (timeout=180000)<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  public void testReadWrite() throws Exception {<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>    // action for checkAndDelete<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    AccessTestAction checkAndDeleteAction = new AccessTestAction() {<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      @Override<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      public Object run() throws Exception {<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>        Delete d = new Delete(TEST_ROW);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        d.addFamily(TEST_FAMILY);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          t.checkAndDelete(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>              Bytes.toBytes("test_value"), d);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>        }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        return null;<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    };<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    verifyReadWrite(checkAndDeleteAction);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span><a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    // action for checkAndPut()<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    AccessTestAction checkAndPut = new AccessTestAction() {<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      @Override<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      public Object run() throws Exception {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>        Put p = new Put(TEST_ROW);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>          t.checkAndPut(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>              Bytes.toBytes("test_value"), p);<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>        }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>        return null;<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>      }<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>    };<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>    verifyReadWrite(checkAndPut);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>  }<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span><a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>  @Test (timeout=180000)<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>  public void testBulkLoad() throws Exception {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    try {<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>      FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      final Path dir = TEST_UTIL.getDataTestDirOnTestFS("testBulkLoad");<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>      fs.mkdirs(dir);<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      // need to make it globally writable<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      // so users creating HFiles have write permissions<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>      fs.setPermission(dir, FsPermission.valueOf("-rwxrwxrwx"));<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>      AccessTestAction bulkLoadAction = new AccessTestAction() {<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>        @Override<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        public Object run() throws Exception {<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>          int numRows = 3;<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span><a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>          // Making the assumption that the test table won't split between the range<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          byte[][][] hfileRanges = { { { (byte) 0 }, { (byte) 9 } } };<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          Path bulkLoadBasePath = new Path(dir, new Path(User.getCurrent().getName()));<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          new BulkLoadHelper(bulkLoadBasePath).bulkLoadHFile(TEST_TABLE, TEST_FAMILY,<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>            TEST_QUALIFIER, hfileRanges, numRows);<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span><a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>          return null;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      };<a name="line.1075"></a>
+<span class="sourceLineNo">860</span>  public void testFlush() throws Exception {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    AccessTestAction action = new AccessTestAction() {<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      @Override<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      public Object run() throws Exception {<a name="line.863"></a>
+<span class="sourceLineNo">864</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.864"></a>
+<span class="sourceLineNo">865</span>        return null;<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>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      USER_GROUP_ADMIN);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>  }<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>  @Test (timeout=180000)<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  public void testCompact() throws Exception {<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    AccessTestAction action = new AccessTestAction() {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>      @Override<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      public Object run() throws Exception {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>        ACCESS_CONTROLLER.preCompact(ObserverContext.createAndPrepare(RCP_ENV, null), null, null,<a name="line.879"></a>
+<span class="sourceLineNo">880</span>          ScanType.COMPACT_RETAIN_DELETES, null);<a name="line.880"></a>
+<span class="sourceLineNo">881</span>        return null;<a name="line.881"></a>
+<span class="sourceLineNo">882</span>      }<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    };<a name="line.883"></a>
+<span class="sourceLineNo">884</span><a name="line.884"></a>
+<span class="sourceLineNo">885</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      USER_GROUP_ADMIN);<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<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>  private void verifyRead(AccessTestAction action) throws Exception {<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW, USER_RO,<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      USER_GROUP_READ);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>    verifyDenied(action, USER_NONE, USER_GROUP_CREATE, USER_GROUP_ADMIN, USER_GROUP_WRITE);<a name="line.893"></a>
+<span class="sourceLineNo">894</span>  }<a name="line.894"></a>
+<span class="sourceLineNo">895</span><a name="line.895"></a>
+<span class="sourceLineNo">896</span>  private void verifyReadWrite(AccessTestAction action) throws Exception {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW);<a name="line.897"></a>
+<span class="sourceLineNo">898</span>    verifyDenied(action, USER_NONE, USER_RO, USER_GROUP_ADMIN, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        USER_GROUP_WRITE);<a name="line.899"></a>
+<span class="sourceLineNo">900</span>  }<a name="line.900"></a>
+<span class="sourceLineNo">901</span><a name="line.901"></a>
+<span class="sourceLineNo">902</span>  @Test (timeout=180000)<a name="line.902"></a>
+<span class="sourceLineNo">903</span>  public void testRead() throws Exception {<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    // get action<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    AccessTestAction getAction = new AccessTestAction() {<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      @Override<a name="line.906"></a>
+<span class="sourceLineNo">907</span>      public Object run() throws Exception {<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        Get g = new Get(TEST_ROW);<a name="line.908"></a>
+<span class="sourceLineNo">909</span>        g.addFamily(TEST_FAMILY);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.911"></a>
+<span class="sourceLineNo">912</span>          t.get(g);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>        }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        return null;<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>    verifyRead(getAction);<a name="line.917"></a>
+<span class="sourceLineNo">918</span><a name="line.918"></a>
+<span class="sourceLineNo">919</span>    // action for scanning<a name="line.919"></a>
+<span class="sourceLineNo">920</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      @Override<a name="line.921"></a>
+<span class="sourceLineNo">922</span>      public Object run() throws Exception {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        Scan s = new Scan();<a name="line.923"></a>
+<span class="sourceLineNo">924</span>        s.addFamily(TEST_FAMILY);<a name="line.924"></a>
+<span class="sourceLineNo">925</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.925"></a>
+<span class="sourceLineNo">926</span>            Table table = conn.getTable(TEST_TABLE)) {<a name="line.926"></a>
+<span class="sourceLineNo">927</span>          ResultScanner scanner = table.getScanner(s);<a name="line.927"></a>
+<span class="sourceLineNo">928</span>          try {<a name="line.928"></a>
+<span class="sourceLineNo">929</span>            for (Result r = scanner.next(); r != null; r = scanner.next()) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>              // do nothing<a name="line.930"></a>
+<span class="sourceLineNo">931</span>            }<a name="line.931"></a>
+<span class="sourceLineNo">932</span>          } finally {<a name="line.932"></a>
+<span class="sourceLineNo">933</span>            scanner.close();<a name="line.933"></a>
+<span class="sourceLineNo">934</span>          }<a name="line.934"></a>
+<span class="sourceLineNo">935</span>        }<a name="line.935"></a>
+<span class="sourceLineNo">936</span>        return null;<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>    verifyRead(scanAction);<a name="line.939"></a>
+<span class="sourceLineNo">940</span>  }<a name="line.940"></a>
+<span class="sourceLineNo">941</span><a name="line.941"></a>
+<span class="sourceLineNo">942</span>  @Test (timeout=180000)<a name="line.942"></a>
+<span class="sourceLineNo">943</span>  // test put, delete, increment<a name="line.943"></a>
+<span class="sourceLineNo">944</span>  public void testWrite() throws Exception {<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    // put action<a name="line.945"></a>
+<span class="sourceLineNo">946</span>    AccessTestAction putAction = new AccessTestAction() {<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      @Override<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      public Object run() throws Exception {<a name="line.948"></a>
+<span class="sourceLineNo">949</span>        Put p = new Put(TEST_ROW);<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>          t.put(p);<a name="line.953"></a>
+<span class="sourceLineNo">954</span>        }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>        return null;<a name="line.955"></a>
+<span class="sourceLineNo">956</span>      }<a name="line.956"></a>
+<span class="sourceLineNo">957</span>    };<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    verifyWrite(putAction);<a name="line.958"></a>
+<span class="sourceLineNo">959</span><a name="line.959"></a>
+<span class="sourceLineNo">960</span>    // delete action<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    AccessTestAction deleteAction = new AccessTestAction() {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      @Override<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      public Object run() throws Exception {<a name="line.963"></a>
+<span class="sourceLineNo">964</span>        Delete d = new Delete(TEST_ROW);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>        d.addFamily(TEST_FAMILY);<a name="line.965"></a>
+<span class="sourceLineNo">966</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>          t.delete(d);<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        }<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        return 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>    verifyWrite(deleteAction);<a name="line.973"></a>
+<span class="sourceLineNo">974</span><a name="line.974"></a>
+<span class="sourceLineNo">975</span>    // increment action<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    AccessTestAction incrementAction = new AccessTestAction() {<a name="line.976"></a>
+<span class="sourceLineNo">977</span>      @Override<a name="line.977"></a>
+<span class="sourceLineNo">978</span>      public Object run() throws Exception {<a name="line.978"></a>
+<span class="sourceLineNo">979</span>        Increment inc = new Increment(TEST_ROW);<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        inc.addColumn(TEST_FAMILY, TEST_QUALIFIER, 1);<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.981"></a>
+<span class="sourceLineNo">982</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.982"></a>
+<span class="sourceLineNo">983</span>          t.increment(inc);<a name="line.983"></a>
+<span class="sourceLineNo">984</span>        }<a name="line.984"></a>
+<span class="sourceLineNo">985</span>        return null;<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>    verifyWrite(incrementAction);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Test (timeout=180000)<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public void testReadWrite() throws Exception {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    // action for checkAndDelete<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    AccessTestAction checkAndDeleteAction = new AccessTestAction() {<a name="line.994"></a>
+<span class="sourceLineNo">995</span>      @Override<a name="line.995"></a>
+<span class="sourceLineNo">996</span>      public Object run() throws Exception {<a name="line.996"></a>
+<span class="sourceLineNo">997</span>        Delete d = new Delete(TEST_ROW);<a name="line.997"></a>
+<span class="sourceLineNo">998</span>        d.addFamily(TEST_FAMILY);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>          t.checkAndDelete(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>              Bytes.toBytes("test_value"), d);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>        }<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>        return null;<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>    verifyReadWrite(checkAndDeleteAction);<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span><a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    // action for checkAndPut()<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>    AccessTestAction checkAndPut = new AccessTestAction() {<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      @Override<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>      public Object run() throws Exception {<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>        Put p = new Put(TEST_ROW);<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>          t.checkAndPut(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>              Bytes.toBytes("test_value"), p);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>        }<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>        return null;<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>      }<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    };<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    verifyReadWrite(checkAndPut);<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>  @Test (timeout=180000)<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>  public void testBulkLoad() throws Exception {<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    try {<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>      FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>      final Path dir = TEST_UTIL.getDataTestDirOnTestFS("testBulkLoad");<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>      fs.mkdirs(dir);<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>      // need to make it globally writable<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // so users creating HFiles have write permissions<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      fs.setPermission(dir, FsPermission.valueOf("-rwxrwxrwx"));<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span><a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      AccessTestAction bulkLoadAction = new AccessTestAction() {<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>        @Override<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>        public Object run() throws Exception {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>          int numRows = 3;<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span><a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>          // Making the assumption that the test table won't split between the range<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          byte[][][] hfileRanges = { { { (byte) 0 }, { (byte) 9 } } };<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span><a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>          Path bulkLoadBasePath = new Path(dir, new Path(User.getCurrent().getName()));<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          new BulkLoadHelper(bulkLoadBasePath).bulkLoadHFile(TEST_TABLE, TEST_FAMILY,<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>            TEST_QUALIFIER, hfileRanges, numRows);<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span><a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>          return null;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>        }<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      };<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span><a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>      // User performing bulk loads must have privilege to read table metadata<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>      // (ADMIN or CREATE)<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>      verifyAllowed(bulkLoadAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE,<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>        USER_GROUP_CREATE);<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>      verifyDenied(bulkLoadAction, USER_RW, USER_NONE, USER_RO, USER_GROUP_READ, USER_GROUP_WRITE,<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>        USER_GROUP_ADMIN);<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    } finally {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>      // Reinit after the bulk upload<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>      TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>    }<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>  }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span><a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>  public class BulkLoadHelper {<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    private final FileSystem fs;<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>    private final Path loadPath;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    private final Configuration conf;<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    public BulkLoadHelper(Path loadPath) throws IOException {<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>      fs = TEST_UTIL.getTestFileSystem();<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>      conf = TEST_UTIL.getConfiguration();<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>      loadPath = loadPath.makeQualified(fs);<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>      this.loadPath = loadPath;<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>    }<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span><a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      // User performing bulk loads must have privilege to read table metadata<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>      // (ADMIN or CREATE)<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      verifyAllowed(bulkLoadAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE,<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>        USER_GROUP_CREATE);<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>      verifyDenied(bulkLoadAction, USER_RW, USER_NONE, USER_RO, USER_GROUP_READ, USER_GROUP_WRITE,<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>        USER_GROUP_ADMIN);<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    } finally {<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      // Reinit after the bulk upload<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>      TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>      TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<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><a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>  public class BulkLoadHelper {<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    private final FileSystem fs;<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    private final Path loadPath;<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>    private final Configuration conf;<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span><a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    public BulkLoadHelper(Path loadPath) throws IOException {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      fs = TEST_UTIL.getTestFileSystem();<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      conf = TEST_UTIL.getConfiguration();<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>      loadPath = loadPath.makeQualified(fs);<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      this.loadPath = loadPath;<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>    }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span><a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    private void createHFile(Path path,<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>        byte[] family, byte[] qualifier,<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>        byte[] startKey, byte[] endKey, int numRows) throws IOException {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      HFile.Writer writer = null;<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      long now = System.currentTimeMillis();<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>      try {<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>        HFileContext context = new HFileContextBuilder().build();<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>        writer = HFile.getWriterFactory(conf, new CacheConfig(conf))<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>            .withPath(fs, path)<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>            .withFileContext(context)<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>            .create();<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>        // subtract 2 since numRows doesn't include boundary keys<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>        for (byte[] key : Bytes.iterateOnSplits(startKey, endKey, true, numRows-2)) {<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>          KeyValue kv = new KeyValue(key, family, qualifier, now, key);<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>          writer.append(kv);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>        }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>      } finally {<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>        if(writer != null)<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>          writer.close();<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>      }<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    }<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span><a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>    private void bulkLoadHFile(<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>        TableName tableName,<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>        byte[] family,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        byte[] qualifier,<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>        byte[][][] hfileRanges,<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>        int numRowsPerRange) throws Exception {<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span><a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>      Path familyDir = new Path(loadPath, Bytes.toString(family));<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>      fs.mkdirs(familyDir);<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      int hfileIdx = 0;<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>      for (byte[][] range : hfileRanges) {<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>        byte[] from = range[0];<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>        byte[] to = range[1];<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>        createHFile(new Path(familyDir, "hfile_"+(hfileIdx++)),<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>            family, qualifier, from, to, numRowsPerRange);<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      }<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>      //set global read so RegionServer can move it<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      setPermission(loadPath, FsPermission.valueOf("-rwxrwxrwx"));<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>      try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>           Admin admin = conn.getAdmin();<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>           RegionLocator locator = conn.getRegionLocator(tableName);<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>           Table table = conn.getTable(tableName)) {<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>        TEST_UTIL.waitUntilAllRegionsAssigned(tableName);<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>        LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>        loader.doBulkLoad(loadPath, admin, table, locator);<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>      }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span><a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    public void setPermission(Path dir, FsPermission perm) throws IOException {<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>      if(!fs.getFileStatus(dir).isDirectory()) {<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        fs.setPermission(dir,perm);<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>      }<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>      else {<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>        for(FileStatus el : fs.listStatus(dir)) {<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>          fs.setPermission(el.getPath(), perm);<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>          setPermission(el.getPath() , perm);<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>        }<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>      }<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>    }<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>  }<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span><a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>  @Test (timeout=180000)<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>  public void testAppend() throws Exception {<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span><a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>    AccessTestAction appendAction = new AccessTestAction() {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>      @Override<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>      public Object run() throws Exception {<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>        byte[] row = TEST_ROW;<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>        byte[] qualifier = TEST_QUALIFIER;<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>        Put put = new Put(row);<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>        put.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(1));<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>        Append append = new Append(row);<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>        append.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(2));<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>          t.put(put);<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>          t.append(append);<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>        }<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>        return null;<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      }<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>    verifyAllowed(appendAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW,<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>      USER_GROUP_WRITE);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    verifyDenied(appendAction, USER_RO, USER_NONE, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      USER_GROUP_ADMIN);<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>  }<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span><a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>  @Test (timeout=180000)<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>  public void testGrantRevoke() throws Exception {<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>    AccessTestAction grantAction = new AccessTestAction() {<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      @Override<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>      public Object run() throws Exception {<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          AccessControlService.BlockingInterface protocol =<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>            AccessControlService.newBlockingStub(service);<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>          AccessControlUtil.grant(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY,<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>              null, false, Action.READ);<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>        }<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>        return null;<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>      }<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>    };<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span><a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>    AccessTestAction revokeAction = new AccessTestAction() {<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>      @Override<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>      public Object run() throws Exception {<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>          AccessControlService.BlockingInterface protocol =<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>            AccessControlService.newBlockingStub(service);<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>          AccessControlUtil.revoke(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>            Action.READ);<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>        }<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>        return null;<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>      }<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    };<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span><a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>    AccessTestAction getTablePermissionsAction = new AccessTestAction() {<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>      @Override<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>      public Object run() throws Exception {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)){<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>          AccessControlService.BlockingInterface protocol =<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>              AccessControlService.newBlockingStub(service);<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>          AccessControlUtil.getUserPermissions(null, protocol, TEST_TABLE);<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>        }<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>        return null;<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>      }<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>    };<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>    AccessTestAction getGlobalPermissionsAction = new AccessTestAction() {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      @Override<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      public Object run() throws Exception {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME);) {<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>          BlockingRpcChannel service = acl.coprocessorService(HConstants.EMPTY_START_ROW);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>          AccessControlService.BlockingInterface protocol =<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>            AccessControlService.newBlockingStub(service);<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>          AccessControlUtil.getUserPermissions(null, protocol);<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>        }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>        return null;<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>      }<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    };<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span><a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>    verifyAllowed(grantAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>    verifyDenied(grantAction, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>    try {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>      verifyAllowed(revokeAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>      verifyDenied(revokeAction, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span><a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>      verifyAllowed(getTablePermissionsAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>      verifyDenied(getTablePermissionsAction, USER_CREATE, USER_RW, USER_RO, USER_NONE,<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>        USER_GROUP_READ, USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span><a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>      verifyAllowed(getGlobalPermissionsAction, SUPERUSER, USER_ADMIN, USER_GROUP_ADMIN);<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>      verifyDenied(getGlobalPermissionsAction, USER_CREATE, USER_OWNER, USER_RW, USER_RO,<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>        USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    } finally {<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>      // Cleanup, Grant the revoked permission back to the user<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>      grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>        Permission.Action.READ);<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span><a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>  @Test (timeout=180000)<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  public void testPostGrantRevoke() throws Exception {<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    final TableName tableName =<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>        TableName.valueOf("TempTable");<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>    final byte[] family1 = Bytes.toBytes("f1");<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>    final byte[] family2 = Bytes.toBytes("f2");<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>    final byte[] qualifier = Bytes.toBytes("q");<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span><a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    // create table<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>    Admin admin = TEST_UTIL.getAdmin();<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>    if (admin.tableExists(tableName)) {<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>      deleteTable(TEST_UTIL, tableName);<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>    }<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    htd.addFamily(new HColumnDescriptor(family1));<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>    htd.addFamily(new HColumnDescriptor(family2));<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>    createTable(TEST_UTIL, htd);<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>    try {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>      // create temp users<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>      User tblUser =<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>          User.createUserForTesting(TEST_UTIL.getConfiguration(), "tbluser", new String[0]);<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>      User gblUser =<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>          User.createUserForTesting(TEST_UTIL.getConfiguration(), "gbluser", new String[0]);<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span><a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>      // prepare actions:<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>      AccessTestAction putActionAll = new AccessTestAction() {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>        @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>        public Object run() throws Exception {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>          p.addColumn(family1, qualifier, Bytes.toBytes("v1"));<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>          p.addColumn(family2, qualifier, Bytes.toBytes("v2"));<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span><a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>              Table t = conn.getTable(tableName);) {<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>            t.put(p);<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>          }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>          return null;<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>        }<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>      };<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span><a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>      AccessTestAction putAction1 = new AccessTestAction() {<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>        @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>        public Object run() throws Exception {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>          p.addColumn(family1, qualifier, Bytes.toBytes("v1"));<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>              Table t = conn.getTable(tableName)) {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>            t.put(p);<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>          }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>          return null;<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>        }<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>      };<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span><a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>      AccessTestAction putAction2 = new AccessTestAction() {<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>        @Override<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>        public Object run() throws Exception {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>          p.addColumn(family2, qualifier, Bytes.toBytes("v2"));<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>              Table t = conn.getTable(tableName);) {<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>            t.put(p);<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>          }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>          return null;<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>        }<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>      };<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span><a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      AccessTestAction getActionAll = new AccessTestAction() {<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>        @Override<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>        public Object run() throws Exception {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>          Get g = new Get(TEST_ROW);<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>          g.addFamily(family1);<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>          g.addFamily(family2);<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>              Table t = conn.getTable(tableName);) {<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>            t.get(g);<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>          }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>          return null;<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>        }<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>      };<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span><a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>      AccessTestAction getAction1 = new AccessTestAction() {<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>        @Override<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>        public Object run() throws Exception {<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>          Get g = new Get(TEST_ROW);<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>          g.addFamily(family1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>              Table t = conn.getTable(tableName)) {<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>            t.get(g);<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>          }<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>          return null;<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>        }<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      };<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span><a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      AccessTestAction getAction2 = new AccessTestAction() {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>        @Override<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>        public Object run() throws Exception {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>          Get g = new Get(TEST_ROW);<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>          g.addFamily(family2);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>              Table t = conn.getTable(tableName)) {<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>            t.get(g);<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>          }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>          return null;<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>        }<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>      AccessTestAction deleteActionAll = new AccessTestAction() {<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>        @Override<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>        public Object run() throws Exception {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>          Delete d = new Delete(TEST_ROW);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>          d.addFamily(family1);<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>          d.addFamily(family2);<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>              Table t = conn.getTable(tableName)) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>            t.delete(d);<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>          }<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>          return null;<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        }<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>      };<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span><a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>      AccessTestAction deleteAction1 = new AccessTestAction() {<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>        @Override<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>        public Object run() throws Exception {<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          Delete d = new Delete(TEST_ROW);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>          d.addFamily(family1);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>              Table t = conn.getTable(tableName)) {<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>            t.delete(d);<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>          }<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          return null;<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>        }<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>      };<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>      AccessTestAction deleteAction2 = new AccessTestAction() {<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>        @Override<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        public Object run() throws Exception {<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>          Delete d = new Delete(TEST_ROW);<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>          d.addFamily(family2);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>              Table t = conn.getTable(tableName)) {<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>            t.delete(d);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>          }<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>          return null;<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>        }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>      };<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span><a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>      // initial check:<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>      verifyDenied(tblUser, getActionAll, getAction1, getAction2);<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>      verifyDenied(tblUser, putActionAll, putAction1, putAction2);<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>      verifyDenied(tblUser, deleteActionAll, deleteAction1, deleteAction2);<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span><a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>      verifyDenied(gblUser, getActionAll, getAction1, getAction2);<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>      verifyDenied(gblUser, putActionAll, putAction1, putAction2);<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>      verifyDenied(gblUser, deleteActionAll, deleteAction1, deleteAction2);<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span><a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>      // grant table read permission<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>      grantGlobal(TEST_UTIL, gblUser.getShortName(), Permission.Action.READ);<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>      grantOnTable(TEST_UTIL, tblUser.getShortName(), tableName, null, null, Permission.Action.READ);<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span><a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>      // check<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>      verifyAllowed(tblUser, getActionAll, getAction1, getAction2);<a name="line.1438"></a>
+<span class="sourceLineNo">1077</span>    private void createHFile(Path path,<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        byte[] family, byte[] qualifier,<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>        byte[] startKey, byte[] endKey, int numRows) throws IOException {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span><a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      HFile.Writer writer = null;<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>      long now = System.currentTimeMillis();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      try {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>        HFileContext context = new HFileContextBuilder().build();<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>        writer = HFile.getWriterFactory(conf, new CacheConfig(conf))<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>            .withPath(fs, path)<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            .withFileContext(context)<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>            .create();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>        // subtract 2 since numRows doesn't include boundary keys<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>        for (byte[] key : Bytes.iterateOnSplits(startKey, endKey, true, numRows-2)) {<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>          KeyValue kv = new KeyValue(key, family, qualifier, now, key);<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>          writer.append(kv);<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>        }<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>      } finally {<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>        if(writer != null)<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>          writer.close();<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>      }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>    }<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span><a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    private void bulkLoadHFile(<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>        TableName tableName,<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>        byte[] family,<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>        byte[] qualifier,<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>        byte[][][] hfileRanges,<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>        int numRowsPerRange) throws Exception {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span><a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>      Path familyDir = new Path(loadPath, Bytes.toString(family));<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>      fs.mkdirs(familyDir);<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>      int hfileIdx = 0;<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>      for (byte[][] range : hfileRanges) {<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>        byte[] from = range[0];<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>        byte[] to = range[1];<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>        createHFile(new Path(familyDir, "hfile_"+(hfileIdx++)),<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>            family, qualifier, from, to, numRowsPerRange);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>      }<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      //set global read so RegionServer can move it<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      setPermission(loadPath, FsPermission.valueOf("-rwxrwxrwx"));<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>      try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>           Admin admin = conn.getAdmin();<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>           RegionLocator locator = conn.getRegionLocator(tableName);<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>           Table table = conn.getTable(tableName)) {<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>        TEST_UTIL.waitUntilAllRegionsAssigned(tableName);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>        LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>        loader.doBulkLoad(loadPath, admin, table, locator);<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>      }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>    }<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span><a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>    public void setPermission(Path dir, FsPermission perm) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>      if(!fs.getFileStatus(dir).isDirectory()) {<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>        fs.setPermission(dir,perm);<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      }<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      else {<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>        for(FileStatus el : fs.listStatus(dir)) {<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>          fs.setPermission(el.getPath(), perm);<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>          setPermission(el.getPath() , perm);<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>        }<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>      }<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    }<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>  }<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span><a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>  @Test (timeout=180000)<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>  public void testAppend() throws Exception {<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span><a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>    AccessTestAction appendAction = new AccessTestAction() {<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>      @Override<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>      public Object run() throws Exception {<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>        byte[] row = TEST_ROW;<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>        byte[] qualifier = TEST_QUALIFIER;<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>        Put put = new Put(row);<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        put.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(1));<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>        Append append = new Append(row);<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>        append.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(2));<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>          t.put(put);<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>          t.append(append);<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>        }<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>        return null;<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>      }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>    };<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span><a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    verifyAllowed(appendAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW,<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>      USER_GROUP_WRITE);<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span>    verifyDenied(appendAction, USER_RO, USER_NONE, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>      USER_GROUP_ADMIN);<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>  }<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span><a name="line.1169"></a>
+<span class="sourceLineNo">1170</span>  @Test (timeout=180000)<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span>  public void testGrantRevoke() throws Exception {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    AccessTestAction grantAction = new AccessTestAction() {<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>      @Override<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>      public Object run() throws Exception {<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span>          AccessControlService.BlockingInterface protocol =<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>            AccessControlService.newBlockingStub(service);<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>          AccessControlUtil.grant(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY,<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>              null, false, Action.READ);<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>        }<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>        return null;<a name="line.1183"></a>
+<s

<TRUNCATED>

[26/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/ObserverContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/ObserverContext.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/ObserverContext.html
index e160a22..8a5b494 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/ObserverContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/ObserverContext.html
@@ -743,24 +743,6 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">called after the regions merge.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">This will be called after PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postMergeRegions-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-">postMergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
                 <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>[]&nbsp;regionsToMerge)</code>
 <div class="block">called after merge regions request.</div>
@@ -915,39 +897,31 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">This will be called after the roll back of the regions merge.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postRollBackMergeRegionsAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-">postRollBackMergeRegionsAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                               <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>[]&nbsp;regionsToMerge)</code>
 <div class="block">This will be called after the roll back of the regions merge.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postRollBackSplitRegionAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postRollBackSplitRegionAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called after the roll back of the split region is completed</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postRollWALWriterRequest</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called after executing user request to roll a region server WAL.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postScannerClose-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.InternalScanner-">postScannerClose</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a>&nbsp;s)</code>
 <div class="block">Called after the client closes a scanner.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postScannerFilterRow-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.InternalScanner-org.apache.hadoop.hbase.Cell-boolean-">postScannerFilterRow</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                     <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a>&nbsp;s,
@@ -957,7 +931,7 @@
  filter.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postScannerNext-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.InternalScanner-java.util.List-int-boolean-">postScannerNext</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a>&nbsp;s,
@@ -967,7 +941,7 @@
 <div class="block">Called after the client asks for the next row on a scanner.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default <a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postScannerOpen-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Scan-org.apache.hadoop.hbase.regionserver.RegionScanner-">postScannerOpen</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
@@ -975,7 +949,7 @@
 <div class="block">Called after the client opens a new scanner.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postSetNamespaceQuota-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas-">postSetNamespaceQuota</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
@@ -983,7 +957,7 @@
 <div class="block">Called after the quota for the namespace is stored.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postSetSplitOrMergeEnabled-org.apache.hadoop.hbase.coprocessor.ObserverContext-boolean-org.apache.hadoop.hbase.client.MasterSwitchType-">postSetSplitOrMergeEnabled</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                           boolean&nbsp;newValue,
@@ -991,7 +965,7 @@
 <div class="block">Called after setting split / merge switch</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postSetTableQuota-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas-">postSetTableQuota</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                  <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -999,7 +973,7 @@
 <div class="block">Called after the quota for the table is stored.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postSetUserQuota-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas-">postSetUserQuota</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userName,
@@ -1007,7 +981,7 @@
 <div class="block">Called after the quota for the user is stored.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postSetUserQuota-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-java.lang.String-org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas-">postSetUserQuota</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userName,
@@ -1016,7 +990,7 @@
 <div class="block">Called after the quota for the user on the specified namespace is stored.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postSetUserQuota-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas-">postSetUserQuota</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userName,
@@ -1025,7 +999,7 @@
 <div class="block">Called after the quota for the user on the specified table is stored.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postSnapshot-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-org.apache.hadoop.hbase.client.TableDescriptor-">postSnapshot</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
             org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;snapshot,
@@ -1033,14 +1007,14 @@
 <div class="block">Called after the snapshot operation has been requested.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postStartMaster-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postStartMaster</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called immediately after an active master instance has completed
  initialization.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postStartRegionOperation-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region.Operation-">postStartRegionOperation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver">Region.Operation</a>&nbsp;operation)</code>
@@ -1048,7 +1022,7 @@
  <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html#startRegionOperation--"><code>Region.startRegionOperation()</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postStoreFileReaderOpen-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.io.FSDataInputStreamWrapper-long-org.apache.hadoop.hbase.io.hfile.CacheConfig-org.apache.hadoop.hbase.io.Reference-org.apache.hadoop.hbase.regionserver.StoreFileReader-">postStoreFileReaderOpen</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                        org.apache.hadoop.fs.FileSystem&nbsp;fs,
@@ -1063,21 +1037,21 @@
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postTableFlush-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">postTableFlush</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Called after the table memstore is flushed to disk.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postTruncateTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">postTruncateTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                  <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Called after the truncateTable operation has been requested.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postUnassign-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo-boolean-">postUnassign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
             <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;regionInfo,
@@ -1085,7 +1059,7 @@
 <div class="block">Called after the region unassignment has been requested.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postUpdateReplicationPeerConfig-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">postUpdateReplicationPeerConfig</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
@@ -1093,7 +1067,7 @@
 <div class="block">Called after update peerConfig for the specified peer</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#postWALRestore-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postWALRestore</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
               <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
@@ -1103,7 +1077,7 @@
  replayed for this region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/WALObserver.html#postWALRoll-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postWALRoll</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/WALCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">WALCoprocessorEnvironment</a>&gt;&nbsp;ctx,
            org.apache.hadoop.fs.Path&nbsp;oldPath,
@@ -1111,7 +1085,7 @@
 <div class="block">Called after rolling the current WAL</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/WALObserver.html#postWALWrite-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postWALWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/WALCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">WALCoprocessorEnvironment</a>&gt;&nbsp;ctx,
             <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
@@ -1121,7 +1095,7 @@
  is writen to WAL.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preAbortProcedure-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.procedure2.ProcedureExecutor-long-">preAbortProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                  <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;&nbsp;procEnv,
@@ -1129,7 +1103,7 @@
 <div class="block">Called before a abortProcedure request has been processed.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preAddColumnFamily-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">preAddColumnFamily</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -1137,7 +1111,7 @@
 <div class="block">Called prior to adding a new column family to the table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preAddColumnFamilyAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">preAddColumnFamilyAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                         <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -1145,7 +1119,7 @@
 <div class="block">Called prior to adding a new column family to the table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preAddReplicationPeer-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">preAddReplicationPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
@@ -1153,70 +1127,70 @@
 <div class="block">Called before add a replication peer</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preAddRSGroup-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preAddRSGroup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
              <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Called before a new region server group is added</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default <a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppend</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
          <a href="../../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;append)</code>
 <div class="block">Called before Append.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default <a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preAppendAfterRowLock-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppendAfterRowLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                      <a href="../../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;append)</code>
 <div class="block">Called before Append but after acquiring rowlock.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preAssign-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo-">preAssign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
          <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;regionInfo)</code>
 <div class="block">Called prior to assigning a specific region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preBalance-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preBalance</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called prior to requesting rebalancing of the cluster regions, though after
  the initial checks for regions in transition and the balance switch flag.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preBalanceRSGroup-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preBalanceRSGroup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;groupName)</code>
 <div class="block">Called before a region server group is removed</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preBalanceSwitch-org.apache.hadoop.hbase.coprocessor.ObserverContext-boolean-">preBalanceSwitch</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 boolean&nbsp;newValue)</code>
 <div class="block">Called prior to modifying the flag used to enable/disable region balancing.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preBatchMutate-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-">preBatchMutate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp)</code>
 <div class="block">This will be called for every batch mutation operation happening at the server.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preBulkLoadHFile-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-">preBulkLoadHFile</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 <a href="http://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/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;familyPaths)</code>
 <div class="block">Called before bulkLoadHFile.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preCheckAndDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.CompareOperator-org.apache.hadoop.hbase.filter.ByteArrayComparable-org.apache.hadoop.hbase.client.Delete-boolean-">preCheckAndDelete</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                  byte[]&nbsp;row,
@@ -1229,7 +1203,7 @@
 <div class="block">Called before checkAndDelete.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preCheckAndDeleteAfterRowLock-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.CompareOperator-org.apache.hadoop.hbase.filter.ByteArrayComparable-org.apache.hadoop.hbase.client.Delete-boolean-">preCheckAndDeleteAfterRowLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                              byte[]&nbsp;row,
@@ -1242,7 +1216,7 @@
 <div class="block">Called before checkAndDelete but after acquiring rowock.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preCheckAndPut-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.CompareOperator-org.apache.hadoop.hbase.filter.ByteArrayComparable-org.apache.hadoop.hbase.client.Put-boolean-">preCheckAndPut</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
               byte[]&nbsp;row,
@@ -1255,7 +1229,7 @@
 <div class="block">Called before checkAndPut.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preCheckAndPutAfterRowLock-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.CompareOperator-org.apache.hadoop.hbase.filter.ByteArrayComparable-org.apache.hadoop.hbase.client.Put-boolean-">preCheckAndPutAfterRowLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                           byte[]&nbsp;row,
@@ -1268,26 +1242,26 @@
 <div class="block">Called before checkAndPut but after acquiring rowlock.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">BulkLoadObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/BulkLoadObserver.html#preCleanupBulkLoad-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest-">preCleanupBulkLoad</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest&nbsp;request)</code>
 <div class="block">Called as part of SecureBulkLoadEndpoint.cleanupBulkLoad() RPC call.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearCompactionQueues</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called before clearing compaction queues</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preClearDeadServers-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearDeadServers</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called before clear dead region servers.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preCloneSnapshot-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-org.apache.hadoop.hbase.client.TableDescriptor-">preCloneSnapshot</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;snapshot,
@@ -1295,14 +1269,14 @@
 <div class="block">Called before a snapshot is cloned.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preClose-org.apache.hadoop.hbase.coprocessor.ObserverContext-boolean-">preClose</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
         boolean&nbsp;abortRequested)</code>
 <div class="block">Called before the region is reported as closed to the master.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preCommitStoreFile-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-java.util.List-">preCommitStoreFile</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   byte[]&nbsp;family,
@@ -1310,7 +1284,7 @@
 <div class="block">Called before moving bulk loaded hfile to region directory.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preCompact-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Store-org.apache.hadoop.hbase.regionserver.InternalScanner-org.apache.hadoop.hbase.regionserver.ScanType-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-">preCompact</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
@@ -1321,7 +1295,7 @@
  <code>StoreFile</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preCompactScannerOpen-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Store-java.util.List-org.apache.hadoop.hbase.regionserver.ScanType-long-org.apache.hadoop.hbase.regionserver.InternalScanner-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-long-">preCompactScannerOpen</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
@@ -1335,7 +1309,7 @@
  <code>StoreFile</code> and prior to creating the scanner used to read the input files.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preCompactSelection-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Store-java.util.List-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-">preCompactSelection</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
@@ -1345,7 +1319,7 @@
  available candidates.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preCreateNamespace-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.NamespaceDescriptor-">preCreateNamespace</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   <a href="../../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;ns)</code>
@@ -1353,7 +1327,7 @@
  <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master"><code>HMaster</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preCreateTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.HRegionInfo:A-">preCreateTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
               <a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc,
@@ -1362,7 +1336,7 @@
  <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master"><code>HMaster</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preCreateTableAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.HRegionInfo:A-">preCreateTableAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                     <a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc,
@@ -1371,7 +1345,7 @@
  <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master"><code>HMaster</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">preDelete</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
          <a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;delete,
@@ -1380,7 +1354,7 @@
 <div class="block">Called before the client deletes a value.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preDeleteColumnFamily-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-byte:A-">preDeleteColumnFamily</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -1388,7 +1362,7 @@
 <div class="block">Called prior to deleting the entire column family.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preDeleteColumnFamilyAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-byte:A-">preDeleteColumnFamilyAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                            <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -1396,7 +1370,7 @@
 <div class="block">Called prior to deleting the entire column family.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preDeleteNamespace-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preDeleteNamespace</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</code>
@@ -1405,14 +1379,14 @@
  It can't bypass the default action, e.g., ctx.bypass() won't have effect.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preDeleteSnapshot-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-">preDeleteSnapshot</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                  org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;snapshot)</code>
 <div class="block">Called before a snapshot is deleted.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preDeleteTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">preDeleteTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
@@ -1420,7 +1394,7 @@
  table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preDeleteTableAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">preDeleteTableAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                     <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
@@ -1428,49 +1402,49 @@
  table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preDisableReplicationPeer-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preDisableReplicationPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Called before disable a replication peer</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preDisableTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">preDisableTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Called prior to disabling a table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preDisableTableAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">preDisableTableAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Called prior to disabling a table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preEnableReplicationPeer-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preEnableReplicationPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Called before enable a replication peer</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preEnableTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">preEnableTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Called prior to enabling a table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preEnableTableAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">preEnableTableAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                     <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Called prior to enabling a table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default com.google.protobuf.Message</code></td>
 <td class="colLast"><span class="typeNameLabel">EndpointObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/EndpointObserver.html#preEndpointInvocation-org.apache.hadoop.hbase.coprocessor.ObserverContext-com.google.protobuf.Service-java.lang.String-com.google.protobuf.Message-">preEndpointInvocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      com.google.protobuf.Service&nbsp;service,
@@ -1479,7 +1453,7 @@
 <div class="block">Called before an Endpoint service method is invoked.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preExists-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-boolean-">preExists</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
          <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get,
@@ -1487,13 +1461,13 @@
 <div class="block">Called before the client tests for existence using a Get.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preFlush-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preFlush</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c)</code>
 <div class="block">Called before the memstore is flushed to disk.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preFlush-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Store-org.apache.hadoop.hbase.regionserver.InternalScanner-">preFlush</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
@@ -1501,7 +1475,7 @@
 <div class="block">Called before a Store's memstore is flushed to disk.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preFlushScannerOpen-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Store-java.util.List-org.apache.hadoop.hbase.regionserver.InternalScanner-long-">preFlushScannerOpen</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
@@ -1512,20 +1486,20 @@
  the memstore.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preGetLocks-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preGetLocks</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called before a getLocks request has been processed.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preGetNamespaceDescriptor-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preGetNamespaceDescriptor</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</code>
 <div class="block">Called before a getNamespaceDescriptor request has been processed.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html#preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">preGetOp</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
         <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get,
@@ -1533,20 +1507,20 @@
 <div class="block">Called before the client performs a Get</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preGetProcedures-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preGetProcedures</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called before a getProcedures request has been processed.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preGetReplicationPeerConfig-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preGetReplicationPeerConfig</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Called before get the configured ReplicationPeerConfig for the specified peer</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preGetTableDescriptors-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-java.util.List-java.lang.String-">preGetTableDescriptors</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                       <a href="http://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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableNamesList,
@@ -1555,7 +1529,7 @@
 <div class="block">Called before a getTableDescriptors request has been processed.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preGetTableNames-org.apache.hadoop.hbase.coprocessor

<TRUNCATED>

[05/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html
index 6899321..da046b2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html
@@ -865,2376 +865,2351 @@
 <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>  @Test (timeout=180000)<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  public void testMergeRegions() throws Exception {<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    createTestTable(tableName);<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    try {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>      final List&lt;HRegion&gt; regions = TEST_UTIL.getHBaseCluster().findRegionsForTable(tableName);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      assertTrue("not enough regions: " + regions.size(), regions.size() &gt;= 2);<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>      AccessTestAction action = new AccessTestAction() {<a name="line.867"></a>
-<span class="sourceLineNo">868</span>        @Override<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        public Object run() throws Exception {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>          ACCESS_CONTROLLER.preMerge(ObserverContext.createAndPrepare(RSCP_ENV, null),<a name="line.870"></a>
-<span class="sourceLineNo">871</span>            regions.get(0), regions.get(1));<a name="line.871"></a>
-<span class="sourceLineNo">872</span>          return null;<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        }<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      };<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>      verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      verifyDenied(action, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    } finally {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      deleteTable(TEST_UTIL, tableName);<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    }<a name="line.881"></a>
-<span class="sourceLineNo">882</span>  }<a name="line.882"></a>
-<span class="sourceLineNo">883</span><a name="line.883"></a>
-<span class="sourceLineNo">884</span>  @Test (timeout=180000)<a name="line.884"></a>
-<span class="sourceLineNo">885</span>  public void testFlush() throws Exception {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    AccessTestAction action = new AccessTestAction() {<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      @Override<a name="line.887"></a>
-<span class="sourceLineNo">888</span>      public Object run() throws Exception {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.889"></a>
-<span class="sourceLineNo">890</span>        return null;<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    };<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      USER_GROUP_ADMIN);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<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>  @Test (timeout=180000)<a name="line.899"></a>
-<span class="sourceLineNo">900</span>  public void testCompact() throws Exception {<a name="line.900"></a>
-<span class="sourceLineNo">901</span>    AccessTestAction action = new AccessTestAction() {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      @Override<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      public Object run() throws Exception {<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        ACCESS_CONTROLLER.preCompact(ObserverContext.createAndPrepare(RCP_ENV, null), null, null,<a name="line.904"></a>
-<span class="sourceLineNo">905</span>          ScanType.COMPACT_RETAIN_DELETES, null);<a name="line.905"></a>
-<span class="sourceLineNo">906</span>        return null;<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>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      USER_GROUP_ADMIN);<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<a name="line.912"></a>
-<span class="sourceLineNo">913</span>  }<a name="line.913"></a>
-<span class="sourceLineNo">914</span><a name="line.914"></a>
-<span class="sourceLineNo">915</span>  private void verifyRead(AccessTestAction action) throws Exception {<a name="line.915"></a>
-<span class="sourceLineNo">916</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW, USER_RO,<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      USER_GROUP_READ);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    verifyDenied(action, USER_NONE, USER_GROUP_CREATE, USER_GROUP_ADMIN, USER_GROUP_WRITE);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>  }<a name="line.919"></a>
-<span class="sourceLineNo">920</span><a name="line.920"></a>
-<span class="sourceLineNo">921</span>  private void verifyReadWrite(AccessTestAction action) throws Exception {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    verifyDenied(action, USER_NONE, USER_RO, USER_GROUP_ADMIN, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        USER_GROUP_WRITE);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>  }<a name="line.925"></a>
-<span class="sourceLineNo">926</span><a name="line.926"></a>
-<span class="sourceLineNo">927</span>  @Test (timeout=180000)<a name="line.927"></a>
-<span class="sourceLineNo">928</span>  public void testRead() throws Exception {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>    // get action<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    AccessTestAction getAction = new AccessTestAction() {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>      @Override<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      public Object run() throws Exception {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        Get g = new Get(TEST_ROW);<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        g.addFamily(TEST_FAMILY);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.936"></a>
-<span class="sourceLineNo">937</span>          t.get(g);<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        }<a name="line.938"></a>
-<span class="sourceLineNo">939</span>        return null;<a name="line.939"></a>
-<span class="sourceLineNo">940</span>      }<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    };<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    verifyRead(getAction);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    // action for scanning<a name="line.944"></a>
-<span class="sourceLineNo">945</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      @Override<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      public Object run() throws Exception {<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        Scan s = new Scan();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>        s.addFamily(TEST_FAMILY);<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>            Table table = conn.getTable(TEST_TABLE)) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>          ResultScanner scanner = table.getScanner(s);<a name="line.952"></a>
-<span class="sourceLineNo">953</span>          try {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>            for (Result r = scanner.next(); r != null; r = scanner.next()) {<a name="line.954"></a>
-<span class="sourceLineNo">955</span>              // do nothing<a name="line.955"></a>
-<span class="sourceLineNo">956</span>            }<a name="line.956"></a>
-<span class="sourceLineNo">957</span>          } finally {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>            scanner.close();<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>        return null;<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      }<a name="line.962"></a>
-<span class="sourceLineNo">963</span>    };<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    verifyRead(scanAction);<a name="line.964"></a>
-<span class="sourceLineNo">965</span>  }<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>  @Test (timeout=180000)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>  // test put, delete, increment<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  public void testWrite() throws Exception {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    // put action<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    AccessTestAction putAction = new AccessTestAction() {<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      @Override<a name="line.972"></a>
-<span class="sourceLineNo">973</span>      public Object run() throws Exception {<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Put p = new Put(TEST_ROW);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.977"></a>
-<span class="sourceLineNo">978</span>          t.put(p);<a name="line.978"></a>
-<span class="sourceLineNo">979</span>        }<a name="line.979"></a>
-<span class="sourceLineNo">980</span>        return null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      }<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    };<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    verifyWrite(putAction);<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    // delete action<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    AccessTestAction deleteAction = new AccessTestAction() {<a name="line.986"></a>
-<span class="sourceLineNo">987</span>      @Override<a name="line.987"></a>
-<span class="sourceLineNo">988</span>      public Object run() throws Exception {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>        Delete d = new Delete(TEST_ROW);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>        d.addFamily(TEST_FAMILY);<a name="line.990"></a>
-<span class="sourceLineNo">991</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>          t.delete(d);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>        }<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        return null;<a name="line.995"></a>
-<span class="sourceLineNo">996</span>      }<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    };<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    verifyWrite(deleteAction);<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    // increment action<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>    AccessTestAction incrementAction = new AccessTestAction() {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>      @Override<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      public Object run() throws Exception {<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>        Increment inc = new Increment(TEST_ROW);<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>        inc.addColumn(TEST_FAMILY, TEST_QUALIFIER, 1);<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>          t.increment(inc);<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        }<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        return null;<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>    verifyWrite(incrementAction);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  @Test (timeout=180000)<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  public void testReadWrite() throws Exception {<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>    // action for checkAndDelete<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    AccessTestAction checkAndDeleteAction = new AccessTestAction() {<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      @Override<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      public Object run() throws Exception {<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>        Delete d = new Delete(TEST_ROW);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        d.addFamily(TEST_FAMILY);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          t.checkAndDelete(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>              Bytes.toBytes("test_value"), d);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>        }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        return null;<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    };<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    verifyReadWrite(checkAndDeleteAction);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span><a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    // action for checkAndPut()<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    AccessTestAction checkAndPut = new AccessTestAction() {<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      @Override<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      public Object run() throws Exception {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>        Put p = new Put(TEST_ROW);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>          t.checkAndPut(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>              Bytes.toBytes("test_value"), p);<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>        }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>        return null;<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>      }<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>    };<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>    verifyReadWrite(checkAndPut);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>  }<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span><a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>  @Test (timeout=180000)<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>  public void testBulkLoad() throws Exception {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    try {<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>      FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      final Path dir = TEST_UTIL.getDataTestDirOnTestFS("testBulkLoad");<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>      fs.mkdirs(dir);<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      // need to make it globally writable<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      // so users creating HFiles have write permissions<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>      fs.setPermission(dir, FsPermission.valueOf("-rwxrwxrwx"));<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>      AccessTestAction bulkLoadAction = new AccessTestAction() {<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>        @Override<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        public Object run() throws Exception {<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>          int numRows = 3;<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span><a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>          // Making the assumption that the test table won't split between the range<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          byte[][][] hfileRanges = { { { (byte) 0 }, { (byte) 9 } } };<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          Path bulkLoadBasePath = new Path(dir, new Path(User.getCurrent().getName()));<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          new BulkLoadHelper(bulkLoadBasePath).bulkLoadHFile(TEST_TABLE, TEST_FAMILY,<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>            TEST_QUALIFIER, hfileRanges, numRows);<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span><a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>          return null;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      };<a name="line.1075"></a>
+<span class="sourceLineNo">860</span>  public void testFlush() throws Exception {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    AccessTestAction action = new AccessTestAction() {<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      @Override<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      public Object run() throws Exception {<a name="line.863"></a>
+<span class="sourceLineNo">864</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.864"></a>
+<span class="sourceLineNo">865</span>        return null;<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>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      USER_GROUP_ADMIN);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>  }<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>  @Test (timeout=180000)<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  public void testCompact() throws Exception {<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    AccessTestAction action = new AccessTestAction() {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>      @Override<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      public Object run() throws Exception {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>        ACCESS_CONTROLLER.preCompact(ObserverContext.createAndPrepare(RCP_ENV, null), null, null,<a name="line.879"></a>
+<span class="sourceLineNo">880</span>          ScanType.COMPACT_RETAIN_DELETES, null);<a name="line.880"></a>
+<span class="sourceLineNo">881</span>        return null;<a name="line.881"></a>
+<span class="sourceLineNo">882</span>      }<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    };<a name="line.883"></a>
+<span class="sourceLineNo">884</span><a name="line.884"></a>
+<span class="sourceLineNo">885</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      USER_GROUP_ADMIN);<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<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>  private void verifyRead(AccessTestAction action) throws Exception {<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW, USER_RO,<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      USER_GROUP_READ);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>    verifyDenied(action, USER_NONE, USER_GROUP_CREATE, USER_GROUP_ADMIN, USER_GROUP_WRITE);<a name="line.893"></a>
+<span class="sourceLineNo">894</span>  }<a name="line.894"></a>
+<span class="sourceLineNo">895</span><a name="line.895"></a>
+<span class="sourceLineNo">896</span>  private void verifyReadWrite(AccessTestAction action) throws Exception {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW);<a name="line.897"></a>
+<span class="sourceLineNo">898</span>    verifyDenied(action, USER_NONE, USER_RO, USER_GROUP_ADMIN, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        USER_GROUP_WRITE);<a name="line.899"></a>
+<span class="sourceLineNo">900</span>  }<a name="line.900"></a>
+<span class="sourceLineNo">901</span><a name="line.901"></a>
+<span class="sourceLineNo">902</span>  @Test (timeout=180000)<a name="line.902"></a>
+<span class="sourceLineNo">903</span>  public void testRead() throws Exception {<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    // get action<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    AccessTestAction getAction = new AccessTestAction() {<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      @Override<a name="line.906"></a>
+<span class="sourceLineNo">907</span>      public Object run() throws Exception {<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        Get g = new Get(TEST_ROW);<a name="line.908"></a>
+<span class="sourceLineNo">909</span>        g.addFamily(TEST_FAMILY);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.911"></a>
+<span class="sourceLineNo">912</span>          t.get(g);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>        }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        return null;<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>    verifyRead(getAction);<a name="line.917"></a>
+<span class="sourceLineNo">918</span><a name="line.918"></a>
+<span class="sourceLineNo">919</span>    // action for scanning<a name="line.919"></a>
+<span class="sourceLineNo">920</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      @Override<a name="line.921"></a>
+<span class="sourceLineNo">922</span>      public Object run() throws Exception {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        Scan s = new Scan();<a name="line.923"></a>
+<span class="sourceLineNo">924</span>        s.addFamily(TEST_FAMILY);<a name="line.924"></a>
+<span class="sourceLineNo">925</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.925"></a>
+<span class="sourceLineNo">926</span>            Table table = conn.getTable(TEST_TABLE)) {<a name="line.926"></a>
+<span class="sourceLineNo">927</span>          ResultScanner scanner = table.getScanner(s);<a name="line.927"></a>
+<span class="sourceLineNo">928</span>          try {<a name="line.928"></a>
+<span class="sourceLineNo">929</span>            for (Result r = scanner.next(); r != null; r = scanner.next()) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>              // do nothing<a name="line.930"></a>
+<span class="sourceLineNo">931</span>            }<a name="line.931"></a>
+<span class="sourceLineNo">932</span>          } finally {<a name="line.932"></a>
+<span class="sourceLineNo">933</span>            scanner.close();<a name="line.933"></a>
+<span class="sourceLineNo">934</span>          }<a name="line.934"></a>
+<span class="sourceLineNo">935</span>        }<a name="line.935"></a>
+<span class="sourceLineNo">936</span>        return null;<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>    verifyRead(scanAction);<a name="line.939"></a>
+<span class="sourceLineNo">940</span>  }<a name="line.940"></a>
+<span class="sourceLineNo">941</span><a name="line.941"></a>
+<span class="sourceLineNo">942</span>  @Test (timeout=180000)<a name="line.942"></a>
+<span class="sourceLineNo">943</span>  // test put, delete, increment<a name="line.943"></a>
+<span class="sourceLineNo">944</span>  public void testWrite() throws Exception {<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    // put action<a name="line.945"></a>
+<span class="sourceLineNo">946</span>    AccessTestAction putAction = new AccessTestAction() {<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      @Override<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      public Object run() throws Exception {<a name="line.948"></a>
+<span class="sourceLineNo">949</span>        Put p = new Put(TEST_ROW);<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>          t.put(p);<a name="line.953"></a>
+<span class="sourceLineNo">954</span>        }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>        return null;<a name="line.955"></a>
+<span class="sourceLineNo">956</span>      }<a name="line.956"></a>
+<span class="sourceLineNo">957</span>    };<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    verifyWrite(putAction);<a name="line.958"></a>
+<span class="sourceLineNo">959</span><a name="line.959"></a>
+<span class="sourceLineNo">960</span>    // delete action<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    AccessTestAction deleteAction = new AccessTestAction() {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      @Override<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      public Object run() throws Exception {<a name="line.963"></a>
+<span class="sourceLineNo">964</span>        Delete d = new Delete(TEST_ROW);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>        d.addFamily(TEST_FAMILY);<a name="line.965"></a>
+<span class="sourceLineNo">966</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>          t.delete(d);<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        }<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        return 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>    verifyWrite(deleteAction);<a name="line.973"></a>
+<span class="sourceLineNo">974</span><a name="line.974"></a>
+<span class="sourceLineNo">975</span>    // increment action<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    AccessTestAction incrementAction = new AccessTestAction() {<a name="line.976"></a>
+<span class="sourceLineNo">977</span>      @Override<a name="line.977"></a>
+<span class="sourceLineNo">978</span>      public Object run() throws Exception {<a name="line.978"></a>
+<span class="sourceLineNo">979</span>        Increment inc = new Increment(TEST_ROW);<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        inc.addColumn(TEST_FAMILY, TEST_QUALIFIER, 1);<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.981"></a>
+<span class="sourceLineNo">982</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.982"></a>
+<span class="sourceLineNo">983</span>          t.increment(inc);<a name="line.983"></a>
+<span class="sourceLineNo">984</span>        }<a name="line.984"></a>
+<span class="sourceLineNo">985</span>        return null;<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>    verifyWrite(incrementAction);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Test (timeout=180000)<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public void testReadWrite() throws Exception {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    // action for checkAndDelete<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    AccessTestAction checkAndDeleteAction = new AccessTestAction() {<a name="line.994"></a>
+<span class="sourceLineNo">995</span>      @Override<a name="line.995"></a>
+<span class="sourceLineNo">996</span>      public Object run() throws Exception {<a name="line.996"></a>
+<span class="sourceLineNo">997</span>        Delete d = new Delete(TEST_ROW);<a name="line.997"></a>
+<span class="sourceLineNo">998</span>        d.addFamily(TEST_FAMILY);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>          t.checkAndDelete(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>              Bytes.toBytes("test_value"), d);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>        }<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>        return null;<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>    verifyReadWrite(checkAndDeleteAction);<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span><a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    // action for checkAndPut()<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>    AccessTestAction checkAndPut = new AccessTestAction() {<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      @Override<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>      public Object run() throws Exception {<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>        Put p = new Put(TEST_ROW);<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>          t.checkAndPut(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>              Bytes.toBytes("test_value"), p);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>        }<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>        return null;<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>      }<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    };<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    verifyReadWrite(checkAndPut);<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>  @Test (timeout=180000)<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>  public void testBulkLoad() throws Exception {<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    try {<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>      FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>      final Path dir = TEST_UTIL.getDataTestDirOnTestFS("testBulkLoad");<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>      fs.mkdirs(dir);<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>      // need to make it globally writable<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // so users creating HFiles have write permissions<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      fs.setPermission(dir, FsPermission.valueOf("-rwxrwxrwx"));<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span><a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      AccessTestAction bulkLoadAction = new AccessTestAction() {<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>        @Override<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>        public Object run() throws Exception {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>          int numRows = 3;<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span><a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>          // Making the assumption that the test table won't split between the range<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          byte[][][] hfileRanges = { { { (byte) 0 }, { (byte) 9 } } };<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span><a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>          Path bulkLoadBasePath = new Path(dir, new Path(User.getCurrent().getName()));<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          new BulkLoadHelper(bulkLoadBasePath).bulkLoadHFile(TEST_TABLE, TEST_FAMILY,<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>            TEST_QUALIFIER, hfileRanges, numRows);<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span><a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>          return null;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>        }<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      };<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span><a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>      // User performing bulk loads must have privilege to read table metadata<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>      // (ADMIN or CREATE)<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>      verifyAllowed(bulkLoadAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE,<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>        USER_GROUP_CREATE);<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>      verifyDenied(bulkLoadAction, USER_RW, USER_NONE, USER_RO, USER_GROUP_READ, USER_GROUP_WRITE,<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>        USER_GROUP_ADMIN);<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    } finally {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>      // Reinit after the bulk upload<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>      TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>    }<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>  }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span><a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>  public class BulkLoadHelper {<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    private final FileSystem fs;<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>    private final Path loadPath;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    private final Configuration conf;<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    public BulkLoadHelper(Path loadPath) throws IOException {<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>      fs = TEST_UTIL.getTestFileSystem();<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>      conf = TEST_UTIL.getConfiguration();<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>      loadPath = loadPath.makeQualified(fs);<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>      this.loadPath = loadPath;<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>    }<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span><a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      // User performing bulk loads must have privilege to read table metadata<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>      // (ADMIN or CREATE)<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      verifyAllowed(bulkLoadAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE,<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>        USER_GROUP_CREATE);<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>      verifyDenied(bulkLoadAction, USER_RW, USER_NONE, USER_RO, USER_GROUP_READ, USER_GROUP_WRITE,<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>        USER_GROUP_ADMIN);<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    } finally {<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      // Reinit after the bulk upload<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>      TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>      TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<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><a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>  public class BulkLoadHelper {<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    private final FileSystem fs;<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    private final Path loadPath;<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>    private final Configuration conf;<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span><a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    public BulkLoadHelper(Path loadPath) throws IOException {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      fs = TEST_UTIL.getTestFileSystem();<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      conf = TEST_UTIL.getConfiguration();<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>      loadPath = loadPath.makeQualified(fs);<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      this.loadPath = loadPath;<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>    }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span><a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    private void createHFile(Path path,<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>        byte[] family, byte[] qualifier,<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>        byte[] startKey, byte[] endKey, int numRows) throws IOException {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      HFile.Writer writer = null;<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      long now = System.currentTimeMillis();<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>      try {<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>        HFileContext context = new HFileContextBuilder().build();<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>        writer = HFile.getWriterFactory(conf, new CacheConfig(conf))<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>            .withPath(fs, path)<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>            .withFileContext(context)<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>            .create();<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>        // subtract 2 since numRows doesn't include boundary keys<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>        for (byte[] key : Bytes.iterateOnSplits(startKey, endKey, true, numRows-2)) {<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>          KeyValue kv = new KeyValue(key, family, qualifier, now, key);<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>          writer.append(kv);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>        }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>      } finally {<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>        if(writer != null)<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>          writer.close();<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>      }<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    }<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span><a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>    private void bulkLoadHFile(<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>        TableName tableName,<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>        byte[] family,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        byte[] qualifier,<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>        byte[][][] hfileRanges,<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>        int numRowsPerRange) throws Exception {<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span><a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>      Path familyDir = new Path(loadPath, Bytes.toString(family));<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>      fs.mkdirs(familyDir);<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      int hfileIdx = 0;<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>      for (byte[][] range : hfileRanges) {<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>        byte[] from = range[0];<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>        byte[] to = range[1];<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>        createHFile(new Path(familyDir, "hfile_"+(hfileIdx++)),<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>            family, qualifier, from, to, numRowsPerRange);<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      }<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>      //set global read so RegionServer can move it<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      setPermission(loadPath, FsPermission.valueOf("-rwxrwxrwx"));<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>      try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>           Admin admin = conn.getAdmin();<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>           RegionLocator locator = conn.getRegionLocator(tableName);<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>           Table table = conn.getTable(tableName)) {<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>        TEST_UTIL.waitUntilAllRegionsAssigned(tableName);<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>        LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>        loader.doBulkLoad(loadPath, admin, table, locator);<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>      }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span><a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    public void setPermission(Path dir, FsPermission perm) throws IOException {<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>      if(!fs.getFileStatus(dir).isDirectory()) {<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        fs.setPermission(dir,perm);<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>      }<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>      else {<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>        for(FileStatus el : fs.listStatus(dir)) {<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>          fs.setPermission(el.getPath(), perm);<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>          setPermission(el.getPath() , perm);<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>        }<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>      }<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>    }<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>  }<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span><a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>  @Test (timeout=180000)<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>  public void testAppend() throws Exception {<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span><a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>    AccessTestAction appendAction = new AccessTestAction() {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>      @Override<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>      public Object run() throws Exception {<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>        byte[] row = TEST_ROW;<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>        byte[] qualifier = TEST_QUALIFIER;<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>        Put put = new Put(row);<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>        put.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(1));<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>        Append append = new Append(row);<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>        append.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(2));<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>          t.put(put);<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>          t.append(append);<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>        }<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>        return null;<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      }<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>    verifyAllowed(appendAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW,<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>      USER_GROUP_WRITE);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    verifyDenied(appendAction, USER_RO, USER_NONE, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      USER_GROUP_ADMIN);<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>  }<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span><a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>  @Test (timeout=180000)<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>  public void testGrantRevoke() throws Exception {<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>    AccessTestAction grantAction = new AccessTestAction() {<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      @Override<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>      public Object run() throws Exception {<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          AccessControlService.BlockingInterface protocol =<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>            AccessControlService.newBlockingStub(service);<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>          AccessControlUtil.grant(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY,<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>              null, false, Action.READ);<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>        }<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>        return null;<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>      }<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>    };<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span><a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>    AccessTestAction revokeAction = new AccessTestAction() {<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>      @Override<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>      public Object run() throws Exception {<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>          AccessControlService.BlockingInterface protocol =<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>            AccessControlService.newBlockingStub(service);<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>          AccessControlUtil.revoke(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>            Action.READ);<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>        }<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>        return null;<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>      }<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    };<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span><a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>    AccessTestAction getTablePermissionsAction = new AccessTestAction() {<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>      @Override<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>      public Object run() throws Exception {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)){<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>          AccessControlService.BlockingInterface protocol =<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>              AccessControlService.newBlockingStub(service);<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>          AccessControlUtil.getUserPermissions(null, protocol, TEST_TABLE);<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>        }<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>        return null;<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>      }<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>    };<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>    AccessTestAction getGlobalPermissionsAction = new AccessTestAction() {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      @Override<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      public Object run() throws Exception {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME);) {<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>          BlockingRpcChannel service = acl.coprocessorService(HConstants.EMPTY_START_ROW);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>          AccessControlService.BlockingInterface protocol =<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>            AccessControlService.newBlockingStub(service);<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>          AccessControlUtil.getUserPermissions(null, protocol);<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>        }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>        return null;<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>      }<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    };<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span><a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>    verifyAllowed(grantAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>    verifyDenied(grantAction, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>    try {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>      verifyAllowed(revokeAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>      verifyDenied(revokeAction, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span><a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>      verifyAllowed(getTablePermissionsAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>      verifyDenied(getTablePermissionsAction, USER_CREATE, USER_RW, USER_RO, USER_NONE,<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>        USER_GROUP_READ, USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span><a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>      verifyAllowed(getGlobalPermissionsAction, SUPERUSER, USER_ADMIN, USER_GROUP_ADMIN);<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>      verifyDenied(getGlobalPermissionsAction, USER_CREATE, USER_OWNER, USER_RW, USER_RO,<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>        USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    } finally {<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>      // Cleanup, Grant the revoked permission back to the user<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>      grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>        Permission.Action.READ);<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span><a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>  @Test (timeout=180000)<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  public void testPostGrantRevoke() throws Exception {<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    final TableName tableName =<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>        TableName.valueOf("TempTable");<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>    final byte[] family1 = Bytes.toBytes("f1");<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>    final byte[] family2 = Bytes.toBytes("f2");<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>    final byte[] qualifier = Bytes.toBytes("q");<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span><a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    // create table<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>    Admin admin = TEST_UTIL.getAdmin();<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>    if (admin.tableExists(tableName)) {<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>      deleteTable(TEST_UTIL, tableName);<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>    }<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    htd.addFamily(new HColumnDescriptor(family1));<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>    htd.addFamily(new HColumnDescriptor(family2));<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>    createTable(TEST_UTIL, htd);<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>    try {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>      // create temp users<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>      User tblUser =<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>          User.createUserForTesting(TEST_UTIL.getConfiguration(), "tbluser", new String[0]);<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>      User gblUser =<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>          User.createUserForTesting(TEST_UTIL.getConfiguration(), "gbluser", new String[0]);<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span><a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>      // prepare actions:<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>      AccessTestAction putActionAll = new AccessTestAction() {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>        @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>        public Object run() throws Exception {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>          p.addColumn(family1, qualifier, Bytes.toBytes("v1"));<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>          p.addColumn(family2, qualifier, Bytes.toBytes("v2"));<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span><a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>              Table t = conn.getTable(tableName);) {<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>            t.put(p);<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>          }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>          return null;<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>        }<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>      };<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span><a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>      AccessTestAction putAction1 = new AccessTestAction() {<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>        @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>        public Object run() throws Exception {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>          p.addColumn(family1, qualifier, Bytes.toBytes("v1"));<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>              Table t = conn.getTable(tableName)) {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>            t.put(p);<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>          }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>          return null;<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>        }<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>      };<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span><a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>      AccessTestAction putAction2 = new AccessTestAction() {<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>        @Override<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>        public Object run() throws Exception {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>          p.addColumn(family2, qualifier, Bytes.toBytes("v2"));<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>              Table t = conn.getTable(tableName);) {<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>            t.put(p);<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>          }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>          return null;<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>        }<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>      };<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span><a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      AccessTestAction getActionAll = new AccessTestAction() {<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>        @Override<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>        public Object run() throws Exception {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>          Get g = new Get(TEST_ROW);<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>          g.addFamily(family1);<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>          g.addFamily(family2);<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>              Table t = conn.getTable(tableName);) {<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>            t.get(g);<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>          }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>          return null;<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>        }<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>      };<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span><a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>      AccessTestAction getAction1 = new AccessTestAction() {<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>        @Override<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>        public Object run() throws Exception {<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>          Get g = new Get(TEST_ROW);<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>          g.addFamily(family1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>              Table t = conn.getTable(tableName)) {<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>            t.get(g);<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>          }<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>          return null;<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>        }<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      };<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span><a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      AccessTestAction getAction2 = new AccessTestAction() {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>        @Override<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>        public Object run() throws Exception {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>          Get g = new Get(TEST_ROW);<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>          g.addFamily(family2);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>              Table t = conn.getTable(tableName)) {<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>            t.get(g);<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>          }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>          return null;<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>        }<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>      AccessTestAction deleteActionAll = new AccessTestAction() {<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>        @Override<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>        public Object run() throws Exception {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>          Delete d = new Delete(TEST_ROW);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>          d.addFamily(family1);<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>          d.addFamily(family2);<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>              Table t = conn.getTable(tableName)) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>            t.delete(d);<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>          }<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>          return null;<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        }<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>      };<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span><a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>      AccessTestAction deleteAction1 = new AccessTestAction() {<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>        @Override<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>        public Object run() throws Exception {<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          Delete d = new Delete(TEST_ROW);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>          d.addFamily(family1);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>              Table t = conn.getTable(tableName)) {<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>            t.delete(d);<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>          }<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          return null;<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>        }<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>      };<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>      AccessTestAction deleteAction2 = new AccessTestAction() {<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>        @Override<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        public Object run() throws Exception {<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>          Delete d = new Delete(TEST_ROW);<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>          d.addFamily(family2);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>              Table t = conn.getTable(tableName)) {<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>            t.delete(d);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>          }<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>          return null;<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>        }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>      };<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span><a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>      // initial check:<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>      verifyDenied(tblUser, getActionAll, getAction1, getAction2);<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>      verifyDenied(tblUser, putActionAll, putAction1, putAction2);<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>      verifyDenied(tblUser, deleteActionAll, deleteAction1, deleteAction2);<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span><a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>      verifyDenied(gblUser, getActionAll, getAction1, getAction2);<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>      verifyDenied(gblUser, putActionAll, putAction1, putAction2);<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>      verifyDenied(gblUser, deleteActionAll, deleteAction1, deleteAction2);<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span><a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>      // grant table read permission<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>      grantGlobal(TEST_UTIL, gblUser.getShortName(), Permission.Action.READ);<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>      grantOnTable(TEST_UTIL, tblUser.getShortName(), tableName, null, null, Permission.Action.READ);<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span><a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>      // check<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>      verifyAllowed(tblUser, getActionAll, getAction1, getAction2);<a name="line.1438"></a>
+<span class="sourceLineNo">1077</span>    private void createHFile(Path path,<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        byte[] family, byte[] qualifier,<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>        byte[] startKey, byte[] endKey, int numRows) throws IOException {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span><a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      HFile.Writer writer = null;<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>      long now = System.currentTimeMillis();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      try {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>        HFileContext context = new HFileContextBuilder().build();<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>        writer = HFile.getWriterFactory(conf, new CacheConfig(conf))<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>            .withPath(fs, path)<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            .withFileContext(context)<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>            .create();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>        // subtract 2 since numRows doesn't include boundary keys<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>        for (byte[] key : Bytes.iterateOnSplits(startKey, endKey, true, numRows-2)) {<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>          KeyValue kv = new KeyValue(key, family, qualifier, now, key);<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>          writer.append(kv);<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>        }<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>      } finally {<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>        if(writer != null)<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>          writer.close();<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>      }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>    }<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span><a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    private void bulkLoadHFile(<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>        TableName tableName,<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>        byte[] family,<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>        byte[] qualifier,<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>        byte[][][] hfileRanges,<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>        int numRowsPerRange) throws Exception {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span><a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>      Path familyDir = new Path(loadPath, Bytes.toString(family));<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>      fs.mkdirs(familyDir);<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>      int hfileIdx = 0;<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>      for (byte[][] range : hfileRanges) {<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>        byte[] from = range[0];<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>        byte[] to = range[1];<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>        createHFile(new Path(familyDir, "hfile_"+(hfileIdx++)),<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>            family, qualifier, from, to, numRowsPerRange);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>      }<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      //set global read so RegionServer can move it<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      setPermission(loadPath, FsPermission.valueOf("-rwxrwxrwx"));<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>      try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>           Admin admin = conn.getAdmin();<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>           RegionLocator locator = conn.getRegionLocator(tableName);<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>           Table table = conn.getTable(tableName)) {<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>        TEST_UTIL.waitUntilAllRegionsAssigned(tableName);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>        LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>        loader.doBulkLoad(loadPath, admin, table, locator);<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>      }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>    }<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span><a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>    public void setPermission(Path dir, FsPermission perm) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>      if(!fs.getFileStatus(dir).isDirectory()) {<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>        fs.setPermission(dir,perm);<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      }<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      else {<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>        for(FileStatus el : fs.listStatus(dir)) {<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>          fs.setPermission(el.getPath(), perm);<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>          setPermission(el.getPath() , perm);<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>        }<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>      }<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    }<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>  }<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span><a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>  @Test (timeout=180000)<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>  public void testAppend() throws Exception {<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span><a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>    AccessTestAction appendAction = new AccessTestAction() {<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>      @Override<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>      public Object run() throws Exception {<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>        byte[] row = TEST_ROW;<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>        byte[] qualifier = TEST_QUALIFIER;<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>        Put put = new Put(row);<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        put.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(1));<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>        Append append = new Append(row);<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>        append.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(2));<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>          t.put(put);<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>          t.append(append);<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>        }<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>        return null;<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>      }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>    };<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span><a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    verifyAllowed(appendAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW,<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>      USER_GROUP_WRITE);<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span>    verifyDenied(appendAction, USER_RO, USER_NONE, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>      USER_GROUP_ADMIN);<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>  }<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span><a name="line.1169"></a>
+<span class="sourceLineNo">1170</span>  @Test (timeout=180000)<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span>  public void testGrantRevoke() throws Exception {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    AccessTestAction grantAction = new AccessTestAction() {<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>      @Override<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>      public Object run() throws Exception {<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span>          AccessControlService.BlockingInterface protocol =<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>            AccessControlService.newBlockingStub(service);<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>          AccessControlUtil.grant(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY,<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>              null, false, Action.READ);<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>        }<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>        return null;<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span

<TRUNCATED>

[20/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html
index 36f4c8d..ec36d2e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html
@@ -38,395 +38,326 @@
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.CoprocessorEnvironment;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.MetaMutationAnnotation;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.User;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.49"></a>
-<span class="sourceLineNo">050</span>@InterfaceStability.Evolving<a name="line.50"></a>
-<span class="sourceLineNo">051</span>public class RegionServerCoprocessorHost extends<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.52"></a>
+<span class="sourceLineNo">033</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.User;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.47"></a>
+<span class="sourceLineNo">048</span>@InterfaceStability.Evolving<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class RegionServerCoprocessorHost extends<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.52"></a>
 <span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.54"></a>
+<span class="sourceLineNo">054</span>  private RegionServerServices rsServices;<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private RegionServerServices rsServices;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      Configuration conf) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    super(rsServices);<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    this.rsServices = rsServices;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    this.conf = conf;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    LOG.info("Table coprocessor loading is " +<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      sequence, conf, this.rsServices);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public void preStop(String message, User user) throws IOException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // coprocessor should be cleaned up.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      public void call(RegionServerObserver oserver,<a name="line.88"></a>
-<span class="sourceLineNo">089</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        oserver.preStopRegionServer(ctx);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      @Override<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        // invoke coprocessor stop method<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        shutdown(env);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      }<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    });<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public boolean preMerge(final HRegion regionA, final HRegion regionB, final User user) throws IOException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      @Override<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      public void call(RegionServerObserver oserver,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        oserver.preMerge(ctx, regionA, regionB);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      }<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    });<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public void postMerge(final HRegion regionA, final HRegion regionB, final HRegion mergedRegion,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>                        final User user)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      throws IOException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      @Override<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      public void call(RegionServerObserver oserver,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        oserver.postMerge(ctx, regionA, regionB, mergedRegion);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    });<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public boolean preMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      final @MetaMutationAnnotation List&lt;Mutation&gt; metaEntries, final User user)<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      throws IOException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      public void call(RegionServerObserver oserver,<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        oserver.preMergeCommit(ctx, regionA, regionB, metaEntries);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    });<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public void postMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      final HRegion mergedRegion, final User user) throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      @Override<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      public void call(RegionServerObserver oserver,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        oserver.postMergeCommit(ctx, regionA, regionB, mergedRegion);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    });<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public void preRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      throws IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      public void call(RegionServerObserver oserver,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        oserver.preRollBackMerge(ctx, regionA, regionB);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    });<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  public void postRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      throws IOException {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      public void call(RegionServerObserver oserver,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        oserver.postRollBackMerge(ctx, regionA, regionB);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      }<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    });<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      @Override<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      public void call(RegionServerObserver oserver,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    });<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      @Override<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      public void call(RegionServerObserver oserver,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    });<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
+<span class="sourceLineNo">056</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      Configuration conf) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    super(rsServices);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    this.rsServices = rsServices;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    this.conf = conf;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    LOG.info("Table coprocessor loading is " +<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      sequence, conf, this.rsServices);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public void preStop(String message, User user) throws IOException {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    // coprocessor should be cleaned up.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      public void call(RegionServerObserver oserver,<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        oserver.preStopRegionServer(ctx);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      }<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        // invoke coprocessor stop method<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        shutdown(env);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    });<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      @Override<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      public void call(RegionServerObserver oserver,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    });<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      @Override<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      public void call(RegionServerObserver oserver,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    });<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      throws IOException {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      public void call(RegionServerObserver oserver,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    });<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      throws IOException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      public void call(RegionServerObserver oserver,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    });<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      throws IOException {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          public void call(RegionServerObserver oserver,<a name="line.145"></a>
+<span class="sourceLineNo">146</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        });<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public void preClearCompactionQueues() throws IOException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      public void call(RegionServerObserver oserver,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        oserver.preClearCompactionQueues(ctx);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    });<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public void postClearCompactionQueues() throws IOException {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      public void call(RegionServerObserver oserver,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        oserver.postClearCompactionQueues(ctx);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    });<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    if (ctx == null)<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      return defaultValue;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    ctx.setResult(defaultValue);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    execOperation(ctx);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    return ctx.getResult();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private static abstract class CoprocessorOperation<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    public CoprocessorOperation() {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      this(RpcServer.getRequestUser());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
 <span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      @Override<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      public void call(RegionServerObserver oserver,<a name="line.191"></a>
-<span class="sourceLineNo">192</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    });<a name="line.195"></a>
+<span class="sourceLineNo">187</span>    public CoprocessorOperation(User user) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      super(user);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public abstract void call(RegionServerObserver oserver,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
 <span class="sourceLineNo">196</span>  }<a name="line.196"></a>
 <span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      throws IOException {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      @Override<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      public void call(RegionServerObserver oserver,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    });<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      throws IOException {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          @Override<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          public void call(RegionServerObserver oserver,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>          }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        });<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  public void preClearCompactionQueues() throws IOException {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      @Override<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      public void call(RegionServerObserver oserver,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        oserver.preClearCompactionQueues(ctx);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    });<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public void postClearCompactionQueues() throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public void call(RegionServerObserver oserver,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        oserver.postClearCompactionQueues(ctx);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    });<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (ctx == null)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return defaultValue;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    ctx.setResult(defaultValue);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    execOperation(ctx);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    return ctx.getResult();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  private static abstract class CoprocessorOperation<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public CoprocessorOperation() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      this(RpcServer.getRequestUser());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public CoprocessorOperation(User user) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(user);<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>    public abstract void call(RegionServerObserver oserver,<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    private T result = null;<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public void setResult(final T result) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.result = result;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public T getResult() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return this.result;<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (ctx == null) return false;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    boolean bypass = false;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      RegionServerEnvironment env = envs.get(i);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        ctx.prepare(env);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        Thread currentThread = Thread.currentThread();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        try {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        } catch (Throwable e) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          handleCoprocessorThrowable(env, e);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        } finally {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          currentThread.setContextClassLoader(cl);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        bypass |= ctx.shouldBypass();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        if (ctx.shouldComplete()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          break;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      ctx.postEnvCall(env);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return bypass;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * RegionServer stop. (Refer:<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param ctx CoprocessorOperation<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @throws IOException<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (ctx == null) return false;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    boolean bypass = false;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    int envsSize = envs.size();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      RegionServerEnvironment env = envs.get(i);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        ctx.prepare(env);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        Thread currentThread = Thread.currentThread();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        try {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        } catch (Throwable e) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          handleCoprocessorThrowable(env, e);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        } finally {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>          currentThread.setContextClassLoader(cl);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        bypass |= ctx.shouldBypass();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        if (ctx.shouldComplete()) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          break;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">198</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    private T result = null;<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    public void setResult(final T result) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      this.result = result;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public T getResult() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return this.result;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (ctx == null) return false;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    boolean bypass = false;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      RegionServerEnvironment env = envs.get(i);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        ctx.prepare(env);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        Thread currentThread = Thread.currentThread();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        } catch (Throwable e) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          handleCoprocessorThrowable(env, e);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        } finally {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>          currentThread.setContextClassLoader(cl);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        bypass |= ctx.shouldBypass();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        if (ctx.shouldComplete()) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          break;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ctx.postEnvCall(env);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return bypass;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * RegionServer stop. (Refer:<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * @param ctx CoprocessorOperation<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * @throws IOException<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    if (ctx == null) return false;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    boolean bypass = false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    int envsSize = envs.size();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      RegionServerEnvironment env = envs.get(i);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        ctx.prepare(env);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Thread currentThread = Thread.currentThread();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        } catch (Throwable e) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          handleCoprocessorThrowable(env, e);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        } finally {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          currentThread.setContextClassLoader(cl);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        bypass |= ctx.shouldBypass();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        if (ctx.shouldComplete()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          break;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      }<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>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      RegionServerEnvironment env = envs.get(i);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      ctx.postEnvCall(env);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    return bypass;<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>  /**<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * Coprocessor environment extension providing access to region server<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * related services.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      implements RegionServerCoprocessorEnvironment {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    private final RegionServerServices regionServerServices;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    private final MetricRegistry metricRegistry;<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        final Configuration conf, final RegionServerServices services) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      super(impl, priority, seq, conf);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      this.regionServerServices = services;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          this.regionServerServices.registerService(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          break;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      this.metricRegistry =<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    @Override<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    public RegionServerServices getRegionServerServices() {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      return regionServerServices;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      return metricRegistry;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    @Override<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    protected void shutdown() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      super.shutdown();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<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>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * order.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  static class EnvironmentPriorityComparator implements<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        final CoprocessorEnvironment env2) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        return -1;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        return 1;<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><a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      RegionServerEnvironment env = envs.get(i);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      ctx.postEnvCall(env);<a name="line.349"></a>
+<span class="sourceLineNo">344</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        return -1;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        return 1;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      return 0;<a name="line.349"></a>
 <span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return bypass;<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>   * Coprocessor environment extension providing access to region server<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * related services.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      implements RegionServerCoprocessorEnvironment {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    private final RegionServerServices regionServerServices;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    private final MetricRegistry metricRegistry;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        final Configuration conf, final RegionServerServices services) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      super(impl, priority, seq, conf);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      this.regionServerServices = services;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          this.regionServerServices.registerService(<a name="line.373"></a>
-<span class="sourceLineNo">374</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          break;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      this.metricRegistry =<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    public RegionServerServices getRegionServerServices() {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      return regionServerServices;<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>    @Override<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      return metricRegistry;<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>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    protected void shutdown() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      super.shutdown();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * order.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  static class EnvironmentPriorityComparator implements<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    @Override<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        final CoprocessorEnvironment env2) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        return -1;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        return 1;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        return -1;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        return 1;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return 0;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<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">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>}<a name="line.352"></a>
 
 
 


[23/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/security/access/AccessController.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/AccessController.html b/devapidocs/org/apache/hadoop/hbase/security/access/AccessController.html
index be0f559..b256835 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/AccessController.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/AccessController.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":9,"i19":9,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109
 ":10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":9,"i19":9,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109
 ":10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -577,31 +577,13 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 </tr>
 <tr id="i37" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;c,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">called after the regions merge.</div>
-</td>
-</tr>
-<tr id="i38" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">This will be called after PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr id="i39" class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postModifyTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-">postModifyTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
                <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                <a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</code>
 <div class="block">Called after the modifyTable operation has been requested.</div>
 </td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postMutationBeforeWAL-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType-org.apache.hadoop.hbase.client.Mutation-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">postMutationBeforeWAL</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor">RegionObserver.MutationType</a>&nbsp;opType,
@@ -612,13 +594,13 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  it is committed to the WAL or memstore.</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postOpen-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postOpen</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c)</code>
 <div class="block">Called after the region is reported as open to the master.</div>
 </td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postPut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">postPut</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
        <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put,
@@ -627,7 +609,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called after the client stores a value.</div>
 </td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">postReplicateLogEntries</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
@@ -635,28 +617,20 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">This will be called after executing replication request to shipping log entries.</div>
 </td>
 </tr>
-<tr id="i44" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">This will be called after the roll back of the regions merge.</div>
-</td>
-</tr>
-<tr id="i45" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postRollWALWriterRequest</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called after executing user request to roll a region server WAL.</div>
 </td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postScannerClose-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.InternalScanner-">postScannerClose</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a>&nbsp;s)</code>
 <div class="block">Called after the client closes a scanner.</div>
 </td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postScannerFilterRow-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.InternalScanner-org.apache.hadoop.hbase.Cell-boolean-">postScannerFilterRow</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;e,
                     <a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a>&nbsp;s,
@@ -666,7 +640,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  filter.</div>
 </td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postScannerOpen-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Scan-org.apache.hadoop.hbase.regionserver.RegionScanner-">postScannerOpen</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
@@ -674,7 +648,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called after the client opens a new scanner.</div>
 </td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postSetSplitOrMergeEnabled-org.apache.hadoop.hbase.coprocessor.ObserverContext-boolean-org.apache.hadoop.hbase.client.MasterSwitchType-">postSetSplitOrMergeEnabled</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                           boolean&nbsp;newValue,
@@ -682,21 +656,21 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called after setting split / merge switch</div>
 </td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postStartMaster-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postStartMaster</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called immediately after an active master instance has completed
  initialization.</div>
 </td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postTruncateTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">postTruncateTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                  <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Called after the truncateTable operation has been requested.</div>
 </td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preAbortProcedure-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.procedure2.ProcedureExecutor-long-">preAbortProcedure</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                  <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt;&nbsp;procEnv,
@@ -704,7 +678,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before a abortProcedure request has been processed.</div>
 </td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preAddColumnFamily-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">preAddColumnFamily</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -712,7 +686,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called prior to adding a new column family to the table.</div>
 </td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preAddReplicationPeer-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">preAddReplicationPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
@@ -720,63 +694,63 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before add a replication peer</div>
 </td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preAddRSGroup-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preAddRSGroup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
              <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Called before a new region server group is added</div>
 </td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preAppend-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppend</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
          <a href="../../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;append)</code>
 <div class="block">Called before Append.</div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preAppendAfterRowLock-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Append-">preAppendAfterRowLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                      <a href="../../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>&nbsp;append)</code>
 <div class="block">Called before Append but after acquiring rowlock.</div>
 </td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preAssign-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo-">preAssign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
          <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;regionInfo)</code>
 <div class="block">Called prior to assigning a specific region.</div>
 </td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preBalance-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preBalance</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c)</code>
 <div class="block">Called prior to requesting rebalancing of the cluster regions, though after
  the initial checks for regions in transition and the balance switch flag.</div>
 </td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preBalanceRSGroup-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preBalanceRSGroup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;groupName)</code>
 <div class="block">Called before a region server group is removed</div>
 </td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preBalanceSwitch-org.apache.hadoop.hbase.coprocessor.ObserverContext-boolean-">preBalanceSwitch</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
                 boolean&nbsp;newValue)</code>
 <div class="block">Called prior to modifying the flag used to enable/disable region balancing.</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preBatchMutate-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-">preBatchMutate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp)</code>
 <div class="block">This will be called for every batch mutation operation happening at the server.</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preBulkLoadHFile-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-">preBulkLoadHFile</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 <a href="http://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/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;familyPaths)</code>
@@ -785,7 +759,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  request.</div>
 </td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preCheckAndDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.CompareOperator-org.apache.hadoop.hbase.filter.ByteArrayComparable-org.apache.hadoop.hbase.client.Delete-boolean-">preCheckAndDelete</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                  byte[]&nbsp;row,
@@ -798,7 +772,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before checkAndDelete.</div>
 </td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preCheckAndDeleteAfterRowLock-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.CompareOperator-org.apache.hadoop.hbase.filter.ByteArrayComparable-org.apache.hadoop.hbase.client.Delete-boolean-">preCheckAndDeleteAfterRowLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                              byte[]&nbsp;row,
@@ -811,7 +785,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before checkAndDelete but after acquiring rowock.</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preCheckAndPut-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.CompareOperator-org.apache.hadoop.hbase.filter.ByteArrayComparable-org.apache.hadoop.hbase.client.Put-boolean-">preCheckAndPut</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
               byte[]&nbsp;row,
@@ -824,7 +798,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before checkAndPut.</div>
 </td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preCheckAndPutAfterRowLock-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.CompareOperator-org.apache.hadoop.hbase.filter.ByteArrayComparable-org.apache.hadoop.hbase.client.Put-boolean-">preCheckAndPutAfterRowLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                           byte[]&nbsp;row,
@@ -837,7 +811,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before checkAndPut but after acquiring rowlock.</div>
 </td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preCleanupBulkLoad-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest-">preCleanupBulkLoad</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest&nbsp;request)</code>
@@ -845,19 +819,19 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  SecureBulkLoadProtocol.cleanupBulkLoad()</div>
 </td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearCompactionQueues</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called before clearing compaction queues</div>
 </td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preClearDeadServers-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearDeadServers</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called before clear dead region servers.</div>
 </td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preCloneSnapshot-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-org.apache.hadoop.hbase.client.TableDescriptor-">preCloneSnapshot</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;snapshot,
@@ -865,14 +839,14 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before a snapshot is cloned.</div>
 </td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preClose-org.apache.hadoop.hbase.coprocessor.ObserverContext-boolean-">preClose</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
         boolean&nbsp;abortRequested)</code>
 <div class="block">Called before the region is reported as closed to the master.</div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preCompact-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Store-org.apache.hadoop.hbase.regionserver.InternalScanner-org.apache.hadoop.hbase.regionserver.ScanType-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-">preCompact</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
@@ -883,7 +857,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  <code>StoreFile</code>.</div>
 </td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preCreateNamespace-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.NamespaceDescriptor-">preCreateNamespace</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   <a href="../../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;ns)</code>
@@ -891,7 +865,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master"><code>HMaster</code></a>.</div>
 </td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preCreateTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.HRegionInfo:A-">preCreateTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
               <a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc,
@@ -900,7 +874,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master"><code>HMaster</code></a>.</div>
 </td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preDelete-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Delete-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">preDelete</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
          <a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;delete,
@@ -909,7 +883,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before the client deletes a value.</div>
 </td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preDeleteColumnFamily-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-byte:A-">preDeleteColumnFamily</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -917,7 +891,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called prior to deleting the entire column family.</div>
 </td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preDeleteNamespace-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preDeleteNamespace</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</code>
@@ -926,14 +900,14 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  It can't bypass the default action, e.g., ctx.bypass() won't have effect.</div>
 </td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preDeleteSnapshot-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-">preDeleteSnapshot</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                  org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;snapshot)</code>
 <div class="block">Called before a snapshot is deleted.</div>
 </td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preDeleteTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">preDeleteTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
@@ -941,35 +915,35 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  table.</div>
 </td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preDisableReplicationPeer-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preDisableReplicationPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Called before disable a replication peer</div>
 </td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preDisableTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">preDisableTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
                <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Called prior to disabling a table.</div>
 </td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preEnableReplicationPeer-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preEnableReplicationPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Called before enable a replication peer</div>
 </td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preEnableTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-">preEnableTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Called prior to enabling a table.</div>
 </td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>com.google.protobuf.Message</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preEndpointInvocation-org.apache.hadoop.hbase.coprocessor.ObserverContext-com.google.protobuf.Service-java.lang.String-com.google.protobuf.Message-">preEndpointInvocation</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      com.google.protobuf.Service&nbsp;service,
@@ -978,7 +952,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before an Endpoint service method is invoked.</div>
 </td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preExists-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-boolean-">preExists</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
          <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get,
@@ -986,26 +960,26 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before the client tests for existence using a Get.</div>
 </td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preFlush-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preFlush</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c)</code>
 <div class="block">Called before the memstore is flushed to disk.</div>
 </td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preGetLocks-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preGetLocks</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called before a getLocks request has been processed.</div>
 </td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preGetNamespaceDescriptor-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preGetNamespaceDescriptor</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</code>
 <div class="block">Called before a getNamespaceDescriptor request has been processed.</div>
 </td>
 </tr>
-<tr id="i90" class="altColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preGetOp-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Get-java.util.List-">preGetOp</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
         <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get,
@@ -1013,20 +987,20 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before the client performs a Get</div>
 </td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preGetProcedures-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preGetProcedures</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called before a getProcedures request has been processed.</div>
 </td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i89" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preGetReplicationPeerConfig-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preGetReplicationPeerConfig</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Called before get the configured ReplicationPeerConfig for the specified peer</div>
 </td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i90" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preGetTableDescriptors-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-java.util.List-java.lang.String-">preGetTableDescriptors</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                       <a href="http://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/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableNamesList,
@@ -1035,35 +1009,35 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before a getTableDescriptors request has been processed.</div>
 </td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i91" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preIncrement-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">preIncrement</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
             <a href="../../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;increment)</code>
 <div class="block">Called before Increment.</div>
 </td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i92" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preIncrementAfterRowLock-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Increment-">preIncrementAfterRowLock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
                         <a href="../../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>&nbsp;increment)</code>
 <div class="block">Called before Increment but after acquiring rowlock.</div>
 </td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preListReplicationPeers-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preListReplicationPeers</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex)</code>
 <div class="block">Called before list replication peers.</div>
 </td>
 </tr>
-<tr id="i97" class="rowColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preListSnapshot-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-">preListSnapshot</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;snapshot)</code>
 <div class="block">Called before listSnapshots request has been processed.</div>
 </td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preLockHeartbeat-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.master.locking.LockProcedure-boolean-">preLockHeartbeat</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 <a href="../../../../../../org/apache/hadoop/hbase/master/locking/LockProcedure.html" title="class in org.apache.hadoop.hbase.master.locking">LockProcedure</a>&nbsp;proc,
@@ -1071,31 +1045,14 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before heartbeat to a lock.</div>
 </td>
 </tr>
-<tr id="i99" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">Called before the regions merge.</div>
-</td>
-</tr>
-<tr id="i100" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>
-<div class="block">This will be called before PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr id="i101" class="rowColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMergeRegions-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-">preMergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>[]&nbsp;regionsToMerge)</code>
 <div class="block">Called before merge regions request.</div>
 </td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i97" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preModifyColumnFamily-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">preModifyColumnFamily</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                      <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -1103,14 +1060,14 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called prior to modifying a column family's attributes.</div>
 </td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i98" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preModifyNamespace-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.NamespaceDescriptor-">preModifyNamespace</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   <a href="../../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;ns)</code>
 <div class="block">Called prior to modifying a namespace's properties.</div>
 </td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preModifyTable-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-">preModifyTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -1118,7 +1075,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called prior to modifying a table's properties.</div>
 </td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMove-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-">preMove</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
        <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;region,
@@ -1127,7 +1084,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called prior to moving a given region from one region server to another.</div>
 </td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMoveServers-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.Set-java.lang.String-">preMoveServers</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
               <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/net/Address.html" title="class in org.apache.hadoop.hbase.net">Address</a>&gt;&nbsp;servers,
@@ -1135,7 +1092,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before servers are moved to target region server group</div>
 </td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMoveServersAndTables-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.Set-java.util.Set-java.lang.String-">preMoveServersAndTables</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/net/Address.html" title="class in org.apache.hadoop.hbase.net">Address</a>&gt;&nbsp;servers,
@@ -1144,7 +1101,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before servers are moved to target region server group</div>
 </td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMoveTables-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.Set-java.lang.String-">preMoveTables</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
              <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables,
@@ -1152,13 +1109,13 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before tables are moved to target region server group</div>
 </td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preOpen-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preOpen</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c)</code>
 <div class="block">Called before the region is reported as open to the master.</div>
 </td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#prePrepareBulkLoad-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest-">prePrepareBulkLoad</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                   org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest&nbsp;request)</code>
@@ -1166,7 +1123,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
  SecureBulkLoadProtocol.prepareBulkLoad()</div>
 </td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#prePut-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.Put-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-">prePut</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
       <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put,
@@ -1175,28 +1132,28 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Master
 <div class="block">Called before the client stores a value.</div>
 </td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preRegionOffline-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo-">preRegionOffline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;c,
                 <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;regionInfo)</code>
 <div class="block">Called prior to marking a given region as offline.</div>
 </td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preRemoveReplicationPeer-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preRemoveReplicationPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>
 <div class="block">Called before remove a replication peer</div>
 </td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preRemoveRSGroup-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-">preRemoveRSGroup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Called before a region server group is removed</div>
 </td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.Obs

<TRUNCATED>

[09/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
index 82eb9fd..8eb952a 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPRegionServerObserver.html
@@ -71,668 +71,655 @@
 <span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.63"></a>
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.zookeeper.KeeperException;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.junit.After;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.junit.AfterClass;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.junit.BeforeClass;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.junit.Rule;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.junit.Test;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.junit.experimental.categories.Category;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.junit.rules.TestRule;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>@Category(MediumTests.class)<a name="line.93"></a>
-<span class="sourceLineNo">094</span>public class TestNamespaceAuditor {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static Admin ADMIN;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private String prefix = "TestNamespaceAuditor";<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  @BeforeClass<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public static void before() throws Exception {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    Configuration conf = UTIL.getConfiguration();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    conf.setStrings(<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      RegionServerObserver.class);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    UTIL.startMiniCluster(1, 1);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    waitForQuotaInitialize(UTIL);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    ADMIN = UTIL.getAdmin();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  @AfterClass<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public static void tearDown() throws Exception {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    UTIL.shutdownMiniCluster();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @After<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public void cleanup() throws Exception, KeeperException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      ADMIN.disableTable(table.getTableName());<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      deleteTable(table.getTableName());<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      if (ns.getName().startsWith(prefix)) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  @Test<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void testTableOperations() throws Exception {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    String nsp = prefix + "_np2";<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    NamespaceDescriptor nspDesc =<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.142"></a>
-<span class="sourceLineNo">143</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    ADMIN.createNamespace(nspDesc);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    HTableDescriptor tableDescOne =<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    tableDescOne.addFamily(fam1);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HTableDescriptor tableDescTwo =<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    tableDescTwo.addFamily(fam1);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    HTableDescriptor tableDescThree =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    tableDescThree.addFamily(fam1);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    ADMIN.createTable(tableDescOne);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    boolean constraintViolated = false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    } catch (Exception exp) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      assertTrue(exp instanceof IOException);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      constraintViolated = true;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        constraintViolated);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    assertNotNull(nspState);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    constraintViolated = false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      ADMIN.createTable(tableDescThree);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    } catch (Exception exp) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      assertTrue(exp instanceof IOException);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      constraintViolated = true;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    } finally {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        constraintViolated);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  @Test<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void testValidQuotas() throws Exception {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    boolean exceptionCaught = false;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    NamespaceDescriptor nspDesc =<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.192"></a>
-<span class="sourceLineNo">193</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.193"></a>
-<span class="sourceLineNo">194</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      ADMIN.createNamespace(nspDesc);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    } catch (Exception exp) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      LOG.warn(exp);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      exceptionCaught = true;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } finally {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      assertTrue(exceptionCaught);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    nspDesc =<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      ADMIN.createNamespace(nspDesc);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } catch (Exception exp) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      LOG.warn(exp);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      exceptionCaught = true;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    } finally {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      assertTrue(exceptionCaught);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    nspDesc =<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      ADMIN.createNamespace(nspDesc);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    } catch (Exception exp) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      LOG.warn(exp);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      exceptionCaught = true;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    } finally {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      assertTrue(exceptionCaught);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    nspDesc =<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.232"></a>
-<span class="sourceLineNo">233</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    try {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      ADMIN.createNamespace(nspDesc);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    } catch (Exception exp) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      LOG.warn(exp);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      exceptionCaught = true;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      assertTrue(exceptionCaught);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Test<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public void testDeleteTable() throws Exception {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    String namespace = prefix + "_dummy";<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    NamespaceDescriptor nspDesc =<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        NamespaceDescriptor.create(namespace)<a name="line.249"></a>
-<span class="sourceLineNo">250</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    ADMIN.createNamespace(nspDesc);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    HTableDescriptor tableDescOne =<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    tableDescOne.addFamily(fam1);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    HTableDescriptor tableDescTwo =<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    tableDescTwo.addFamily(fam1);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ADMIN.createTable(tableDescOne);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    deleteTable(tableDescOne.getTableName());<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    deleteTable(tableDescTwo.getTableName());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    ADMIN.deleteNamespace(namespace);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    stateInfo = getNamespaceState(namespace);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.zookeeper.KeeperException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.junit.After;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.junit.AfterClass;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.junit.BeforeClass;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.junit.Rule;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.junit.Test;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.junit.experimental.categories.Category;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.junit.rules.TestRule;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>@Category(MediumTests.class)<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public class TestNamespaceAuditor {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static Admin ADMIN;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private String prefix = "TestNamespaceAuditor";<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @BeforeClass<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public static void before() throws Exception {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    Configuration conf = UTIL.getConfiguration();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    conf.setStrings(<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      RegionServerObserver.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    UTIL.startMiniCluster(1, 1);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    waitForQuotaInitialize(UTIL);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ADMIN = UTIL.getAdmin();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @AfterClass<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static void tearDown() throws Exception {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    UTIL.shutdownMiniCluster();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  @After<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public void cleanup() throws Exception, KeeperException {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      ADMIN.disableTable(table.getTableName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      deleteTable(table.getTableName());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      if (ns.getName().startsWith(prefix)) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  @Test<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public void testTableOperations() throws Exception {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    String nsp = prefix + "_np2";<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    NamespaceDescriptor nspDesc =<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.139"></a>
+<span class="sourceLineNo">140</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    ADMIN.createNamespace(nspDesc);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    HTableDescriptor tableDescOne =<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    tableDescOne.addFamily(fam1);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    HTableDescriptor tableDescTwo =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    tableDescTwo.addFamily(fam1);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    HTableDescriptor tableDescThree =<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    tableDescThree.addFamily(fam1);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    ADMIN.createTable(tableDescOne);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    boolean constraintViolated = false;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    try {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    } catch (Exception exp) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      assertTrue(exp instanceof IOException);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      constraintViolated = true;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    } finally {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        constraintViolated);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    assertNotNull(nspState);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    constraintViolated = false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      ADMIN.createTable(tableDescThree);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (Exception exp) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      assertTrue(exp instanceof IOException);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      constraintViolated = true;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } finally {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        constraintViolated);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  @Test<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public void testValidQuotas() throws Exception {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    boolean exceptionCaught = false;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    NamespaceDescriptor nspDesc =<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.189"></a>
+<span class="sourceLineNo">190</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      ADMIN.createNamespace(nspDesc);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    } catch (Exception exp) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      LOG.warn(exp);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      exceptionCaught = true;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      assertTrue(exceptionCaught);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    nspDesc =<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.203"></a>
+<span class="sourceLineNo">204</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    try {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ADMIN.createNamespace(nspDesc);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    } catch (Exception exp) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      LOG.warn(exp);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      exceptionCaught = true;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    } finally {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      assertTrue(exceptionCaught);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    nspDesc =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    try {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      ADMIN.createNamespace(nspDesc);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    } catch (Exception exp) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      LOG.warn(exp);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      exceptionCaught = true;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    } finally {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      assertTrue(exceptionCaught);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    nspDesc =<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.228"></a>
+<span class="sourceLineNo">229</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    try {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      ADMIN.createNamespace(nspDesc);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    } catch (Exception exp) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      LOG.warn(exp);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      exceptionCaught = true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } finally {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      assertTrue(exceptionCaught);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  @Test<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public void testDeleteTable() throws Exception {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    String namespace = prefix + "_dummy";<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    NamespaceDescriptor nspDesc =<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        NamespaceDescriptor.create(namespace)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.247"></a>
+<span class="sourceLineNo">248</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    ADMIN.createNamespace(nspDesc);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    HTableDescriptor tableDescOne =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    tableDescOne.addFamily(fam1);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    HTableDescriptor tableDescTwo =<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    tableDescTwo.addFamily(fam1);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    ADMIN.createTable(tableDescOne);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    deleteTable(tableDescOne.getTableName());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    deleteTable(tableDescTwo.getTableName());<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    ADMIN.deleteNamespace(namespace);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    stateInfo = getNamespaceState(namespace);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    private volatile boolean shouldFailMerge = false;<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    private volatile boolean shouldFailMerge = false;<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void failMerge(boolean fail) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      shouldFailMerge = fail;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    private boolean triggered = false;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      while (!triggered) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        wait();<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    public synchronized void preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        Region regionA, Region regionB) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      triggered = true;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      notifyAll();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (shouldFailMerge) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        throw new IOException("fail merge");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    private volatile boolean shouldFailMerge = false;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    public void failMerge(boolean fail) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      shouldFailMerge = fail;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public synchronized void preMergeRegionsAction(<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      notifyAll();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      if (shouldFailMerge) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        throw new IOException("fail merge");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testRegionMerge() throws Exception {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    String nsp1 = prefix + "_regiontest";<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    final int initialRegions = 3;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    NamespaceDescriptor nspDesc =<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        NamespaceDescriptor.create(nsp1)<a name="line.332"></a>
-<span class="sourceLineNo">333</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.333"></a>
-<span class="sourceLineNo">334</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    ADMIN.createNamespace(nspDesc);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    ADMIN.flush(tableTwo);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    assertEquals(initialRegions, hris.size());<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    Collections.sort(hris);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      false);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    f.get(10, TimeUnit.SECONDS);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    Collections.sort(hris);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // Not much we can do here until we have split return a Future.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    Threads.sleep(5000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(initialRegions, hris.size());<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    Collections.sort(hris);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>    // Fail region merge through Coprocessor hook<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    masterObserver.failMerge(true);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    f = ADMIN.mergeRegionsAsync(<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      false);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    try {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      f.get(10, TimeUnit.SECONDS);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      fail("Merge was supposed to fail!");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } catch (ExecutionException ee) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      // Expected.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assertEquals(initialRegions, hris.size());<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    Collections.sort(hris);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    // verify that we cannot split<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    Thread.sleep(2000);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * HBASE-13394<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Test<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    NamespaceDescriptor nspDesc =<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        NamespaceDescriptor.create(nsp1)<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    ADMIN.createNamespace(nspDesc);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    try {<a name="line.410"></a>
+<span class="sourceLineNo">283</span>    public void failMerge(boolean fail) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      shouldFailMerge = fail;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    private boolean triggered = false;<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      while (!triggered) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        wait();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    private volatile boolean shouldFailMerge = false;<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>    public void failMerge(boolean fail) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      shouldFailMerge = fail;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>    @Override<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    public synchronized void preMergeRegionsAction(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      notifyAll();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (shouldFailMerge) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        throw new IOException("fail merge");<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  @Test<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  public void testRegionMerge() throws Exception {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    String nsp1 = prefix + "_regiontest";<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    final int initialRegions = 3;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    NamespaceDescriptor nspDesc =<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        NamespaceDescriptor.create(nsp1)<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    ADMIN.createNamespace(nspDesc);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    ADMIN.flush(tableTwo);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    assertEquals(initialRegions, hris.size());<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    Collections.sort(hris);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      false);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    f.get(10, TimeUnit.SECONDS);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Collections.sort(hris);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // Not much we can do here until we have split return a Future.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    Threads.sleep(5000);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    assertEquals(initialRegions, hris.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    Collections.sort(hris);<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>    // Fail region merge through Coprocessor hook<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    masterObserver.failMerge(true);<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>    f = ADMIN.mergeRegionsAsync(<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      false);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    try {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      f.get(10, TimeUnit.SECONDS);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      fail("Merge was supposed to fail!");<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    } catch (ExecutionException ee) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      // Expected.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    assertEquals(initialRegions, hris.size());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    Collections.sort(hris);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    // verify that we cannot split<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Thread.sleep(2000);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * HBASE-13394<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   */<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  @Test<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    NamespaceDescriptor nspDesc =<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        NamespaceDescriptor.create(nsp1)<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    ADMIN.createNamespace(nspDesc);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    try {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        ADMIN.createTable(tableDescOne);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } catch (Exception exp) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        LOG.error(exp);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.410"></a>
 <span class="sourceLineNo">411</span>      try {<a name="line.411"></a>
 <span class="sourceLineNo">412</span>        ADMIN.createTable(tableDescOne);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      } catch (Exception exp) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        LOG.error(exp);<a name="line.415"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        LOG.error(e);<a name="line.415"></a>
 <span class="sourceLineNo">416</span>      }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      try {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        ADMIN.createTable(tableDescOne);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } catch (Exception e) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        LOG.error(e);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      nstate = getNamespaceState(nsp1);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    } finally {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ADMIN.disableTable(tableOne);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        deleteTable(tableOne);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      ADMIN.deleteNamespace(nsp1);<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><a name="line.443"></a>
-<span class="sourceLineNo">444</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return getQuotaManager().getState(namespace);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    String skey = Bytes.toString(startKey);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    int key;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    if (StringUtils.isBlank(skey)) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    } else {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return Bytes.toBytes("" + key);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public static class CustomObserver implements RegionObserver {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    volatile CountDownLatch postCompact;<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    @Override<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      postCompact.countDown();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    @Override<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      postCompact = new CountDownLatch(1);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  @Test<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public void testStatePreserve() throws Exception {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    ADMIN.createNamespace(nspDesc);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    tableDescOne.addFamily(fam1);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    tableDescTwo.addFamily(fam1);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    tableDescThree.addFamily(fam1);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    ADMIN.disableTable(tableThree);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    deleteTable(tableThree);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // wait for chore to complete<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      @Override<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      public boolean evaluate() throws Exception {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<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>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    restartMaster();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        .getTables().size(), after.getTables().size());<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      @Override<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      public boolean evaluate() throws Exception {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        if (master == null) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          return false;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<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>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  private void restartMaster() throws Exception {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    UTIL.getHBaseCluster().startMaster();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    waitForQuotaInitialize(UTIL);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  private NamespaceAuditor getQuotaManager() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public static class MasterSyncObserver implements MasterObserver {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.539"></a>
+<span class="sourceLineNo">417</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      nstate = getNamespaceState(nsp1);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.419"></a>
+<span class="sourceLineNo">420</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    } finally {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        ADMIN.disableTable(tableOne);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        deleteTable(tableOne);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      ADMIN.deleteNamespace(nsp1);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      IOException {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return getQuotaManager().getState(namespace);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    String skey = Bytes.toString(startKey);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    int key;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (StringUtils.isBlank(skey)) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return Bytes.toBytes("" + key);<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 static class CustomObserver implements RegionObserver {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    volatile CountDownLatch postCompact;<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    @Override<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      postCompact.countDown();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    @Override<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      postCompact = new CountDownLatch(1);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
+<span class="sourc

<TRUNCATED>

[24/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
index e1a45bb..660aa07 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -116,7 +116,7 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Coprocesssor")
  @InterfaceStability.Evolving
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.51">RegionServerCoprocessorHost</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.49">RegionServerCoprocessorHost</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.RegionServerEnvironment</a>&gt;</pre>
 </li>
 </ul>
@@ -263,66 +263,27 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 </tr>
 <tr id="i6" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postMerge</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-         <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-         <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;mergedRegion,
-         <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postMergeCommit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-               <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-               <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;mergedRegion,
-               <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postReplicateLogEntries-java.util.List-org.apache.hadoop.hbase.CellScanner-">postReplicateLogEntries</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                        <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postRollBackMerge</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                 <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr id="i10" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postRollWALWriterRequest--">postRollWALWriterRequest</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preClearCompactionQueues--">preClearCompactionQueues</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">preMerge</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-        <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-        <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr id="i13" class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.security.User-">preMergeCommit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries,
-              <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr id="i14" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preReplicateLogEntries-java.util.List-org.apache.hadoop.hbase.CellScanner-">preReplicateLogEntries</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                       <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">preRollBackMerge</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr id="i16" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preRollWALWriterRequest--">preRollWALWriterRequest</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preStop-java.lang.String-org.apache.hadoop.hbase.security.User-">preStop</a></span>(<a href="http://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="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
@@ -362,7 +323,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.54">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.52">LOG</a></pre>
 </li>
 </ul>
 <a name="rsServices">
@@ -371,7 +332,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockListLast">
 <li class="blockList">
 <h4>rsServices</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.56">rsServices</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.54">rsServices</a></pre>
 </li>
 </ul>
 </li>
@@ -388,7 +349,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionServerCoprocessorHost</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.58">RegionServerCoprocessorHost</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;rsServices,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.56">RegionServerCoprocessorHost</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;rsServices,
                                    org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
@@ -406,7 +367,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>createEnvironment</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.RegionServerEnvironment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.77">createEnvironment</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.RegionServerEnvironment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.75">createEnvironment</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass,
                                                                              <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&nbsp;instance,
                                                                              int&nbsp;priority,
                                                                              int&nbsp;sequence,
@@ -425,7 +386,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>preStop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.83">preStop</a>(<a href="http://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,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.81">preStop</a>(<a href="http://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="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
              throws <a href="http://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>
@@ -434,113 +395,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 </dl>
 </li>
 </ul>
-<a name="preMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>preMerge</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.100">preMerge</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                        <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
-                 throws <a href="http://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>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="postMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>postMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.110">postMerge</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;mergedRegion,
-                      <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
-               throws <a href="http://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>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="preMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.security.User-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>preMergeCommit</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.122">preMergeCommit</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                              <a href="../../../../../org/apache/hadoop/hbase/MetaMutationAnnotation.html" title="annotation in org.apache.hadoop.hbase">@MetaMutationAnnotation</a>
-                              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries,
-                              <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
-                       throws <a href="http://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>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="postMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>postMergeCommit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.134">postMergeCommit</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;mergedRegion,
-                            <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
-                     throws <a href="http://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>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="preRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>preRollBackMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.145">preRollBackMerge</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                             <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
-                      throws <a href="http://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>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="postRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>postRollBackMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.156">postRollBackMerge</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                              <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
-                       throws <a href="http://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>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
 <a name="preRollWALWriterRequest--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>preRollWALWriterRequest</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.167">preRollWALWriterRequest</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.98">preRollWALWriterRequest</a>()
                              throws <a href="http://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>
@@ -554,7 +415,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>postRollWALWriterRequest</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.177">postRollWALWriterRequest</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.108">postRollWALWriterRequest</a>()
                               throws <a href="http://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>
@@ -568,7 +429,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>preReplicateLogEntries</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.187">preReplicateLogEntries</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.118">preReplicateLogEntries</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                                    <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)
                             throws <a href="http://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>
@@ -583,7 +444,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>postReplicateLogEntries</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.198">postReplicateLogEntries</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.129">postReplicateLogEntries</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                                     <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)
                              throws <a href="http://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>
@@ -598,7 +459,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>postCreateReplicationEndPoint</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.209">postCreateReplicationEndPoint</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;endpoint)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.140">postCreateReplicationEndPoint</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;endpoint)
                                                   throws <a href="http://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>
@@ -612,7 +473,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>preClearCompactionQueues</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.221">preClearCompactionQueues</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.152">preClearCompactionQueues</a>()
                               throws <a href="http://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>
@@ -626,7 +487,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>postClearCompactionQueues</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.231">postClearCompactionQueues</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.162">postClearCompactionQueues</a>()
                                throws <a href="http://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>
@@ -642,7 +503,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>execOperationWithResult</h4>
-<pre>private&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.241">execOperationWithResult</a>(T&nbsp;defaultValue,
+<pre>private&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.172">execOperationWithResult</a>(T&nbsp;defaultValue,
                                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.CoprocessOperationWithResult</a>&lt;T&gt;&nbsp;ctx)
                                throws <a href="http://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>
@@ -657,7 +518,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockList">
 <li class="blockList">
 <h4>execOperation</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.279">execOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.CoprocessorOperation</a>&nbsp;ctx)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.210">execOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.CoprocessorOperation</a>&nbsp;ctx)
                        throws <a href="http://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>
@@ -671,7 +532,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorH
 <ul class="blockListLast">
 <li class="blockList">
 <h4>execShutdown</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.319">execShutdown</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.CoprocessorOperation</a>&nbsp;ctx)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.250">execShutdown</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.CoprocessorOperation</a>&nbsp;ctx)
                       throws <a href="http://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">RegionServer coprocessor classes can be configured in any order, based on that priority is set
  and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegion.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegion.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegion.html
index 5255a43..64b0031 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegion.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegion.html
@@ -451,20 +451,6 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;mergedRegion,
-         <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;mergedRegion,
-               <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MultiRowMutationProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MultiRowMutationProcessor.html#postProcess-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.wal.WALEdit-boolean-">postProcess</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
            <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
            boolean&nbsp;success)</code>&nbsp;</td>
@@ -485,63 +471,38 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                 <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MultiRowMutationProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MultiRowMutationProcessor.html#preBatchMutate-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.wal.WALEdit-">preBatchMutate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
               <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">BaseRowProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/BaseRowProcessor.html#preBatchMutate-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.wal.WALEdit-">preBatchMutate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
               <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RowProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RowProcessor.html#preBatchMutate-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.wal.WALEdit-">preBatchMutate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
               <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit)</code>
 <div class="block">The hook to be executed after the process() but before applying the Mutations to region.</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">preMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-        <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
 <tr class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.security.User-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries,
-              <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MultiRowMutationProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MultiRowMutationProcessor.html#preProcess-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.wal.WALEdit-">preProcess</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">BaseRowProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/BaseRowProcessor.html#preProcess-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.wal.WALEdit-">preProcess</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RowProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RowProcessor.html#preProcess-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.wal.WALEdit-">preProcess</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit)</code>
 <div class="block">The hook to be executed before process().</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">preRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-                <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MultiRowMutationProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MultiRowMutationProcessor.html#process-long-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.wal.WALEdit-">process</a></span>(long&nbsp;now,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Region.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Region.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Region.html
index ee50650..84ca835 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Region.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Region.html
@@ -159,57 +159,6 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">called after the regions merge.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">This will be called after PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">This will be called after the roll back of the regions merge.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">Called before the regions merge.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>
-<div class="block">This will be called before PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">This will be called before the roll back of the regions merge.</div>
-</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private static org.apache.hadoop.hbase.protobuf.generated.ExportProtos.ExportResponse</code></td>
 <td class="colLast"><span class="typeNameLabel">Export.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/Export.html#processData-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.security.UserProvider-org.apache.hadoop.hbase.client.Scan-org.apache.hadoop.security.token.Token-java.util.List-">processData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;region,
            org.apache.hadoop.conf.Configuration&nbsp;conf,
@@ -1071,45 +1020,6 @@
  table.</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;c,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>&nbsp;</td>
-</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index df9de85..1e17d01 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -696,18 +696,18 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactor.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.FlushResult.Result</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactor.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactor.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
index d2095fe..f26658d 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -202,8 +202,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
 </ul>
 </li>
 </ul>


[12/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index 0bf5df1..45decb2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -567,15 +567,15 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
index dec1fae..46c9672 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
@@ -81,14 +81,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure&lt;TEnvironment&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)
+<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;V&gt;, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;V&gt;, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
+<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure&lt;TEnvironment&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.procedure.ProcedureManager

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.StopBlockingRegionObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.StopBlockingRegionObserver.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.StopBlockingRegionObserver.html
index 1ea75ca..fe502b9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.StopBlockingRegionObserver.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.StopBlockingRegionObserver.html
@@ -239,7 +239,7 @@ implements org.apache.hadoop.hbase.coprocessor.RegionServerObserver, org.apache.
 <!--   -->
 </a>
 <h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.RegionServerObserver</h3>
-<code>postClearCompactionQueues, postCreateReplicationEndPoint, postMerge, postMergeCommit, postReplicateLogEntries, postRollBackMerge, postRollWALWriterRequest, preClearCompactionQueues, preMerge, preMergeCommit, preReplicateLogEntries, preRollBackMerge, preRollWALWriterRequest</code></li>
+<code>postClearCompactionQueues, postCreateReplicationEndPoint, postReplicateLogEntries, postRollWALWriterRequest, preClearCompactionQueues, preReplicateLogEntries, preRollWALWriterRequest</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.coprocessor.RegionObserver">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index f81eb22..db1a035 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -622,11 +622,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html
index 3061ef0..91c509b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1090">TestAccessController.BulkLoadHelper</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.1065">TestAccessController.BulkLoadHelper</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -227,7 +227,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1091">fs</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1066">fs</a></pre>
 </li>
 </ul>
 <a name="loadPath">
@@ -236,7 +236,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>loadPath</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1092">loadPath</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1067">loadPath</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -245,7 +245,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1093">conf</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1068">conf</a></pre>
 </li>
 </ul>
 </li>
@@ -262,7 +262,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BulkLoadHelper</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1095">BulkLoadHelper</a>(org.apache.hadoop.fs.Path&nbsp;loadPath)
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1070">BulkLoadHelper</a>(org.apache.hadoop.fs.Path&nbsp;loadPath)
                throws <a href="http://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>
@@ -284,7 +284,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createHFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1102">createHFile</a>(org.apache.hadoop.fs.Path&nbsp;path,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1077">createHFile</a>(org.apache.hadoop.fs.Path&nbsp;path,
                          byte[]&nbsp;family,
                          byte[]&nbsp;qualifier,
                          byte[]&nbsp;startKey,
@@ -303,7 +303,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>bulkLoadHFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1125">bulkLoadHFile</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1100">bulkLoadHFile</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                            byte[]&nbsp;family,
                            byte[]&nbsp;qualifier,
                            byte[][][]&nbsp;hfileRanges,
@@ -321,7 +321,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setPermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1155">setPermission</a>(org.apache.hadoop.fs.Path&nbsp;dir,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.BulkLoadHelper.html#line.1130">setPermission</a>(org.apache.hadoop.fs.Path&nbsp;dir,
                           org.apache.hadoop.fs.permission.FsPermission&nbsp;perm)
                    throws <a href="http://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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html
index 1480aa0..8509701 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2590">TestAccessController.PingCoprocessor</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.html#line.2565">TestAccessController.PingCoprocessor</a>
 extends org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.PingService
 implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coprocessor.CoprocessorService</pre>
 </li>
@@ -274,7 +274,7 @@ implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coproces
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PingCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2590">PingCoprocessor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2565">PingCoprocessor</a>()</pre>
 </li>
 </ul>
 </li>
@@ -291,7 +291,7 @@ implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coproces
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2594">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;env)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2569">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;env)
            throws <a href="http://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="overrideSpecifyLabel">Specified by:</span></dt>
@@ -307,7 +307,7 @@ implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coproces
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2597">stop</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;env)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2572">stop</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;env)
           throws <a href="http://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="overrideSpecifyLabel">Specified by:</span></dt>
@@ -323,7 +323,7 @@ implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coproces
 <ul class="blockList">
 <li class="blockList">
 <h4>getService</h4>
-<pre>public&nbsp;com.google.protobuf.Service&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2600">getService</a>()</pre>
+<pre>public&nbsp;com.google.protobuf.Service&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2575">getService</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getService</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.CoprocessorService</code></dd>
@@ -336,7 +336,7 @@ implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coproces
 <ul class="blockList">
 <li class="blockList">
 <h4>ping</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2605">ping</a>(com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2580">ping</a>(com.google.protobuf.RpcController&nbsp;controller,
                  org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.PingRequest&nbsp;request,
                  com.google.protobuf.RpcCallback&lt;org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.PingResponse&gt;&nbsp;callback)</pre>
 <dl>
@@ -351,7 +351,7 @@ implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coproces
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2611">count</a>(com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2586">count</a>(com.google.protobuf.RpcController&nbsp;controller,
                   org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.CountRequest&nbsp;request,
                   com.google.protobuf.RpcCallback&lt;org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.CountResponse&gt;&nbsp;callback)</pre>
 <dl>
@@ -366,7 +366,7 @@ implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coproces
 <ul class="blockList">
 <li class="blockList">
 <h4>increment</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2617">increment</a>(com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2592">increment</a>(com.google.protobuf.RpcController&nbsp;controller,
                       org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.IncrementCountRequest&nbsp;requet,
                       com.google.protobuf.RpcCallback&lt;org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.IncrementCountResponse&gt;&nbsp;callback)</pre>
 <dl>
@@ -381,7 +381,7 @@ implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coproces
 <ul class="blockList">
 <li class="blockList">
 <h4>hello</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2623">hello</a>(com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2598">hello</a>(com.google.protobuf.RpcController&nbsp;controller,
                   org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.HelloRequest&nbsp;request,
                   com.google.protobuf.RpcCallback&lt;org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.HelloResponse&gt;&nbsp;callback)</pre>
 <dl>
@@ -396,7 +396,7 @@ implements org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coproces
 <ul class="blockListLast">
 <li class="blockList">
 <h4>noop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2629">noop</a>(com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#line.2604">noop</a>(com.google.protobuf.RpcController&nbsp;controller,
                  org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.NoopRequest&nbsp;request,
                  com.google.protobuf.RpcCallback&lt;org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.NoopResponse&gt;&nbsp;callback)</pre>
 <dl>


[28/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index e5c5953..e93e00e 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2017 The Apache Software Foundation</copyright>
     <item>
       <title>File: 2042,
-             Errors: 14019,
+             Errors: 14017,
              Warnings: 0,
              Infos: 0
       </title>
@@ -10919,7 +10919,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  6
+                  5
                 </td>
               </tr>
                           <tr>
@@ -15105,7 +15105,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  41
+                  40
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 4cad23e..55aab73 100644
--- a/coc.html
+++ b/coc.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -380,7 +380,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/cygwin.html
----------------------------------------------------------------------
diff --git a/cygwin.html b/cygwin.html
index 6bd716d..f762af4 100644
--- a/cygwin.html
+++ b/cygwin.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Installing Apache HBase (TM) on Windows using Cygwin</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -679,7 +679,7 @@ Now your <b>HBase </b>server is running, <b>start coding</b> and build that next
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 5c7550b..fbdcd6f 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -445,7 +445,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index da7eb3a..58a87af 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -820,7 +820,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index a4e7de0..b5247e2 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -318,7 +318,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 997e61c..b4e72a8 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -942,7 +942,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 8c12f6d..82cdeb2 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3731,21 +3731,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Sun Sep 17 14:41:52 UTC 2017"</code></td>
+<td class="colLast"><code>"Mon Sep 18 14:41:42 UTC 2017"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"5c12e424e679e738a5b6282ff24348a50ed4ca14"</code></td>
+<td class="colLast"><code>"efb95a17945cc91aa639396f6f6c528b52c71fcb"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"fc0595d126eb797f26d49ce1f5e2d769"</code></td>
+<td class="colLast"><code>"fcb83aae1cc0d99891c52f37883052a5"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 7e91735..15303d5 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -79014,22 +79014,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html#postLogRoll-org.apache.hadoop.fs.Path-">postLogRoll(Path)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region, Region)</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a></dt>
-<dd>
-<div class="block">called after the regions merge.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postMerge(HRegion, HRegion, HRegion, User)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region, Region)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region, Region)</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a></dt>
-<dd>
-<div class="block">This will be called after PONR step as part of regions merge transaction.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postMergeCommit(HRegion, HRegion, HRegion, User)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region, Region)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postMergeRegions-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-">postMergeRegions(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, HRegionInfo[])</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterObserver</a></dt>
 <dd>
 <div class="block">called after merge regions request.</div>
@@ -79224,14 +79208,6 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postRestoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-org.apache.hadoop.hbase.client.TableDescriptor-">postRestoreSnapshot(SnapshotProtos.SnapshotDescription, TableDescriptor)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region)</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a></dt>
-<dd>
-<div class="block">This will be called after the roll back of the regions merge.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#postRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">postRollBackMerge(HRegion, HRegion, User)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html#postRollBackMergeRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postRollBackMergeRegions(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">MergeTableRegionsProcedure</a></dt>
 <dd>
 <div class="block">Action after rollback a merge table regions action.</div>
@@ -80332,22 +80308,6 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preMasterInitialization--">preMasterInitialization()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region)</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a></dt>
-<dd>
-<div class="block">Called before the regions merge.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">preMerge(HRegion, HRegion, User)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region, List&lt;Mutation&gt;)</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a></dt>
-<dd>
-<div class="block">This will be called before PONR step as part of regions merge transaction.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.security.User-">preMergeCommit(HRegion, HRegion, List&lt;Mutation&gt;, User)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region, List&lt;Mutation&gt;)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preMergeRegions-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-">preMergeRegions(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, HRegionInfo[])</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterObserver</a></dt>
 <dd>
 <div class="block">Called before merge regions request.</div>
@@ -80844,14 +80804,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#preRestoreSnapshot-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-org.apache.hadoop.hbase.client.TableDescriptor-">preRestoreSnapshot(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, SnapshotProtos.SnapshotDescription, TableDescriptor)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region)</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a></dt>
-<dd>
-<div class="block">This will be called before the roll back of the regions merge.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preRollBackMerge-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.security.User-">preRollBackMerge(HRegion, HRegion, User)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#preRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;, Region, Region)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt;)</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a></dt>
 <dd>
 <div class="block">This will be called before executing user request to roll a region server WAL.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 964c8f2..17cc8cd 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,10 +167,10 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/class-use/MetaMutationAnnotation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/MetaMutationAnnotation.html b/devapidocs/org/apache/hadoop/hbase/class-use/MetaMutationAnnotation.html
index d1eaa55..b171e46 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/MetaMutationAnnotation.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/MetaMutationAnnotation.html
@@ -92,10 +92,6 @@
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.master">org.apache.hadoop.hbase.master</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
 </tbody>
 </table>
 </li>
@@ -114,15 +110,6 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>
-<div class="block">This will be called before PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preMergeRegionsCommitAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-java.util.List-">preMergeRegionsCommitAction</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                            <a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>[]&nbsp;regionsToMerge,
                            <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>
@@ -154,27 +141,6 @@
 </tbody>
 </table>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/MetaMutationAnnotation.html" title="annotation in org.apache.hadoop.hbase">MetaMutationAnnotation</a> in <a href="../../../../../org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Method parameters in <a href="../../../../../org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> with annotations of type <a href="../../../../../org/apache/hadoop/hbase/MetaMutationAnnotation.html" title="annotation in org.apache.hadoop.hbase">MetaMutationAnnotation</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.security.User-">preMergeCommit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries,
-              <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/client/class-use/Mutation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Mutation.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Mutation.html
index f1a4788..60b8a6c 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Mutation.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Mutation.html
@@ -456,22 +456,13 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>
-<div class="block">This will be called before PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preMergeRegionsCommitAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.HRegionInfo:A-java.util.List-">preMergeRegionsCommitAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                            <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>[]&nbsp;regionsToMerge,
                            <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>
 <div class="block">This will be called before PONR step as part of regions merge transaction.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html#preSplitRegionBeforePONRAction-org.apache.hadoop.hbase.coprocessor.ObserverContext-byte:A-java.util.List-">preSplitRegionBeforePONRAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                               byte[]&nbsp;splitKey,
@@ -1011,20 +1002,13 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast"><span class="typeNameLabel">RegionCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html#preBatchMutate-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-">preBatchMutate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#preMergeCommit-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.security.User-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries,
-              <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MultiRowMutationProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MultiRowMutationProcessor.html#process-long-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.wal.WALEdit-">process</a></span>(long&nbsp;now,
        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
        <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutationsToApply,
        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RowProcessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/RowProcessor.html#process-long-org.apache.hadoop.hbase.regionserver.HRegion-java.util.List-org.apache.hadoop.hbase.wal.WALEdit-">process</a></span>(long&nbsp;now,
        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
@@ -1117,13 +1101,6 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preBatchMutate-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-">preBatchMutate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessorEnvironment</a>&gt;&nbsp;c,
               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>&nbsp;</td>
-</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index dbc02c3..3abf51a 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -547,25 +547,25 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/HBaseAdmin.ReplicationState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">HBaseAdmin.ReplicationState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/HBaseAdmin.ReplicationState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">HBaseAdmin.ReplicationState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
 </ul>
 </li>
 </ul>


[10/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
index 82eb9fd..8eb952a 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CPMasterObserver.html
@@ -71,668 +71,655 @@
 <span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.63"></a>
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.zookeeper.KeeperException;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.junit.After;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.junit.AfterClass;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.junit.BeforeClass;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.junit.Rule;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.junit.Test;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.junit.experimental.categories.Category;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.junit.rules.TestRule;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>@Category(MediumTests.class)<a name="line.93"></a>
-<span class="sourceLineNo">094</span>public class TestNamespaceAuditor {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static Admin ADMIN;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private String prefix = "TestNamespaceAuditor";<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  @BeforeClass<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public static void before() throws Exception {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    Configuration conf = UTIL.getConfiguration();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    conf.setStrings(<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      RegionServerObserver.class);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    UTIL.startMiniCluster(1, 1);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    waitForQuotaInitialize(UTIL);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    ADMIN = UTIL.getAdmin();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  @AfterClass<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public static void tearDown() throws Exception {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    UTIL.shutdownMiniCluster();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @After<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public void cleanup() throws Exception, KeeperException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      ADMIN.disableTable(table.getTableName());<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      deleteTable(table.getTableName());<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      if (ns.getName().startsWith(prefix)) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  @Test<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void testTableOperations() throws Exception {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    String nsp = prefix + "_np2";<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    NamespaceDescriptor nspDesc =<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.142"></a>
-<span class="sourceLineNo">143</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    ADMIN.createNamespace(nspDesc);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    HTableDescriptor tableDescOne =<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    tableDescOne.addFamily(fam1);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HTableDescriptor tableDescTwo =<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    tableDescTwo.addFamily(fam1);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    HTableDescriptor tableDescThree =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    tableDescThree.addFamily(fam1);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    ADMIN.createTable(tableDescOne);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    boolean constraintViolated = false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    } catch (Exception exp) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      assertTrue(exp instanceof IOException);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      constraintViolated = true;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        constraintViolated);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    assertNotNull(nspState);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    constraintViolated = false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      ADMIN.createTable(tableDescThree);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    } catch (Exception exp) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      assertTrue(exp instanceof IOException);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      constraintViolated = true;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    } finally {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        constraintViolated);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  @Test<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void testValidQuotas() throws Exception {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    boolean exceptionCaught = false;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    NamespaceDescriptor nspDesc =<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.192"></a>
-<span class="sourceLineNo">193</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.193"></a>
-<span class="sourceLineNo">194</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      ADMIN.createNamespace(nspDesc);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    } catch (Exception exp) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      LOG.warn(exp);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      exceptionCaught = true;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } finally {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      assertTrue(exceptionCaught);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    nspDesc =<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      ADMIN.createNamespace(nspDesc);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } catch (Exception exp) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      LOG.warn(exp);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      exceptionCaught = true;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    } finally {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      assertTrue(exceptionCaught);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    nspDesc =<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      ADMIN.createNamespace(nspDesc);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    } catch (Exception exp) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      LOG.warn(exp);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      exceptionCaught = true;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    } finally {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      assertTrue(exceptionCaught);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    nspDesc =<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.232"></a>
-<span class="sourceLineNo">233</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    try {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      ADMIN.createNamespace(nspDesc);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    } catch (Exception exp) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      LOG.warn(exp);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      exceptionCaught = true;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      assertTrue(exceptionCaught);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Test<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public void testDeleteTable() throws Exception {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    String namespace = prefix + "_dummy";<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    NamespaceDescriptor nspDesc =<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        NamespaceDescriptor.create(namespace)<a name="line.249"></a>
-<span class="sourceLineNo">250</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    ADMIN.createNamespace(nspDesc);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    HTableDescriptor tableDescOne =<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    tableDescOne.addFamily(fam1);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    HTableDescriptor tableDescTwo =<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    tableDescTwo.addFamily(fam1);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ADMIN.createTable(tableDescOne);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    deleteTable(tableDescOne.getTableName());<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    deleteTable(tableDescTwo.getTableName());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    ADMIN.deleteNamespace(namespace);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    stateInfo = getNamespaceState(namespace);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.zookeeper.KeeperException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.junit.After;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.junit.AfterClass;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.junit.BeforeClass;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.junit.Rule;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.junit.Test;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.junit.experimental.categories.Category;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.junit.rules.TestRule;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>@Category(MediumTests.class)<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public class TestNamespaceAuditor {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static Admin ADMIN;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private String prefix = "TestNamespaceAuditor";<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @BeforeClass<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public static void before() throws Exception {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    Configuration conf = UTIL.getConfiguration();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    conf.setStrings(<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      RegionServerObserver.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    UTIL.startMiniCluster(1, 1);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    waitForQuotaInitialize(UTIL);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ADMIN = UTIL.getAdmin();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @AfterClass<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static void tearDown() throws Exception {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    UTIL.shutdownMiniCluster();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  @After<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public void cleanup() throws Exception, KeeperException {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      ADMIN.disableTable(table.getTableName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      deleteTable(table.getTableName());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      if (ns.getName().startsWith(prefix)) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  @Test<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public void testTableOperations() throws Exception {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    String nsp = prefix + "_np2";<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    NamespaceDescriptor nspDesc =<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.139"></a>
+<span class="sourceLineNo">140</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    ADMIN.createNamespace(nspDesc);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    HTableDescriptor tableDescOne =<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    tableDescOne.addFamily(fam1);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    HTableDescriptor tableDescTwo =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    tableDescTwo.addFamily(fam1);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    HTableDescriptor tableDescThree =<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    tableDescThree.addFamily(fam1);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    ADMIN.createTable(tableDescOne);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    boolean constraintViolated = false;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    try {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    } catch (Exception exp) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      assertTrue(exp instanceof IOException);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      constraintViolated = true;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    } finally {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        constraintViolated);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    assertNotNull(nspState);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    constraintViolated = false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      ADMIN.createTable(tableDescThree);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (Exception exp) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      assertTrue(exp instanceof IOException);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      constraintViolated = true;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } finally {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        constraintViolated);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  @Test<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public void testValidQuotas() throws Exception {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    boolean exceptionCaught = false;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    NamespaceDescriptor nspDesc =<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.189"></a>
+<span class="sourceLineNo">190</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      ADMIN.createNamespace(nspDesc);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    } catch (Exception exp) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      LOG.warn(exp);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      exceptionCaught = true;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      assertTrue(exceptionCaught);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    nspDesc =<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.203"></a>
+<span class="sourceLineNo">204</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    try {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ADMIN.createNamespace(nspDesc);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    } catch (Exception exp) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      LOG.warn(exp);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      exceptionCaught = true;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    } finally {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      assertTrue(exceptionCaught);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    nspDesc =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    try {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      ADMIN.createNamespace(nspDesc);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    } catch (Exception exp) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      LOG.warn(exp);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      exceptionCaught = true;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    } finally {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      assertTrue(exceptionCaught);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    nspDesc =<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.228"></a>
+<span class="sourceLineNo">229</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    try {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      ADMIN.createNamespace(nspDesc);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    } catch (Exception exp) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      LOG.warn(exp);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      exceptionCaught = true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } finally {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      assertTrue(exceptionCaught);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  @Test<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public void testDeleteTable() throws Exception {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    String namespace = prefix + "_dummy";<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    NamespaceDescriptor nspDesc =<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        NamespaceDescriptor.create(namespace)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.247"></a>
+<span class="sourceLineNo">248</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    ADMIN.createNamespace(nspDesc);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    HTableDescriptor tableDescOne =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    tableDescOne.addFamily(fam1);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    HTableDescriptor tableDescTwo =<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    tableDescTwo.addFamily(fam1);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    ADMIN.createTable(tableDescOne);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    deleteTable(tableDescOne.getTableName());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    deleteTable(tableDescTwo.getTableName());<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    ADMIN.deleteNamespace(namespace);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    stateInfo = getNamespaceState(namespace);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    private volatile boolean shouldFailMerge = false;<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    private volatile boolean shouldFailMerge = false;<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void failMerge(boolean fail) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      shouldFailMerge = fail;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    private boolean triggered = false;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      while (!triggered) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        wait();<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    public synchronized void preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        Region regionA, Region regionB) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      triggered = true;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      notifyAll();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (shouldFailMerge) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        throw new IOException("fail merge");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    private volatile boolean shouldFailMerge = false;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    public void failMerge(boolean fail) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      shouldFailMerge = fail;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public synchronized void preMergeRegionsAction(<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      notifyAll();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      if (shouldFailMerge) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        throw new IOException("fail merge");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testRegionMerge() throws Exception {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    String nsp1 = prefix + "_regiontest";<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    final int initialRegions = 3;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    NamespaceDescriptor nspDesc =<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        NamespaceDescriptor.create(nsp1)<a name="line.332"></a>
-<span class="sourceLineNo">333</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.333"></a>
-<span class="sourceLineNo">334</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    ADMIN.createNamespace(nspDesc);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    ADMIN.flush(tableTwo);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    assertEquals(initialRegions, hris.size());<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    Collections.sort(hris);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      false);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    f.get(10, TimeUnit.SECONDS);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    Collections.sort(hris);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // Not much we can do here until we have split return a Future.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    Threads.sleep(5000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(initialRegions, hris.size());<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    Collections.sort(hris);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>    // Fail region merge through Coprocessor hook<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    masterObserver.failMerge(true);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    f = ADMIN.mergeRegionsAsync(<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      false);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    try {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      f.get(10, TimeUnit.SECONDS);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      fail("Merge was supposed to fail!");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } catch (ExecutionException ee) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      // Expected.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assertEquals(initialRegions, hris.size());<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    Collections.sort(hris);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    // verify that we cannot split<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    Thread.sleep(2000);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * HBASE-13394<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Test<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    NamespaceDescriptor nspDesc =<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        NamespaceDescriptor.create(nsp1)<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    ADMIN.createNamespace(nspDesc);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    try {<a name="line.410"></a>
+<span class="sourceLineNo">283</span>    public void failMerge(boolean fail) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      shouldFailMerge = fail;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    private boolean triggered = false;<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      while (!triggered) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        wait();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    private volatile boolean shouldFailMerge = false;<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>    public void failMerge(boolean fail) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      shouldFailMerge = fail;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>    @Override<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    public synchronized void preMergeRegionsAction(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      notifyAll();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (shouldFailMerge) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        throw new IOException("fail merge");<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  @Test<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  public void testRegionMerge() throws Exception {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    String nsp1 = prefix + "_regiontest";<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    final int initialRegions = 3;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    NamespaceDescriptor nspDesc =<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        NamespaceDescriptor.create(nsp1)<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    ADMIN.createNamespace(nspDesc);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    ADMIN.flush(tableTwo);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    assertEquals(initialRegions, hris.size());<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    Collections.sort(hris);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      false);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    f.get(10, TimeUnit.SECONDS);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Collections.sort(hris);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // Not much we can do here until we have split return a Future.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    Threads.sleep(5000);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    assertEquals(initialRegions, hris.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    Collections.sort(hris);<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>    // Fail region merge through Coprocessor hook<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    masterObserver.failMerge(true);<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>    f = ADMIN.mergeRegionsAsync(<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      false);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    try {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      f.get(10, TimeUnit.SECONDS);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      fail("Merge was supposed to fail!");<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    } catch (ExecutionException ee) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      // Expected.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    assertEquals(initialRegions, hris.size());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    Collections.sort(hris);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    // verify that we cannot split<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Thread.sleep(2000);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * HBASE-13394<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   */<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  @Test<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    NamespaceDescriptor nspDesc =<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        NamespaceDescriptor.create(nsp1)<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    ADMIN.createNamespace(nspDesc);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    try {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        ADMIN.createTable(tableDescOne);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } catch (Exception exp) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        LOG.error(exp);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.410"></a>
 <span class="sourceLineNo">411</span>      try {<a name="line.411"></a>
 <span class="sourceLineNo">412</span>        ADMIN.createTable(tableDescOne);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      } catch (Exception exp) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        LOG.error(exp);<a name="line.415"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        LOG.error(e);<a name="line.415"></a>
 <span class="sourceLineNo">416</span>      }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      try {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        ADMIN.createTable(tableDescOne);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } catch (Exception e) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        LOG.error(e);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      nstate = getNamespaceState(nsp1);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    } finally {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ADMIN.disableTable(tableOne);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        deleteTable(tableOne);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      ADMIN.deleteNamespace(nsp1);<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><a name="line.443"></a>
-<span class="sourceLineNo">444</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return getQuotaManager().getState(namespace);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    String skey = Bytes.toString(startKey);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    int key;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    if (StringUtils.isBlank(skey)) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    } else {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return Bytes.toBytes("" + key);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public static class CustomObserver implements RegionObserver {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    volatile CountDownLatch postCompact;<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    @Override<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      postCompact.countDown();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    @Override<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      postCompact = new CountDownLatch(1);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  @Test<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public void testStatePreserve() throws Exception {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    ADMIN.createNamespace(nspDesc);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    tableDescOne.addFamily(fam1);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    tableDescTwo.addFamily(fam1);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    tableDescThree.addFamily(fam1);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    ADMIN.disableTable(tableThree);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    deleteTable(tableThree);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // wait for chore to complete<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      @Override<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      public boolean evaluate() throws Exception {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<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>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    restartMaster();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        .getTables().size(), after.getTables().size());<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      @Override<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      public boolean evaluate() throws Exception {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        if (master == null) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          return false;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<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>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  private void restartMaster() throws Exception {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    UTIL.getHBaseCluster().startMaster();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    waitForQuotaInitialize(UTIL);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  private NamespaceAuditor getQuotaManager() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public static class MasterSyncObserver implements MasterObserver {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.539"></a>
+<span class="sourceLineNo">417</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      nstate = getNamespaceState(nsp1);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.419"></a>
+<span class="sourceLineNo">420</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    } finally {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        ADMIN.disableTable(tableOne);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        deleteTable(tableOne);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      ADMIN.deleteNamespace(nsp1);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      IOException {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return getQuotaManager().getState(namespace);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    String skey = Bytes.toString(startKey);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    int key;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (StringUtils.isBlank(skey)) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return Bytes.toBytes("" + key);<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 static class CustomObserver implements RegionObserver {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    volatile CountDownLatch postCompact;<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    @Override<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      postCompact.countDown();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    @Override<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      postCompact = new CountDownLatch(1);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  }<a name=

<TRUNCATED>

[08/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
index 82eb9fd..8eb952a 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.CustomObserver.html
@@ -71,668 +71,655 @@
 <span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.63"></a>
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.zookeeper.KeeperException;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.junit.After;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.junit.AfterClass;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.junit.BeforeClass;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.junit.Rule;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.junit.Test;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.junit.experimental.categories.Category;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.junit.rules.TestRule;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>@Category(MediumTests.class)<a name="line.93"></a>
-<span class="sourceLineNo">094</span>public class TestNamespaceAuditor {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static Admin ADMIN;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private String prefix = "TestNamespaceAuditor";<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  @BeforeClass<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public static void before() throws Exception {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    Configuration conf = UTIL.getConfiguration();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    conf.setStrings(<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      RegionServerObserver.class);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    UTIL.startMiniCluster(1, 1);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    waitForQuotaInitialize(UTIL);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    ADMIN = UTIL.getAdmin();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  @AfterClass<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public static void tearDown() throws Exception {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    UTIL.shutdownMiniCluster();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @After<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public void cleanup() throws Exception, KeeperException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      ADMIN.disableTable(table.getTableName());<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      deleteTable(table.getTableName());<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      if (ns.getName().startsWith(prefix)) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  @Test<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void testTableOperations() throws Exception {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    String nsp = prefix + "_np2";<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    NamespaceDescriptor nspDesc =<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.142"></a>
-<span class="sourceLineNo">143</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    ADMIN.createNamespace(nspDesc);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    HTableDescriptor tableDescOne =<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    tableDescOne.addFamily(fam1);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HTableDescriptor tableDescTwo =<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    tableDescTwo.addFamily(fam1);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    HTableDescriptor tableDescThree =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    tableDescThree.addFamily(fam1);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    ADMIN.createTable(tableDescOne);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    boolean constraintViolated = false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    } catch (Exception exp) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      assertTrue(exp instanceof IOException);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      constraintViolated = true;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        constraintViolated);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    assertNotNull(nspState);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    constraintViolated = false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      ADMIN.createTable(tableDescThree);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    } catch (Exception exp) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      assertTrue(exp instanceof IOException);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      constraintViolated = true;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    } finally {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        constraintViolated);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  @Test<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void testValidQuotas() throws Exception {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    boolean exceptionCaught = false;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    NamespaceDescriptor nspDesc =<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.192"></a>
-<span class="sourceLineNo">193</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.193"></a>
-<span class="sourceLineNo">194</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      ADMIN.createNamespace(nspDesc);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    } catch (Exception exp) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      LOG.warn(exp);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      exceptionCaught = true;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } finally {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      assertTrue(exceptionCaught);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    nspDesc =<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      ADMIN.createNamespace(nspDesc);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } catch (Exception exp) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      LOG.warn(exp);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      exceptionCaught = true;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    } finally {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      assertTrue(exceptionCaught);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    nspDesc =<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      ADMIN.createNamespace(nspDesc);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    } catch (Exception exp) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      LOG.warn(exp);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      exceptionCaught = true;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    } finally {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      assertTrue(exceptionCaught);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    nspDesc =<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.232"></a>
-<span class="sourceLineNo">233</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    try {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      ADMIN.createNamespace(nspDesc);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    } catch (Exception exp) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      LOG.warn(exp);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      exceptionCaught = true;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      assertTrue(exceptionCaught);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Test<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public void testDeleteTable() throws Exception {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    String namespace = prefix + "_dummy";<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    NamespaceDescriptor nspDesc =<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        NamespaceDescriptor.create(namespace)<a name="line.249"></a>
-<span class="sourceLineNo">250</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    ADMIN.createNamespace(nspDesc);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    HTableDescriptor tableDescOne =<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    tableDescOne.addFamily(fam1);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    HTableDescriptor tableDescTwo =<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    tableDescTwo.addFamily(fam1);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ADMIN.createTable(tableDescOne);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    deleteTable(tableDescOne.getTableName());<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    deleteTable(tableDescTwo.getTableName());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    ADMIN.deleteNamespace(namespace);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    stateInfo = getNamespaceState(namespace);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.zookeeper.KeeperException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.junit.After;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.junit.AfterClass;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.junit.BeforeClass;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.junit.Rule;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.junit.Test;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.junit.experimental.categories.Category;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.junit.rules.TestRule;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>@Category(MediumTests.class)<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public class TestNamespaceAuditor {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static Admin ADMIN;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private String prefix = "TestNamespaceAuditor";<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @BeforeClass<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public static void before() throws Exception {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    Configuration conf = UTIL.getConfiguration();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    conf.setStrings(<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      RegionServerObserver.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    UTIL.startMiniCluster(1, 1);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    waitForQuotaInitialize(UTIL);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ADMIN = UTIL.getAdmin();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @AfterClass<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static void tearDown() throws Exception {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    UTIL.shutdownMiniCluster();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  @After<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public void cleanup() throws Exception, KeeperException {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      ADMIN.disableTable(table.getTableName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      deleteTable(table.getTableName());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      if (ns.getName().startsWith(prefix)) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  @Test<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public void testTableOperations() throws Exception {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    String nsp = prefix + "_np2";<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    NamespaceDescriptor nspDesc =<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.139"></a>
+<span class="sourceLineNo">140</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    ADMIN.createNamespace(nspDesc);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    HTableDescriptor tableDescOne =<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    tableDescOne.addFamily(fam1);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    HTableDescriptor tableDescTwo =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    tableDescTwo.addFamily(fam1);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    HTableDescriptor tableDescThree =<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    tableDescThree.addFamily(fam1);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    ADMIN.createTable(tableDescOne);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    boolean constraintViolated = false;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    try {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    } catch (Exception exp) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      assertTrue(exp instanceof IOException);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      constraintViolated = true;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    } finally {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        constraintViolated);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    assertNotNull(nspState);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    constraintViolated = false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      ADMIN.createTable(tableDescThree);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (Exception exp) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      assertTrue(exp instanceof IOException);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      constraintViolated = true;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } finally {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        constraintViolated);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  @Test<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public void testValidQuotas() throws Exception {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    boolean exceptionCaught = false;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    NamespaceDescriptor nspDesc =<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.189"></a>
+<span class="sourceLineNo">190</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      ADMIN.createNamespace(nspDesc);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    } catch (Exception exp) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      LOG.warn(exp);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      exceptionCaught = true;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      assertTrue(exceptionCaught);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    nspDesc =<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.203"></a>
+<span class="sourceLineNo">204</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    try {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ADMIN.createNamespace(nspDesc);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    } catch (Exception exp) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      LOG.warn(exp);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      exceptionCaught = true;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    } finally {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      assertTrue(exceptionCaught);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    nspDesc =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    try {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      ADMIN.createNamespace(nspDesc);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    } catch (Exception exp) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      LOG.warn(exp);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      exceptionCaught = true;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    } finally {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      assertTrue(exceptionCaught);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    nspDesc =<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.228"></a>
+<span class="sourceLineNo">229</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    try {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      ADMIN.createNamespace(nspDesc);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    } catch (Exception exp) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      LOG.warn(exp);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      exceptionCaught = true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } finally {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      assertTrue(exceptionCaught);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  @Test<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public void testDeleteTable() throws Exception {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    String namespace = prefix + "_dummy";<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    NamespaceDescriptor nspDesc =<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        NamespaceDescriptor.create(namespace)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.247"></a>
+<span class="sourceLineNo">248</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    ADMIN.createNamespace(nspDesc);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    HTableDescriptor tableDescOne =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    tableDescOne.addFamily(fam1);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    HTableDescriptor tableDescTwo =<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    tableDescTwo.addFamily(fam1);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    ADMIN.createTable(tableDescOne);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    deleteTable(tableDescOne.getTableName());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    deleteTable(tableDescTwo.getTableName());<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    ADMIN.deleteNamespace(namespace);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    stateInfo = getNamespaceState(namespace);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    private volatile boolean shouldFailMerge = false;<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    private volatile boolean shouldFailMerge = false;<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void failMerge(boolean fail) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      shouldFailMerge = fail;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    private boolean triggered = false;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      while (!triggered) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        wait();<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    public synchronized void preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        Region regionA, Region regionB) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      triggered = true;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      notifyAll();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (shouldFailMerge) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        throw new IOException("fail merge");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    private volatile boolean shouldFailMerge = false;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    public void failMerge(boolean fail) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      shouldFailMerge = fail;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public synchronized void preMergeRegionsAction(<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      notifyAll();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      if (shouldFailMerge) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        throw new IOException("fail merge");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testRegionMerge() throws Exception {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    String nsp1 = prefix + "_regiontest";<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    final int initialRegions = 3;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    NamespaceDescriptor nspDesc =<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        NamespaceDescriptor.create(nsp1)<a name="line.332"></a>
-<span class="sourceLineNo">333</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.333"></a>
-<span class="sourceLineNo">334</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    ADMIN.createNamespace(nspDesc);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    ADMIN.flush(tableTwo);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    assertEquals(initialRegions, hris.size());<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    Collections.sort(hris);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      false);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    f.get(10, TimeUnit.SECONDS);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    Collections.sort(hris);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // Not much we can do here until we have split return a Future.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    Threads.sleep(5000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(initialRegions, hris.size());<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    Collections.sort(hris);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>    // Fail region merge through Coprocessor hook<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    masterObserver.failMerge(true);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    f = ADMIN.mergeRegionsAsync(<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      false);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    try {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      f.get(10, TimeUnit.SECONDS);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      fail("Merge was supposed to fail!");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } catch (ExecutionException ee) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      // Expected.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assertEquals(initialRegions, hris.size());<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    Collections.sort(hris);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    // verify that we cannot split<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    Thread.sleep(2000);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * HBASE-13394<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Test<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    NamespaceDescriptor nspDesc =<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        NamespaceDescriptor.create(nsp1)<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    ADMIN.createNamespace(nspDesc);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    try {<a name="line.410"></a>
+<span class="sourceLineNo">283</span>    public void failMerge(boolean fail) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      shouldFailMerge = fail;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    private boolean triggered = false;<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      while (!triggered) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        wait();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    private volatile boolean shouldFailMerge = false;<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>    public void failMerge(boolean fail) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      shouldFailMerge = fail;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>    @Override<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    public synchronized void preMergeRegionsAction(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      notifyAll();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (shouldFailMerge) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        throw new IOException("fail merge");<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  @Test<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  public void testRegionMerge() throws Exception {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    String nsp1 = prefix + "_regiontest";<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    final int initialRegions = 3;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    NamespaceDescriptor nspDesc =<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        NamespaceDescriptor.create(nsp1)<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    ADMIN.createNamespace(nspDesc);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    ADMIN.flush(tableTwo);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    assertEquals(initialRegions, hris.size());<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    Collections.sort(hris);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      false);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    f.get(10, TimeUnit.SECONDS);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Collections.sort(hris);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // Not much we can do here until we have split return a Future.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    Threads.sleep(5000);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    assertEquals(initialRegions, hris.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    Collections.sort(hris);<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>    // Fail region merge through Coprocessor hook<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    masterObserver.failMerge(true);<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>    f = ADMIN.mergeRegionsAsync(<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      false);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    try {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      f.get(10, TimeUnit.SECONDS);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      fail("Merge was supposed to fail!");<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    } catch (ExecutionException ee) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      // Expected.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    assertEquals(initialRegions, hris.size());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    Collections.sort(hris);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    // verify that we cannot split<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Thread.sleep(2000);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * HBASE-13394<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   */<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  @Test<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    NamespaceDescriptor nspDesc =<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        NamespaceDescriptor.create(nsp1)<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    ADMIN.createNamespace(nspDesc);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    try {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        ADMIN.createTable(tableDescOne);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } catch (Exception exp) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        LOG.error(exp);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.410"></a>
 <span class="sourceLineNo">411</span>      try {<a name="line.411"></a>
 <span class="sourceLineNo">412</span>        ADMIN.createTable(tableDescOne);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      } catch (Exception exp) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        LOG.error(exp);<a name="line.415"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        LOG.error(e);<a name="line.415"></a>
 <span class="sourceLineNo">416</span>      }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      try {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        ADMIN.createTable(tableDescOne);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } catch (Exception e) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        LOG.error(e);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      nstate = getNamespaceState(nsp1);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    } finally {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ADMIN.disableTable(tableOne);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        deleteTable(tableOne);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      ADMIN.deleteNamespace(nsp1);<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><a name="line.443"></a>
-<span class="sourceLineNo">444</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return getQuotaManager().getState(namespace);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    String skey = Bytes.toString(startKey);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    int key;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    if (StringUtils.isBlank(skey)) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    } else {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return Bytes.toBytes("" + key);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public static class CustomObserver implements RegionObserver {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    volatile CountDownLatch postCompact;<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    @Override<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      postCompact.countDown();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    @Override<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      postCompact = new CountDownLatch(1);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  @Test<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public void testStatePreserve() throws Exception {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    ADMIN.createNamespace(nspDesc);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    tableDescOne.addFamily(fam1);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    tableDescTwo.addFamily(fam1);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    tableDescThree.addFamily(fam1);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    ADMIN.disableTable(tableThree);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    deleteTable(tableThree);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // wait for chore to complete<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      @Override<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      public boolean evaluate() throws Exception {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<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>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    restartMaster();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        .getTables().size(), after.getTables().size());<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      @Override<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      public boolean evaluate() throws Exception {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        if (master == null) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          return false;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<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>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  private void restartMaster() throws Exception {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    UTIL.getHBaseCluster().startMaster();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    waitForQuotaInitialize(UTIL);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  private NamespaceAuditor getQuotaManager() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public static class MasterSyncObserver implements MasterObserver {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.539"></a>
+<span class="sourceLineNo">417</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      nstate = getNamespaceState(nsp1);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.419"></a>
+<span class="sourceLineNo">420</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    } finally {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        ADMIN.disableTable(tableOne);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        deleteTable(tableOne);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      ADMIN.deleteNamespace(nsp1);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      IOException {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return getQuotaManager().getState(namespace);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    String skey = Bytes.toString(startKey);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    int key;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (StringUtils.isBlank(skey)) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return Bytes.toBytes("" + key);<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 static class CustomObserver implements RegionObserver {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    volatile CountDownLatch postCompact;<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    @Override<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      postCompact.countDown();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    @Override<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      postCompact = new CountDownLatch(1);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  }<a name="line.460"

<TRUNCATED>

[16/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html
index d3c7efb..92c2266 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html
@@ -2583,206 +2583,179 @@
 <span class="sourceLineNo">2575</span>  }<a name="line.2575"></a>
 <span class="sourceLineNo">2576</span><a name="line.2576"></a>
 <span class="sourceLineNo">2577</span>  @Override<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  public void preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, Region regionA,<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>      Region regionB) throws IOException {<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    requirePermission(getActiveUser(ctx), "mergeRegions", regionA.getTableDescriptor().getTableName(),<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>        null, null, Action.ADMIN);<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>  }<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span><a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>  @Override<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>  public void postMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; c, Region regionA,<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>      Region regionB, Region mergedRegion) throws IOException { }<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span><a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>  @Override<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  public void preMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>      Region regionA, Region regionB, List&lt;Mutation&gt; metaEntries) throws IOException { }<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span><a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>  @Override<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>  public void postMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>      Region regionA, Region regionB, Region mergedRegion) throws IOException { }<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span><a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>  @Override<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>  public void preRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      Region regionA, Region regionB) throws IOException { }<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span><a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>  @Override<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  public void postRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      Region regionA, Region regionB) throws IOException { }<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span><a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>  @Override<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>  public void preRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      throws IOException {<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>    requirePermission(getActiveUser(ctx), "preRollLogWriterRequest", Permission.Action.ADMIN);<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>  }<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span><a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>  @Override<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>  public void postRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>      throws IOException { }<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span><a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>  @Override<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>      final String userName, final Quotas quotas) throws IOException {<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>    requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>  }<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span><a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>  @Override<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>      final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>    requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>  }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span><a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  @Override<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>    requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>  }<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span><a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>  @Override<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>  public void preSetTableQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>    requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>  }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span><a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>  @Override<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>  public void preSetNamespaceQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      final String namespace, final Quotas quotas) throws IOException {<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>    requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>  }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span><a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>  @Override<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>    return endpoint;<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  }<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span><a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  @Override<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>  public void preReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>    requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>  }<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span><a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>  @Override<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>  public void postReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>  }<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>  @Override<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>  public void  preClearCompactionQueues(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>          throws IOException {<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>    requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>  }<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>  @Override<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>  public void preMoveServersAndTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>      Set&lt;Address&gt; servers, Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>    requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span>  }<a name="line.2671"></a>
-<span class="sourceLineNo">2672</span><a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>  @Override<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span>  public void preMoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>                             Set&lt;Address&gt; servers, String targetGroup) throws IOException {<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>  }<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span><a name="line.2678"></a>
-<span class="sourceLineNo">2679</span>  @Override<a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>  public void preMoveTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>                            Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>    requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>  }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>  @Override<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>  public void preAddRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span>                            String name) throws IOException {<a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>  }<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span><a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>  @Override<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>  public void preRemoveRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>                               String name) throws IOException {<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>  }<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span><a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>  @Override<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>  public void preBalanceRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>                                String groupName) throws IOException {<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>    requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>  }<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span><a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>  @Override<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>  }<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span><a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>  @Override<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>      String peerId) throws IOException {<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>  }<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span><a name="line.2714"></a>
-<span class="sourceLineNo">2715</span>  @Override<a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>      String peerId) throws IOException {<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>  }<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span><a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @Override<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>      String peerId) throws IOException {<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>  }<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span><a name="line.2726"></a>
-<span class="sourceLineNo">2727</span>  @Override<a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>      String peerId) throws IOException {<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span>  }<a name="line.2731"></a>
-<span class="sourceLineNo">2732</span><a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  @Override<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>  public void preUpdateReplicationPeerConfig(<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  }<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span><a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>  @Override<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span>      String regex) throws IOException {<a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>  }<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span><a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>  @Override<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      TableName tableName, HRegionInfo[] regionInfos, LockType type, String description)<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>  throws IOException {<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>    String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>  }<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span><a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>  @Override<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>    checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>  }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span><a name="line.2762"></a>
-<span class="sourceLineNo">2763</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>      TableName tableName, HRegionInfo[] regionInfos, String reason)<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>  throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>          Action.ADMIN, Action.CREATE);<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>    } else {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>    }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>  }<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>}<a name="line.2777"></a>
+<span class="sourceLineNo">2578</span>  public void preRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2578"></a>
+<span class="sourceLineNo">2579</span>      throws IOException {<a name="line.2579"></a>
+<span class="sourceLineNo">2580</span>    requirePermission(getActiveUser(ctx), "preRollLogWriterRequest", Permission.Action.ADMIN);<a name="line.2580"></a>
+<span class="sourceLineNo">2581</span>  }<a name="line.2581"></a>
+<span class="sourceLineNo">2582</span><a name="line.2582"></a>
+<span class="sourceLineNo">2583</span>  @Override<a name="line.2583"></a>
+<span class="sourceLineNo">2584</span>  public void postRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2584"></a>
+<span class="sourceLineNo">2585</span>      throws IOException { }<a name="line.2585"></a>
+<span class="sourceLineNo">2586</span><a name="line.2586"></a>
+<span class="sourceLineNo">2587</span>  @Override<a name="line.2587"></a>
+<span class="sourceLineNo">2588</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2588"></a>
+<span class="sourceLineNo">2589</span>      final String userName, final Quotas quotas) throws IOException {<a name="line.2589"></a>
+<span class="sourceLineNo">2590</span>    requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2590"></a>
+<span class="sourceLineNo">2591</span>  }<a name="line.2591"></a>
+<span class="sourceLineNo">2592</span><a name="line.2592"></a>
+<span class="sourceLineNo">2593</span>  @Override<a name="line.2593"></a>
+<span class="sourceLineNo">2594</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2594"></a>
+<span class="sourceLineNo">2595</span>      final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2595"></a>
+<span class="sourceLineNo">2596</span>    requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2596"></a>
+<span class="sourceLineNo">2597</span>  }<a name="line.2597"></a>
+<span class="sourceLineNo">2598</span><a name="line.2598"></a>
+<span class="sourceLineNo">2599</span>  @Override<a name="line.2599"></a>
+<span class="sourceLineNo">2600</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2600"></a>
+<span class="sourceLineNo">2601</span>      final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2601"></a>
+<span class="sourceLineNo">2602</span>    requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2602"></a>
+<span class="sourceLineNo">2603</span>  }<a name="line.2603"></a>
+<span class="sourceLineNo">2604</span><a name="line.2604"></a>
+<span class="sourceLineNo">2605</span>  @Override<a name="line.2605"></a>
+<span class="sourceLineNo">2606</span>  public void preSetTableQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2606"></a>
+<span class="sourceLineNo">2607</span>      final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2607"></a>
+<span class="sourceLineNo">2608</span>    requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2608"></a>
+<span class="sourceLineNo">2609</span>  }<a name="line.2609"></a>
+<span class="sourceLineNo">2610</span><a name="line.2610"></a>
+<span class="sourceLineNo">2611</span>  @Override<a name="line.2611"></a>
+<span class="sourceLineNo">2612</span>  public void preSetNamespaceQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2612"></a>
+<span class="sourceLineNo">2613</span>      final String namespace, final Quotas quotas) throws IOException {<a name="line.2613"></a>
+<span class="sourceLineNo">2614</span>    requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2614"></a>
+<span class="sourceLineNo">2615</span>  }<a name="line.2615"></a>
+<span class="sourceLineNo">2616</span><a name="line.2616"></a>
+<span class="sourceLineNo">2617</span>  @Override<a name="line.2617"></a>
+<span class="sourceLineNo">2618</span>  public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2618"></a>
+<span class="sourceLineNo">2619</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.2619"></a>
+<span class="sourceLineNo">2620</span>    return endpoint;<a name="line.2620"></a>
+<span class="sourceLineNo">2621</span>  }<a name="line.2621"></a>
+<span class="sourceLineNo">2622</span><a name="line.2622"></a>
+<span class="sourceLineNo">2623</span>  @Override<a name="line.2623"></a>
+<span class="sourceLineNo">2624</span>  public void preReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2624"></a>
+<span class="sourceLineNo">2625</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2625"></a>
+<span class="sourceLineNo">2626</span>    requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2626"></a>
+<span class="sourceLineNo">2627</span>  }<a name="line.2627"></a>
+<span class="sourceLineNo">2628</span><a name="line.2628"></a>
+<span class="sourceLineNo">2629</span>  @Override<a name="line.2629"></a>
+<span class="sourceLineNo">2630</span>  public void postReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2630"></a>
+<span class="sourceLineNo">2631</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2631"></a>
+<span class="sourceLineNo">2632</span>  }<a name="line.2632"></a>
+<span class="sourceLineNo">2633</span><a name="line.2633"></a>
+<span class="sourceLineNo">2634</span>  @Override<a name="line.2634"></a>
+<span class="sourceLineNo">2635</span>  public void  preClearCompactionQueues(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2635"></a>
+<span class="sourceLineNo">2636</span>          throws IOException {<a name="line.2636"></a>
+<span class="sourceLineNo">2637</span>    requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2637"></a>
+<span class="sourceLineNo">2638</span>  }<a name="line.2638"></a>
+<span class="sourceLineNo">2639</span><a name="line.2639"></a>
+<span class="sourceLineNo">2640</span>  @Override<a name="line.2640"></a>
+<span class="sourceLineNo">2641</span>  public void preMoveServersAndTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2641"></a>
+<span class="sourceLineNo">2642</span>      Set&lt;Address&gt; servers, Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2642"></a>
+<span class="sourceLineNo">2643</span>    requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2643"></a>
+<span class="sourceLineNo">2644</span>  }<a name="line.2644"></a>
+<span class="sourceLineNo">2645</span><a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>  @Override<a name="line.2646"></a>
+<span class="sourceLineNo">2647</span>  public void preMoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2647"></a>
+<span class="sourceLineNo">2648</span>                             Set&lt;Address&gt; servers, String targetGroup) throws IOException {<a name="line.2648"></a>
+<span class="sourceLineNo">2649</span>    requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2649"></a>
+<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
+<span class="sourceLineNo">2651</span><a name="line.2651"></a>
+<span class="sourceLineNo">2652</span>  @Override<a name="line.2652"></a>
+<span class="sourceLineNo">2653</span>  public void preMoveTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2653"></a>
+<span class="sourceLineNo">2654</span>                            Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2654"></a>
+<span class="sourceLineNo">2655</span>    requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2655"></a>
+<span class="sourceLineNo">2656</span>  }<a name="line.2656"></a>
+<span class="sourceLineNo">2657</span><a name="line.2657"></a>
+<span class="sourceLineNo">2658</span>  @Override<a name="line.2658"></a>
+<span class="sourceLineNo">2659</span>  public void preAddRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2659"></a>
+<span class="sourceLineNo">2660</span>                            String name) throws IOException {<a name="line.2660"></a>
+<span class="sourceLineNo">2661</span>    requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>  }<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span><a name="line.2663"></a>
+<span class="sourceLineNo">2664</span>  @Override<a name="line.2664"></a>
+<span class="sourceLineNo">2665</span>  public void preRemoveRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2665"></a>
+<span class="sourceLineNo">2666</span>                               String name) throws IOException {<a name="line.2666"></a>
+<span class="sourceLineNo">2667</span>    requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2667"></a>
+<span class="sourceLineNo">2668</span>  }<a name="line.2668"></a>
+<span class="sourceLineNo">2669</span><a name="line.2669"></a>
+<span class="sourceLineNo">2670</span>  @Override<a name="line.2670"></a>
+<span class="sourceLineNo">2671</span>  public void preBalanceRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2671"></a>
+<span class="sourceLineNo">2672</span>                                String groupName) throws IOException {<a name="line.2672"></a>
+<span class="sourceLineNo">2673</span>    requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2673"></a>
+<span class="sourceLineNo">2674</span>  }<a name="line.2674"></a>
+<span class="sourceLineNo">2675</span><a name="line.2675"></a>
+<span class="sourceLineNo">2676</span>  @Override<a name="line.2676"></a>
+<span class="sourceLineNo">2677</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2677"></a>
+<span class="sourceLineNo">2678</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2678"></a>
+<span class="sourceLineNo">2679</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2679"></a>
+<span class="sourceLineNo">2680</span>  }<a name="line.2680"></a>
+<span class="sourceLineNo">2681</span><a name="line.2681"></a>
+<span class="sourceLineNo">2682</span>  @Override<a name="line.2682"></a>
+<span class="sourceLineNo">2683</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2683"></a>
+<span class="sourceLineNo">2684</span>      String peerId) throws IOException {<a name="line.2684"></a>
+<span class="sourceLineNo">2685</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2685"></a>
+<span class="sourceLineNo">2686</span>  }<a name="line.2686"></a>
+<span class="sourceLineNo">2687</span><a name="line.2687"></a>
+<span class="sourceLineNo">2688</span>  @Override<a name="line.2688"></a>
+<span class="sourceLineNo">2689</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2689"></a>
+<span class="sourceLineNo">2690</span>      String peerId) throws IOException {<a name="line.2690"></a>
+<span class="sourceLineNo">2691</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2691"></a>
+<span class="sourceLineNo">2692</span>  }<a name="line.2692"></a>
+<span class="sourceLineNo">2693</span><a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>  @Override<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2695"></a>
+<span class="sourceLineNo">2696</span>      String peerId) throws IOException {<a name="line.2696"></a>
+<span class="sourceLineNo">2697</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2697"></a>
+<span class="sourceLineNo">2698</span>  }<a name="line.2698"></a>
+<span class="sourceLineNo">2699</span><a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>  @Override<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2701"></a>
+<span class="sourceLineNo">2702</span>      String peerId) throws IOException {<a name="line.2702"></a>
+<span class="sourceLineNo">2703</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2703"></a>
+<span class="sourceLineNo">2704</span>  }<a name="line.2704"></a>
+<span class="sourceLineNo">2705</span><a name="line.2705"></a>
+<span class="sourceLineNo">2706</span>  @Override<a name="line.2706"></a>
+<span class="sourceLineNo">2707</span>  public void preUpdateReplicationPeerConfig(<a name="line.2707"></a>
+<span class="sourceLineNo">2708</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2708"></a>
+<span class="sourceLineNo">2709</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2709"></a>
+<span class="sourceLineNo">2710</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2710"></a>
+<span class="sourceLineNo">2711</span>  }<a name="line.2711"></a>
+<span class="sourceLineNo">2712</span><a name="line.2712"></a>
+<span class="sourceLineNo">2713</span>  @Override<a name="line.2713"></a>
+<span class="sourceLineNo">2714</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2714"></a>
+<span class="sourceLineNo">2715</span>      String regex) throws IOException {<a name="line.2715"></a>
+<span class="sourceLineNo">2716</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2716"></a>
+<span class="sourceLineNo">2717</span>  }<a name="line.2717"></a>
+<span class="sourceLineNo">2718</span><a name="line.2718"></a>
+<span class="sourceLineNo">2719</span>  @Override<a name="line.2719"></a>
+<span class="sourceLineNo">2720</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2720"></a>
+<span class="sourceLineNo">2721</span>      TableName tableName, HRegionInfo[] regionInfos, LockType type, String description)<a name="line.2721"></a>
+<span class="sourceLineNo">2722</span>  throws IOException {<a name="line.2722"></a>
+<span class="sourceLineNo">2723</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>    String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2726"></a>
+<span class="sourceLineNo">2727</span>  }<a name="line.2727"></a>
+<span class="sourceLineNo">2728</span><a name="line.2728"></a>
+<span class="sourceLineNo">2729</span>  @Override<a name="line.2729"></a>
+<span class="sourceLineNo">2730</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>      LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span>    String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2732"></a>
+<span class="sourceLineNo">2733</span>    checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2733"></a>
+<span class="sourceLineNo">2734</span>  }<a name="line.2734"></a>
+<span class="sourceLineNo">2735</span><a name="line.2735"></a>
+<span class="sourceLineNo">2736</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2736"></a>
+<span class="sourceLineNo">2737</span>      TableName tableName, HRegionInfo[] regionInfos, String reason)<a name="line.2737"></a>
+<span class="sourceLineNo">2738</span>  throws IOException {<a name="line.2738"></a>
+<span class="sourceLineNo">2739</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2739"></a>
+<span class="sourceLineNo">2740</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2740"></a>
+<span class="sourceLineNo">2741</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2741"></a>
+<span class="sourceLineNo">2742</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2742"></a>
+<span class="sourceLineNo">2743</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2743"></a>
+<span class="sourceLineNo">2744</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2744"></a>
+<span class="sourceLineNo">2745</span>          Action.ADMIN, Action.CREATE);<a name="line.2745"></a>
+<span class="sourceLineNo">2746</span>    } else {<a name="line.2746"></a>
+<span class="sourceLineNo">2747</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2747"></a>
+<span class="sourceLineNo">2748</span>    }<a name="line.2748"></a>
+<span class="sourceLineNo">2749</span>  }<a name="line.2749"></a>
+<span class="sourceLineNo">2750</span>}<a name="line.2750"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html
index d3c7efb..92c2266 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html
@@ -2583,206 +2583,179 @@
 <span class="sourceLineNo">2575</span>  }<a name="line.2575"></a>
 <span class="sourceLineNo">2576</span><a name="line.2576"></a>
 <span class="sourceLineNo">2577</span>  @Override<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  public void preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, Region regionA,<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>      Region regionB) throws IOException {<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    requirePermission(getActiveUser(ctx), "mergeRegions", regionA.getTableDescriptor().getTableName(),<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>        null, null, Action.ADMIN);<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>  }<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span><a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>  @Override<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>  public void postMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; c, Region regionA,<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>      Region regionB, Region mergedRegion) throws IOException { }<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span><a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>  @Override<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  public void preMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>      Region regionA, Region regionB, List&lt;Mutation&gt; metaEntries) throws IOException { }<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span><a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>  @Override<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>  public void postMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>      Region regionA, Region regionB, Region mergedRegion) throws IOException { }<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span><a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>  @Override<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>  public void preRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      Region regionA, Region regionB) throws IOException { }<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span><a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>  @Override<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  public void postRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      Region regionA, Region regionB) throws IOException { }<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span><a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>  @Override<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>  public void preRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      throws IOException {<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>    requirePermission(getActiveUser(ctx), "preRollLogWriterRequest", Permission.Action.ADMIN);<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>  }<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span><a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>  @Override<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>  public void postRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>      throws IOException { }<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span><a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>  @Override<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>      final String userName, final Quotas quotas) throws IOException {<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>    requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>  }<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span><a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>  @Override<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>      final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>    requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>  }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span><a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  @Override<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>    requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>  }<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span><a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>  @Override<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>  public void preSetTableQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>    requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>  }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span><a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>  @Override<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>  public void preSetNamespaceQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      final String namespace, final Quotas quotas) throws IOException {<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>    requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>  }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span><a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>  @Override<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>    return endpoint;<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  }<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span><a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  @Override<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>  public void preReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>    requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>  }<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span><a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>  @Override<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>  public void postReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>  }<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>  @Override<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>  public void  preClearCompactionQueues(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>          throws IOException {<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>    requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>  }<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>  @Override<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>  public void preMoveServersAndTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>      Set&lt;Address&gt; servers, Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>    requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span>  }<a name="line.2671"></a>
-<span class="sourceLineNo">2672</span><a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>  @Override<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span>  public void preMoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>                             Set&lt;Address&gt; servers, String targetGroup) throws IOException {<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>  }<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span><a name="line.2678"></a>
-<span class="sourceLineNo">2679</span>  @Override<a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>  public void preMoveTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>                            Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>    requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>  }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>  @Override<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>  public void preAddRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span>                            String name) throws IOException {<a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>  }<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span><a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>  @Override<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>  public void preRemoveRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>                               String name) throws IOException {<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>  }<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span><a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>  @Override<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>  public void preBalanceRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>                                String groupName) throws IOException {<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>    requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>  }<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span><a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>  @Override<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>  }<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span><a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>  @Override<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>      String peerId) throws IOException {<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>  }<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span><a name="line.2714"></a>
-<span class="sourceLineNo">2715</span>  @Override<a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>      String peerId) throws IOException {<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>  }<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span><a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @Override<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>      String peerId) throws IOException {<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>  }<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span><a name="line.2726"></a>
-<span class="sourceLineNo">2727</span>  @Override<a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>      String peerId) throws IOException {<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span>  }<a name="line.2731"></a>
-<span class="sourceLineNo">2732</span><a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  @Override<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>  public void preUpdateReplicationPeerConfig(<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  }<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span><a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>  @Override<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span>      String regex) throws IOException {<a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>  }<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span><a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>  @Override<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      TableName tableName, HRegionInfo[] regionInfos, LockType type, String description)<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>  throws IOException {<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>    String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>  }<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span><a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>  @Override<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>    checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>  }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span><a name="line.2762"></a>
-<span class="sourceLineNo">2763</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>      TableName tableName, HRegionInfo[] regionInfos, String reason)<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>  throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>          Action.ADMIN, Action.CREATE);<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>    } else {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>    }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>  }<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>}<a name="line.2777"></a>
+<span class="sourceLineNo">2578</span>  public void preRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2578"></a>
+<span class="sourceLineNo">2579</span>      throws IOException {<a name="line.2579"></a>
+<span class="sourceLineNo">2580</span>    requirePermission(getActiveUser(ctx), "preRollLogWriterRequest", Permission.Action.ADMIN);<a name="line.2580"></a>
+<span class="sourceLineNo">2581</span>  }<a name="line.2581"></a>
+<span class="sourceLineNo">2582</span><a name="line.2582"></a>
+<span class="sourceLineNo">2583</span>  @Override<a name="line.2583"></a>
+<span class="sourceLineNo">2584</span>  public void postRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2584"></a>
+<span class="sourceLineNo">2585</span>      throws IOException { }<a name="line.2585"></a>
+<span class="sourceLineNo">2586</span><a name="line.2586"></a>
+<span class="sourceLineNo">2587</span>  @Override<a name="line.2587"></a>
+<span class="sourceLineNo">2588</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2588"></a>
+<span class="sourceLineNo">2589</span>      final String userName, final Quotas quotas) throws IOException {<a name="line.2589"></a>
+<span class="sourceLineNo">2590</span>    requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2590"></a>
+<span class="sourceLineNo">2591</span>  }<a name="line.2591"></a>
+<span class="sourceLineNo">2592</span><a name="line.2592"></a>
+<span class="sourceLineNo">2593</span>  @Override<a name="line.2593"></a>
+<span class="sourceLineNo">2594</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2594"></a>
+<span class="sourceLineNo">2595</span>      final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2595"></a>
+<span class="sourceLineNo">2596</span>    requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2596"></a>
+<span class="sourceLineNo">2597</span>  }<a name="line.2597"></a>
+<span class="sourceLineNo">2598</span><a name="line.2598"></a>
+<span class="sourceLineNo">2599</span>  @Override<a name="line.2599"></a>
+<span class="sourceLineNo">2600</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2600"></a>
+<span class="sourceLineNo">2601</span>      final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2601"></a>
+<span class="sourceLineNo">2602</span>    requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2602"></a>
+<span class="sourceLineNo">2603</span>  }<a name="line.2603"></a>
+<span class="sourceLineNo">2604</span><a name="line.2604"></a>
+<span class="sourceLineNo">2605</span>  @Override<a name="line.2605"></a>
+<span class="sourceLineNo">2606</span>  public void preSetTableQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2606"></a>
+<span class="sourceLineNo">2607</span>      final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2607"></a>
+<span class="sourceLineNo">2608</span>    requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2608"></a>
+<span class="sourceLineNo">2609</span>  }<a name="line.2609"></a>
+<span class="sourceLineNo">2610</span><a name="line.2610"></a>
+<span class="sourceLineNo">2611</span>  @Override<a name="line.2611"></a>
+<span class="sourceLineNo">2612</span>  public void preSetNamespaceQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2612"></a>
+<span class="sourceLineNo">2613</span>      final String namespace, final Quotas quotas) throws IOException {<a name="line.2613"></a>
+<span class="sourceLineNo">2614</span>    requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2614"></a>
+<span class="sourceLineNo">2615</span>  }<a name="line.2615"></a>
+<span class="sourceLineNo">2616</span><a name="line.2616"></a>
+<span class="sourceLineNo">2617</span>  @Override<a name="line.2617"></a>
+<span class="sourceLineNo">2618</span>  public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2618"></a>
+<span class="sourceLineNo">2619</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.2619"></a>
+<span class="sourceLineNo">2620</span>    return endpoint;<a name="line.2620"></a>
+<span class="sourceLineNo">2621</span>  }<a name="line.2621"></a>
+<span class="sourceLineNo">2622</span><a name="line.2622"></a>
+<span class="sourceLineNo">2623</span>  @Override<a name="line.2623"></a>
+<span class="sourceLineNo">2624</span>  public void preReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2624"></a>
+<span class="sourceLineNo">2625</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2625"></a>
+<span class="sourceLineNo">2626</span>    requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2626"></a>
+<span class="sourceLineNo">2627</span>  }<a name="line.2627"></a>
+<span class="sourceLineNo">2628</span><a name="line.2628"></a>
+<span class="sourceLineNo">2629</span>  @Override<a name="line.2629"></a>
+<span class="sourceLineNo">2630</span>  public void postReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2630"></a>
+<span class="sourceLineNo">2631</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2631"></a>
+<span class="sourceLineNo">2632</span>  }<a name="line.2632"></a>
+<span class="sourceLineNo">2633</span><a name="line.2633"></a>
+<span class="sourceLineNo">2634</span>  @Override<a name="line.2634"></a>
+<span class="sourceLineNo">2635</span>  public void  preClearCompactionQueues(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2635"></a>
+<span class="sourceLineNo">2636</span>          throws IOException {<a name="line.2636"></a>
+<span class="sourceLineNo">2637</span>    requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2637"></a>
+<span class="sourceLineNo">2638</span>  }<a name="line.2638"></a>
+<span class="sourceLineNo">2639</span><a name="line.2639"></a>
+<span class="sourceLineNo">2640</span>  @Override<a name="line.2640"></a>
+<span class="sourceLineNo">2641</span>  public void preMoveServersAndTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2641"></a>
+<span class="sourceLineNo">2642</span>      Set&lt;Address&gt; servers, Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2642"></a>
+<span class="sourceLineNo">2643</span>    requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2643"></a>
+<span class="sourceLineNo">2644</span>  }<a name="line.2644"></a>
+<span class="sourceLineNo">2645</span><a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>  @Override<a name="line.2646"></a>
+<span class="sourceLineNo">2647</span>  public void preMoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2647"></a>
+<span class="sourceLineNo">2648</span>                             Set&lt;Address&gt; servers, String targetGroup) throws IOException {<a name="line.2648"></a>
+<span class="sourceLineNo">2649</span>    requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2649"></a>
+<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
+<span class="sourceLineNo">2651</span><a name="line.2651"></a>
+<span class="sourceLineNo">2652</span>  @Override<a name="line.2652"></a>
+<span class="sourceLineNo">2653</span>  public void preMoveTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2653"></a>
+<span class="sourceLineNo">2654</span>                            Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2654"></a>
+<span class="sourceLineNo">2655</span>    requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2655"></a>
+<span class="sourceLineNo">2656</span>  }<a name="line.2656"></a>
+<span class="sourceLineNo">2657</span><a name="line.2657"></a>
+<span class="sourceLineNo">2658</span>  @Override<a name="line.2658"></a>
+<span class="sourceLineNo">2659</span>  public void preAddRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2659"></a>
+<span class="sourceLineNo">2660</span>                            String name) throws IOException {<a name="line.2660"></a>
+<span class="sourceLineNo">2661</span>    requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>  }<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span><a name="line.2663"></a>
+<span class="sourceLineNo">2664</span>  @Override<a name="line.2664"></a>
+<span class="sourceLineNo">2665</span>  public void preRemoveRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2665"></a>
+<span class="sourceLineNo">2666</span>                               String name) throws IOException {<a name="line.2666"></a>
+<span class="sourceLineNo">2667</span>    requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2667"></a>
+<span class="sourceLineNo">2668</span>  }<a name="line.2668"></a>
+<span class="sourceLineNo">2669</span><a name="line.2669"></a>
+<span class="sourceLineNo">2670</span>  @Override<a name="line.2670"></a>
+<span class="sourceLineNo">2671</span>  public void preBalanceRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2671"></a>
+<span class="sourceLineNo">2672</span>                                String groupName) throws IOException {<a name="line.2672"></a>
+<span class="sourceLineNo">2673</span>    requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2673"></a>
+<span class="sourceLineNo">2674</span>  }<a name="line.2674"></a>
+<span class="sourceLineNo">2675</span><a name="line.2675"></a>
+<span class="sourceLineNo">2676</span>  @Override<a name="line.2676"></a>
+<span class="sourceLineNo">2677</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2677"></a>
+<span class="sourceLineNo">2678</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2678"></a>
+<span class="sourceLineNo">2679</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2679"></a>
+<span class="sourceLineNo">2680</span>  }<a name="line.2680"></a>
+<span class="sourceLineNo">2681</span><a name="line.2681"></a>
+<span class="sourceLineNo">2682</span>  @Override<a name="line.2682"></a>
+<span class="sourceLineNo">2683</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2683"></a>
+<span class="sourceLineNo">2684</span>      String peerId) throws IOException {<a name="line.2684"></a>
+<span class="sourceLineNo">2685</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2685"></a>
+<span class="sourceLineNo">2686</span>  }<a name="line.2686"></a>
+<span class="sourceLineNo">2687</span><a name="line.2687"></a>
+<span class="sourceLineNo">2688</span>  @Override<a name="line.2688"></a>
+<span class="sourceLineNo">2689</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2689"></a>
+<span class="sourceLineNo">2690</span>      String peerId) throws IOException {<a name="line.2690"></a>
+<span class="sourceLineNo">2691</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2691"></a>
+<span class="sourceLineNo">2692</span>  }<a name="line.2692"></a>
+<span class="sourceLineNo">2693</span><a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>  @Override<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2695"></a>
+<span class="sourceLineNo">2696</span>      String peerId) throws IOException {<a name="line.2696"></a>
+<span class="sourceLineNo">2697</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2697"></a>
+<span class="sourceLineNo">2698</span>  }<a name="line.2698"></a>
+<span class="sourceLineNo">2699</span><a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>  @Override<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2701"></a>
+<span class="sourceLineNo">2702</span>      String peerId) throws IOException {<a name="line.2702"></a>
+<span class="sourceLineNo">2703</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2703"></a>
+<span class="sourceLineNo">2704</span>  }<a name="line.2704"></a>
+<span class="sourceLineNo">2705</span><a name="line.2705"></a>
+<span class="sourceLineNo">2706</span>  @Override<a name="line.2706"></a>
+<span class="sourceLineNo">2707</span>  public void preUpdateReplicationPeerConfig(<a name="line.2707"></a>
+<span class="sourceLineNo">2708</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2708"></a>
+<span class="sourceLineNo">2709</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2709"></a>
+<span class="sourceLineNo">2710</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2710"></a>
+<span class="sourceLineNo">2711</span>  }<a name="line.2711"></a>
+<span class="sourceLineNo">2712</span><a name="line.2712"></a>
+<span class="sourceLineNo">2713</span>  @Override<a name="line.2713"></a>
+<span class="sourceLineNo">2714</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2714"></a>
+<span class="sourceLineNo">2715</span>      String regex) throws IOException {<a name="line.2715"></a>
+<span class="sourceLineNo">2716</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2716"></a>
+<span class="sourceLineNo">2717</span>  }<a name="line.2717"></a>
+<span class="sourceLineNo">2718</span><a name="line.2718"></a>
+<span class="sourceLineNo">2719</span>  @Override<a name="line.2719"></a>
+<span class="sourceLineNo">2720</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2720"></a>
+<span class="sourceLineNo">2721</span>      TableName tableName, HRegionInfo[] regionInfos, LockType type, String description)<a name="line.2721"></a>
+<span class="sourceLineNo">2722</span>  throws IOException {<a name="line.2722"></a>
+<span class="sourceLineNo">2723</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>    String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2726"></a>
+<span class="sourceLineNo">2727</span>  }<a name="line.2727"></a>
+<span class="sourceLineNo">2728</span><a name="line.2728"></a>
+<span class="sourceLineNo">2729</span>  @Override<a name="line.2729"></a>
+<span class="sourceLineNo">2730</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>      LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span>    String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2732"></a>
+<span class="sourceLineNo">2733</span>    checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2733"></a>
+<span class="sourceLineNo">2734</span>  }<a name="line.2734"></a>
+<span class="sourceLineNo">2735</span><a name="line.2735"></a>
+<span class="sourceLineNo">2736</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2736"></a>
+<span class="sourceLineNo">2737</span>      TableName tableName, HRegionInfo[] regionInfos, String reason)<a name="line.2737"></a>
+<span class="sourceLineNo">2738</span>  throws IOException {<a name="line.2738"></a>
+<span class="sourceLineNo">2739</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2739"></a>
+<span class="sourceLineNo">2740</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2740"></a>
+<span class="sourceLineNo">2741</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2741"></a>
+<span class="sourceLineNo">2742</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2742"></a>
+<span class="sourceLineNo">2743</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2743"></a>
+<span class="sourceLineNo">2744</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2744"></a>
+<span class="sourceLineNo">2745</span>          Action.ADMIN, Action.CREATE);<a name="line.2745"></a>
+<span class="sourceLineNo">2746</span>    } else {<a name="line.2746"></a>
+<span class="sourceLineNo">2747</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2747"></a>
+<span class="sourceLineNo">2748</span>    }<a name="line.2748"></a>
+<span class="sourceLineNo">2749</span>  }<a name="line.2749"></a>
+<span class="sourceLineNo">2750</span>}<a name="line.2750"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 655410a..c41a4d9 100644
--- a/export_control.html
+++ b/export_control.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -336,7 +336,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index a48c2d5..5e729c3 100644
--- a/hbase-annotations/dependencies.html
+++ b/hbase-annotations/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -272,7 +272,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index c1f5f31..b7dfbcb 100644
--- a/hbase-annotations/dependency-convergence.html
+++ b/hbase-annotations/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -650,7 +650,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index 73a65e9..45dae36 100644
--- a/hbase-annotations/dependency-info.html
+++ b/hbase-annotations/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index 150324e..ca0376d 100644
--- a/hbase-annotations/dependency-management.html
+++ b/hbase-annotations/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -772,7 +772,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index 77f9600..1f28d65 100644
--- a/hbase-annotations/index.html
+++ b/hbase-annotations/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 


[17/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
index 36f4c8d..ec36d2e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html
@@ -38,395 +38,326 @@
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.CoprocessorEnvironment;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.MetaMutationAnnotation;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.User;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.49"></a>
-<span class="sourceLineNo">050</span>@InterfaceStability.Evolving<a name="line.50"></a>
-<span class="sourceLineNo">051</span>public class RegionServerCoprocessorHost extends<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.52"></a>
+<span class="sourceLineNo">033</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.User;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.47"></a>
+<span class="sourceLineNo">048</span>@InterfaceStability.Evolving<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class RegionServerCoprocessorHost extends<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.52"></a>
 <span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.54"></a>
+<span class="sourceLineNo">054</span>  private RegionServerServices rsServices;<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private RegionServerServices rsServices;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      Configuration conf) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    super(rsServices);<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    this.rsServices = rsServices;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    this.conf = conf;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    LOG.info("Table coprocessor loading is " +<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      sequence, conf, this.rsServices);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public void preStop(String message, User user) throws IOException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // coprocessor should be cleaned up.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      public void call(RegionServerObserver oserver,<a name="line.88"></a>
-<span class="sourceLineNo">089</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        oserver.preStopRegionServer(ctx);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      @Override<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        // invoke coprocessor stop method<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        shutdown(env);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      }<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    });<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public boolean preMerge(final HRegion regionA, final HRegion regionB, final User user) throws IOException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      @Override<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      public void call(RegionServerObserver oserver,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        oserver.preMerge(ctx, regionA, regionB);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      }<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    });<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public void postMerge(final HRegion regionA, final HRegion regionB, final HRegion mergedRegion,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>                        final User user)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      throws IOException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      @Override<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      public void call(RegionServerObserver oserver,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        oserver.postMerge(ctx, regionA, regionB, mergedRegion);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    });<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public boolean preMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      final @MetaMutationAnnotation List&lt;Mutation&gt; metaEntries, final User user)<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      throws IOException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      public void call(RegionServerObserver oserver,<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        oserver.preMergeCommit(ctx, regionA, regionB, metaEntries);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    });<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public void postMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      final HRegion mergedRegion, final User user) throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      @Override<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      public void call(RegionServerObserver oserver,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        oserver.postMergeCommit(ctx, regionA, regionB, mergedRegion);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    });<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public void preRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      throws IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      public void call(RegionServerObserver oserver,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        oserver.preRollBackMerge(ctx, regionA, regionB);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    });<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  public void postRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      throws IOException {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      public void call(RegionServerObserver oserver,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        oserver.postRollBackMerge(ctx, regionA, regionB);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      }<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    });<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      @Override<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      public void call(RegionServerObserver oserver,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    });<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      @Override<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      public void call(RegionServerObserver oserver,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    });<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
+<span class="sourceLineNo">056</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      Configuration conf) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    super(rsServices);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    this.rsServices = rsServices;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    this.conf = conf;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    LOG.info("Table coprocessor loading is " +<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      sequence, conf, this.rsServices);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public void preStop(String message, User user) throws IOException {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    // coprocessor should be cleaned up.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      public void call(RegionServerObserver oserver,<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        oserver.preStopRegionServer(ctx);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      }<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        // invoke coprocessor stop method<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        shutdown(env);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    });<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      @Override<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      public void call(RegionServerObserver oserver,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    });<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      @Override<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      public void call(RegionServerObserver oserver,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    });<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      throws IOException {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      public void call(RegionServerObserver oserver,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    });<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      throws IOException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      public void call(RegionServerObserver oserver,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    });<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      throws IOException {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          public void call(RegionServerObserver oserver,<a name="line.145"></a>
+<span class="sourceLineNo">146</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        });<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public void preClearCompactionQueues() throws IOException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      public void call(RegionServerObserver oserver,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        oserver.preClearCompactionQueues(ctx);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    });<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public void postClearCompactionQueues() throws IOException {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      public void call(RegionServerObserver oserver,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        oserver.postClearCompactionQueues(ctx);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    });<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    if (ctx == null)<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      return defaultValue;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    ctx.setResult(defaultValue);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    execOperation(ctx);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    return ctx.getResult();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private static abstract class CoprocessorOperation<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    public CoprocessorOperation() {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      this(RpcServer.getRequestUser());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
 <span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      @Override<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      public void call(RegionServerObserver oserver,<a name="line.191"></a>
-<span class="sourceLineNo">192</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    });<a name="line.195"></a>
+<span class="sourceLineNo">187</span>    public CoprocessorOperation(User user) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      super(user);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public abstract void call(RegionServerObserver oserver,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
 <span class="sourceLineNo">196</span>  }<a name="line.196"></a>
 <span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      throws IOException {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      @Override<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      public void call(RegionServerObserver oserver,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    });<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      throws IOException {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          @Override<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          public void call(RegionServerObserver oserver,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>          }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        });<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  public void preClearCompactionQueues() throws IOException {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      @Override<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      public void call(RegionServerObserver oserver,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        oserver.preClearCompactionQueues(ctx);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    });<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public void postClearCompactionQueues() throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public void call(RegionServerObserver oserver,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        oserver.postClearCompactionQueues(ctx);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    });<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (ctx == null)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return defaultValue;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    ctx.setResult(defaultValue);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    execOperation(ctx);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    return ctx.getResult();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  private static abstract class CoprocessorOperation<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public CoprocessorOperation() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      this(RpcServer.getRequestUser());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public CoprocessorOperation(User user) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(user);<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>    public abstract void call(RegionServerObserver oserver,<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    private T result = null;<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public void setResult(final T result) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.result = result;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public T getResult() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return this.result;<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (ctx == null) return false;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    boolean bypass = false;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      RegionServerEnvironment env = envs.get(i);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        ctx.prepare(env);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        Thread currentThread = Thread.currentThread();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        try {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        } catch (Throwable e) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          handleCoprocessorThrowable(env, e);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        } finally {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          currentThread.setContextClassLoader(cl);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        bypass |= ctx.shouldBypass();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        if (ctx.shouldComplete()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          break;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      ctx.postEnvCall(env);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return bypass;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * RegionServer stop. (Refer:<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param ctx CoprocessorOperation<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @throws IOException<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (ctx == null) return false;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    boolean bypass = false;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    int envsSize = envs.size();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      RegionServerEnvironment env = envs.get(i);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        ctx.prepare(env);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        Thread currentThread = Thread.currentThread();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        try {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        } catch (Throwable e) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          handleCoprocessorThrowable(env, e);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        } finally {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>          currentThread.setContextClassLoader(cl);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        bypass |= ctx.shouldBypass();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        if (ctx.shouldComplete()) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          break;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">198</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    private T result = null;<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    public void setResult(final T result) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      this.result = result;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public T getResult() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return this.result;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (ctx == null) return false;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    boolean bypass = false;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      RegionServerEnvironment env = envs.get(i);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        ctx.prepare(env);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        Thread currentThread = Thread.currentThread();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        } catch (Throwable e) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          handleCoprocessorThrowable(env, e);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        } finally {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>          currentThread.setContextClassLoader(cl);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        bypass |= ctx.shouldBypass();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        if (ctx.shouldComplete()) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          break;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ctx.postEnvCall(env);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return bypass;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * RegionServer stop. (Refer:<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * @param ctx CoprocessorOperation<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * @throws IOException<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    if (ctx == null) return false;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    boolean bypass = false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    int envsSize = envs.size();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      RegionServerEnvironment env = envs.get(i);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        ctx.prepare(env);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Thread currentThread = Thread.currentThread();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        } catch (Throwable e) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          handleCoprocessorThrowable(env, e);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        } finally {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          currentThread.setContextClassLoader(cl);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        bypass |= ctx.shouldBypass();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        if (ctx.shouldComplete()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          break;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      }<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>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      RegionServerEnvironment env = envs.get(i);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      ctx.postEnvCall(env);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    return bypass;<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>  /**<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * Coprocessor environment extension providing access to region server<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * related services.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      implements RegionServerCoprocessorEnvironment {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    private final RegionServerServices regionServerServices;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    private final MetricRegistry metricRegistry;<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        final Configuration conf, final RegionServerServices services) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      super(impl, priority, seq, conf);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      this.regionServerServices = services;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          this.regionServerServices.registerService(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          break;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      this.metricRegistry =<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    @Override<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    public RegionServerServices getRegionServerServices() {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      return regionServerServices;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      return metricRegistry;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    @Override<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    protected void shutdown() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      super.shutdown();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<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>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * order.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  static class EnvironmentPriorityComparator implements<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        final CoprocessorEnvironment env2) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        return -1;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        return 1;<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><a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      RegionServerEnvironment env = envs.get(i);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      ctx.postEnvCall(env);<a name="line.349"></a>
+<span class="sourceLineNo">344</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        return -1;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        return 1;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      return 0;<a name="line.349"></a>
 <span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return bypass;<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>   * Coprocessor environment extension providing access to region server<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * related services.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      implements RegionServerCoprocessorEnvironment {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    private final RegionServerServices regionServerServices;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    private final MetricRegistry metricRegistry;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        final Configuration conf, final RegionServerServices services) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      super(impl, priority, seq, conf);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      this.regionServerServices = services;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          this.regionServerServices.registerService(<a name="line.373"></a>
-<span class="sourceLineNo">374</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          break;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      this.metricRegistry =<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    public RegionServerServices getRegionServerServices() {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      return regionServerServices;<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>    @Override<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      return metricRegistry;<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>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    protected void shutdown() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      super.shutdown();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * order.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  static class EnvironmentPriorityComparator implements<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    @Override<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        final CoprocessorEnvironment env2) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        return -1;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        return 1;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        return -1;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        return 1;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return 0;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<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">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>}<a name="line.352"></a>
 
 
 


[15/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/integration.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/integration.html b/hbase-annotations/integration.html
index ee2a4ea..e9cdad1 100644
--- a/hbase-annotations/integration.html
+++ b/hbase-annotations/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/issue-tracking.html b/hbase-annotations/issue-tracking.html
index cc6788f..b7498ad 100644
--- a/hbase-annotations/issue-tracking.html
+++ b/hbase-annotations/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/license.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/license.html b/hbase-annotations/license.html
index bf60e96..c97e5fb 100644
--- a/hbase-annotations/license.html
+++ b/hbase-annotations/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/mail-lists.html b/hbase-annotations/mail-lists.html
index 3330e84..6bb481a 100644
--- a/hbase-annotations/mail-lists.html
+++ b/hbase-annotations/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugin-management.html b/hbase-annotations/plugin-management.html
index 2409f30..8c765e6 100644
--- a/hbase-annotations/plugin-management.html
+++ b/hbase-annotations/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugins.html b/hbase-annotations/plugins.html
index 0bdecbb..7c17a82 100644
--- a/hbase-annotations/plugins.html
+++ b/hbase-annotations/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -222,7 +222,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-info.html b/hbase-annotations/project-info.html
index dfb1494..2b1fd6c 100644
--- a/hbase-annotations/project-info.html
+++ b/hbase-annotations/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-summary.html b/hbase-annotations/project-summary.html
index 9f800af..0430ec6 100644
--- a/hbase-annotations/project-summary.html
+++ b/hbase-annotations/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/source-repository.html b/hbase-annotations/source-repository.html
index afd2ccd..885b552 100644
--- a/hbase-annotations/source-repository.html
+++ b/hbase-annotations/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/team-list.html b/hbase-annotations/team-list.html
index d0dd64f..bd07388 100644
--- a/hbase-annotations/team-list.html
+++ b/hbase-annotations/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -529,7 +529,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependencies.html b/hbase-build-configuration/dependencies.html
index f9ad3c4..36959f8 100644
--- a/hbase-build-configuration/dependencies.html
+++ b/hbase-build-configuration/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-convergence.html b/hbase-build-configuration/dependency-convergence.html
index 7d643a5..dae6852 100644
--- a/hbase-build-configuration/dependency-convergence.html
+++ b/hbase-build-configuration/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -650,7 +650,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-info.html b/hbase-build-configuration/dependency-info.html
index 0a5b248..9a59c36 100644
--- a/hbase-build-configuration/dependency-info.html
+++ b/hbase-build-configuration/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-management.html b/hbase-build-configuration/dependency-management.html
index 7289e70..45f0526 100644
--- a/hbase-build-configuration/dependency-management.html
+++ b/hbase-build-configuration/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -772,7 +772,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependencies.html b/hbase-build-configuration/hbase-archetypes/dependencies.html
index e0c9959..80b39fe 100644
--- a/hbase-build-configuration/hbase-archetypes/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
index f721cf5..c39f1f3 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -650,7 +650,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-info.html b/hbase-build-configuration/hbase-archetypes/dependency-info.html
index a97525a..c6ba8a5 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-management.html b/hbase-build-configuration/hbase-archetypes/dependency-management.html
index ed55975..300c6eb 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -772,7 +772,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
index 91d35a0..6bc7959 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
index d9218ac..e26ccbc 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -650,7 +650,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
index db16229..6dea7a5 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
index 2514bfe..3345580 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -772,7 +772,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
index 89fc6a4..ddc364e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
index a5e6493..3f81deb 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
index caaf020..10b9b99 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
index 58a5bca..913e7d4 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
index a14fd9a..4fddaa7 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
index 6450617..aa8f230 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
index dd4421c..0fd0632 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
index e211a8c..56c90d3 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
index 50bd318..da43c0a 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
index a7f5e11..c3acc67 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
index 6dfa142..7307ca1 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -529,7 +529,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
index 7c3fb89..0878222 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
index 18466e5..4f4dcb4 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -4164,7 +4164,7 @@ Jackson JSON processor's data binding functionality.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
index db70016..080bf60 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -650,7 +650,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
index fc02d3e..37d2f21 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
index 28baaf7..b9955eb 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -772,7 +772,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
index 382e365..9dee9c8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
index 44ccf63..1089167 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
index c98a702..3561b15 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
index 2d2b42b..b1bd1b1 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
index f188545..c543f5e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
index 5ded17f..44fcd4e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
index 33d2f58..73b2cf4 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
index 9890ca5..746ba77 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
index 5278bd9..a6cba9b 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
index fb888bd..3057440 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
index 10c82e9..c9984e7 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
index 2cd858c..69560fd 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -529,7 +529,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
index 3233e24..8f33c25 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
index 6c38bd0..9cdc552 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -4189,7 +4189,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
index 4ff9c34..56e4412 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -650,7 +650,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
index 562dc9d..57312b5 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
index f213365..1292427 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -772,7 +772,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
index 77a083f..2061d4e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
index aaad157..4f2c774 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
index b5b7d37..987c8b4 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
index 81a328a..6155829 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
index fd122d1..9f9a4d6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
index 1e24567..ec529e6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 


[29/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index aaa1ca1..c98024d 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -289,7 +289,7 @@
 <td>2042</td>
 <td>0</td>
 <td>0</td>
-<td>14019</td></tr></table></div>
+<td>14017</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -5372,7 +5372,7 @@
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>6</td></tr>
+<td>5</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.regionserver.RegionServerServices.java">org/apache/hadoop/hbase/regionserver/RegionServerServices.java</a></td>
 <td>0</td>
@@ -6792,7 +6792,7 @@
 <td><a href="#org.apache.hadoop.hbase.security.access.AccessController.java">org/apache/hadoop/hbase/security/access/AccessController.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>41</td></tr>
+<td>40</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.security.access.AuthResult.java">org/apache/hadoop/hbase/security/access/AuthResult.java</a></td>
 <td>0</td>
@@ -8381,12 +8381,12 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>773</td>
+<td>779</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3291</td>
+<td>3285</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -8404,7 +8404,7 @@
 <ul>
 <li>max: <tt>&quot;100&quot;</tt></li>
 <li>ignorePattern: <tt>&quot;^package.*|^import.*|a href|href|http://|https://|ftp://|org.apache.thrift.|com.google.protobuf.|hbase.protobuf.generated&quot;</tt></li></ul></td>
-<td>1086</td>
+<td>1084</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
@@ -14869,7 +14869,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 43 has parse error. Missed HTML close tag 'TableName'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>179</td></tr>
 <tr class="b">
@@ -19408,7 +19408,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 64 has parse error. Missed HTML close tag 'code'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>2106</td></tr>
 <tr class="a">
@@ -26452,7 +26452,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 37 has parse error. Details: no viable alternative at input '&lt;ColumnFamily,' while parsing HTML_ELEMENT</td>
 <td>29</td></tr></table></div>
 <div class="section">
@@ -29492,14 +29492,14 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
-<td>Wrong order for 'org.apache.hadoop.hbase.client.Mutation' import.</td>
-<td>30</td></tr>
+<td>Wrong order for 'org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry' import.</td>
+<td>29</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
-<td>Wrong order for 'org.apache.hadoop.hbase.regionserver.Region' import.</td>
-<td>32</td></tr></table></div>
+<td>Wrong order for 'org.apache.hadoop.hbase.replication.ReplicationEndpoint' import.</td>
+<td>30</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService.java">org/apache/hadoop/hbase/coprocessor/SingletonCoprocessorService.java</h3>
 <table border="0" class="table table-striped">
@@ -59791,7 +59791,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 60 has parse error. Missed HTML close tag 'Comparable'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>28</td></tr>
 <tr class="b">
@@ -63217,7 +63217,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 0 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>74</td></tr>
 <tr class="b">
@@ -72383,102 +72383,96 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
-<td>Wrong order for 'org.apache.hadoop.hbase.client.Mutation' import.</td>
-<td>36</td></tr>
+<td>Wrong order for 'org.apache.hadoop.hbase.coprocessor.CoprocessorHost' import.</td>
+<td>35</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 109).</td>
-<td>100</td></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>243</td></tr>
-<tr class="a">
+<td>174</td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>280</td></tr>
-<tr class="b">
+<td>211</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>317</td></tr>
-<tr class="a">
+<td>248</td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>320</td></tr></table></div>
+<td>251</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.RegionServerServices.java">org/apache/hadoop/hbase/regionserver/RegionServerServices.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.locking.EntityLock' import.</td>
 <td>34</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager' import.</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.Service' import.</td>
 <td>44</td></tr>
-<tr class="b">
+<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>58</td></tr>
-<tr class="a">
+<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>62</td></tr>
-<tr class="b">
+<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>116</td></tr>
-<tr class="a">
+<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>117</td></tr>
-<tr class="b">
+<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>126</td></tr>
-<tr class="a">
+<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>127</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
@@ -72487,49 +72481,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.RegionServicesForStores.java">org/apache/hadoop/hbase/regionserver/RegionServicesForStores.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.wal.WAL' import.</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 12, expected level should be one of the following: 6, 8.</td>
 <td>45</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 14, expected level should be one of the following: 8, 10.</td>
 <td>47</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 14, expected level should be one of the following: 8, 10.</td>
 <td>49</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 12, expected level should be one of the following: 6, 8.</td>
 <td>50</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' have incorrect indentation level 10, expected level should be one of the following: 4, 6.</td>
 <td>51</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -72538,61 +72532,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.RegionSplitPolicy.java">org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.HBaseInterfaceAudience' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.shaded.com.google.common.base.Preconditions' import.</td>
 <td>31</td></tr>
-<tr class="a">
+<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>71</td></tr>
-<tr class="b">
+<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>72</td></tr>
-<tr class="a">
+<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>98</td></tr>
-<tr class="b">
+<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>99</td></tr>
-<tr class="a">
+<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>101</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -72601,25 +72595,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ReplicationService.java">org/apache/hadoop/hbase/regionserver/ReplicationService.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.replication.regionserver.ReplicationLoad' import.</td>
 <td>27</td></tr>
-<tr class="a">
+<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>40</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -72628,19 +72622,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ReplicationSinkService.java">org/apache/hadoop/hbase/regionserver/ReplicationSinkService.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.CellScanner' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -72649,13 +72643,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ReplicationSourceService.java">org/apache/hadoop/hbase/regionserver/ReplicationSourceService.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -72664,49 +72658,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ReversedKeyValueHeap.java">org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Cell' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<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>42</td></tr>
-<tr class="a">
+<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>43</td></tr>
-<tr class="b">
+<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>44</td></tr>
-<tr class="a">
+<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>164</td></tr>
-<tr class="b">
+<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>181</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -72715,13 +72709,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ReversedMobStoreScanner.java">org/apache/hadoop/hbase/regionserver/ReversedMobStoreScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -72730,37 +72724,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ReversedRegionScannerImpl.java">org/apache/hadoop/hbase/regionserver/ReversedRegionScannerImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Scan' import.</td>
 <td>28</td></tr>
-<tr class="b">
+<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>40</td></tr>
-<tr class="a">
+<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>41</td></tr>
-<tr class="b">
+<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>42</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -72769,25 +72763,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ReversedStoreScanner.java">org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Cell' import.</td>
 <td>26</td></tr>
-<tr class="b">
+<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>44</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -72796,43 +72790,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.RowProcessor.java">org/apache/hadoop/hbase/regionserver/RowProcessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Durability' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.HBaseInterfaceAudience' import.</td>
 <td>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.Message' import.</td>
 <td>32</td></tr>
-<tr class="b">
+<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>139</td></tr>
-<tr class="a">
+<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>146</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -72841,19 +72835,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.RpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/RpcSchedulerFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.ipc.PriorityFunction' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
@@ -72862,43 +72856,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ScanInfo.java">org/apache/hadoop/hbase/regionserver/ScanInfo.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.HConstants' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting' import.</td>
 <td>30</td></tr>
-<tr class="b">
+<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>60</td></tr>
-<tr class="a">
+<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 124).</td>
 <td>70</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -72907,85 +72901,85 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ScannerContext.java">org/apache/hadoop/hbase/regionserver/ScannerContext.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics' import.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>107</td></tr>
-<tr class="b">
+<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>218</td></tr>
-<tr class="a">
+<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>241</td></tr>
-<tr class="b">
+<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>249</td></tr>
-<tr class="a">
+<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>258</td></tr>
-<tr class="b">
+<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>266</td></tr>
-<tr class="a">
+<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>568</td></tr>
-<tr class="b">
+<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>569</td></tr>
-<tr class="a">
+<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>570</td></tr>
-<tr class="b">
+<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>591</td></tr>
-<tr class="a">
+<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>629</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -72994,49 +72988,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ScannerIdGenerator.java">org/apache/hadoop/hbase/regionserver/ScannerIdGenerator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.util.concurrent.atomic.AtomicInteger' import.</td>
 <td>23</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - java.util.concurrent.atomic.AtomicLong.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.nio.charset.Charset' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - java.nio.charset.Charset.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.hbase.HConstants.</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
@@ -73045,61 +73039,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SecureBulkLoadManager.java">org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Connection' import.</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.regionserver.Region.BulkLoadListener' import.</td>
 <td>42</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>56</td></tr>
-<tr class="a">
+<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>153</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>219</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>398</td></tr>
-<tr class="b">
+<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>412</td></tr>
-<tr class="a">
+<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>414</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -73108,19 +73102,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.Segment.java">org/apache/hadoop/hbase/regionserver/Segment.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.TimeRange' import.</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -73129,151 +73123,151 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SegmentFactory.java">org/apache/hadoop/hbase/regionserver/SegmentFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.hbase.shaded.com.google.common.base.Preconditions.</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>26</td></tr>
-<tr class="b">
+<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>61</td></tr>
-<tr class="a">
+<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 102).</td>
 <td>99</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>MissingSwitchDefault</td>
 <td>switch without &quot;default&quot; clause.</td>
 <td>101</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>102</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>103</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>104</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>105</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>107</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>108</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>109</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>110</td></tr>
-<tr class="a">
+<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 108).</td>
 <td>117</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>MissingSwitchDefault</td>
 <td>switch without &quot;default&quot; clause.</td>
 <td>122</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>123</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>124</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>125</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>126</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>128</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>129</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>130</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -73282,25 +73276,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SegmentScanner.java">org/apache/hadoop/hbase/regionserver/SegmentScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Scan' import.</td>
 <td>30</td></tr>
-<tr class="a">
+<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>70</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -73309,67 +73303,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ServerNonceManager.java">org/apache/hadoop/hbase/regionserver/ServerNonceManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.EnvironmentEdgeManager' import.</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting' import.</td>
 <td>36</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>100</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>152</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>157</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>182</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>243</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>246</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>278</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -73378,13 +73372,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ShipperListener.java">org/apache/hadoop/hbase/regionserver/ShipperListener.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -73393,49 +73387,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ShutdownHook.java">org/apache/hadoop/hbase/regionserver/ShutdownHook.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>29</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>40</td></tr>
-<tr class="a">
+<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>75</td></tr>
-<tr class="b">
+<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>80</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'this' have incorrect indentation level 14, expected level should be 16.</td>
 <td>126</td></tr>
-<tr class="b">
+<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>253</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -73444,31 +73438,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/SimpleRpcSchedulerFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.ipc.PriorityFunction' import.</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 10, expected level should be 4.</td>
 <td>38</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>FileTabCharacter</td>
@@ -73477,25 +73471,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SplitLogWorker.java">org/apache/hadoop/hbase/regionserver/SplitLogWorker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.CancelableProgressable' import.</td>
 <td>40</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -73504,25 +73498,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SplitRequest.java">org/apache/hadoop/hbase/regionserver/SplitRequest.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.security.User' import.</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.shaded.com.google.common.base.Preconditions' import.</td>
 <td>32</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
@@ -73531,25 +73525,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy.java">org/apache/hadoop/hbase/regionserver/SteppingSplitPolicy.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<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>23</td></tr>
-<tr class="a">
+<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>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -73558,115 +73552,115 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.Store.java">org/apache/hadoop/hbase/regionserver/Store.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.ColumnFamilyDescriptor' import.</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest.</td>
 <td>43</td></tr>
-<tr class="b">
+<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>138</td></tr>
-<tr class="a">
+<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>199</td></tr>
-<tr class="b">
+<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>214</td></tr>
-<tr class="a">
+<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>231</td></tr>
-<tr class="b">
+<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>317</td></tr>
-<tr class="a">
+<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>318</td></tr>
-<tr class="b">
+<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>331</td></tr>
-<tr class="a">
+<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>334</td></tr>
-<tr class="b">
+<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>335</td></tr>
-<tr class="a">
+<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>343</td></tr>
-<tr class="b">
+<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>352</td></tr>
-<tr class="a">
+<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>353</td></tr>
-<tr class="b">
+<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>475</td></tr>
-<tr class="a">
+<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>476</td></tr>
-<tr class="b">
+<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>539</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -73675,13 +73669,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreEngine.java">org/apache/hadoop/hbase/regionserver/StoreEngine.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -73690,25 +73684,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFile.java">org/apache/hadoop/hbase/regionserver/StoreFile.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.hfile.CacheConfig' import.</td>
 <td>30</td></tr>
-<tr class="b">
+<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>193</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -73717,19 +73711,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileComparators.java">org/apache/hadoop/hbase/regionserver/StoreFileComparators.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.util.Comparator' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -73738,145 +73732,145 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileInfo.java">org/apache/hadoop/hbase/regionserver/StoreFileInfo.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.FSDataInputStreamWrapper' import.</td>
 <td>36</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>124</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>135</td></tr>
-<tr class="a">
+<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>178</td></tr>
-<tr class="b">
+<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>179</td></tr>
-<tr class="a">
+<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>180</td></tr>
-<tr class="b">
+<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>181</td></tr>
-<tr class="a">
+<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>182</td></tr>
-<tr class="b">
+<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>197</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>471</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>485</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>534</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>535</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>537</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>540</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>541</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>542</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>545</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>546</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>547</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>550</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>551</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -73885,19 +73879,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileManager.java">org/apache/hadoop/hbase/regionserver/StoreFileManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Cell' import.</td>
 <td>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -73906,31 +73900,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileReader.java">org/apache/hadoop/hbase/regionserver/StoreFileReader.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting' import.</td>
 <td>53</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>466</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>486</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -73939,67 +73933,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Scan' import.</td>
 <td>39</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>208</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>235</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>291</td></tr>
-<tr class="b">
+<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>302</td></tr>
-<tr class="a">
+<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>303</td></tr>
-<tr class="b">
+<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>305</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>446</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>495</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74008,109 +74002,109 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileWriter.java">org/apache/hadoop/hbase/regionserver/StoreFileWriter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>23</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.hfile.CacheConfig' import.</td>
 <td>40</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'member def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td>75</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'member def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td>76</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def rcurly' have incorrect indentation level 4, expected level should be 2.</td>
 <td>99</td></tr>
-<tr class="b">
+<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>110</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def modifier' have incorrect indentation level 4, expected level should be 2.</td>
 <td>116</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>149</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>150</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>151</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>152</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>153</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>154</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>155</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td>156</td></tr>
-<tr class="b">
+<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>363</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -74119,37 +74113,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFlushContext.java">org/apache/hadoop/hbase/regionserver/StoreFlushContext.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.monitoring.MonitoredTask' import.</td>
 <td>26</td></tr>
-<tr class="b">
+<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>62</td></tr>
-<tr class="a">
+<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>63</td></tr>
-<tr class="b">
+<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>73</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -74158,25 +74152,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFlusher.java">org/apache/hadoop/hbase/regionserver/StoreFlusher.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.monitoring.MonitoredTask' import.</td>
 <td>33</td></tr>
-<tr class="b">
+<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>76</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -74185,163 +74179,163 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreScanner.java">org/apache/hadoop/hbase/regionserver/StoreScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.IsolationLevel' import.</td>
 <td>42</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting' import.</td>
 <td>55</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child have incorrect indentation level 5, expected level should be 4.</td>
 <td>179</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child have incorrect indentation level 5, expected level should be 4.</td>
 <td>180</td></tr>
-<tr class="a">
+<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>224</td></tr>
-<tr class="b">
+<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>373</td></tr>
-<tr class="a">
+<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>374</td></tr>
-<tr class="b">
+<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>377</td></tr>
-<tr class="a">
+<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>514</td></tr>
-<tr class="b">
+<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>515</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 192 lines (max allowed is 150).</td>
 <td>518</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>701</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>808</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>829</td></tr>
-<tr class="a">
+<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 109).</td>
 <td>847</td></tr>
-<tr class="b">
+<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 120).</td>
 <td>879</td></tr>
-<tr class="a">
+<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>934</td></tr>
-<tr class="b">
+<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>935</td></tr>
-<tr class="a">
+<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>936</td></tr>
-<tr class="b">
+<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>937</td></tr>
-<tr class="a">
+<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>953</td></tr>
-<tr class="b">
+<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>955</td></tr>
-<tr class="a">
+<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>1058</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1062</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1099</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74350,25 +74344,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreUtils.java">org/apache/hadoop/hbase/regionserver/StoreUtils.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>36</td></tr>
-<tr class="a">
+<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>105</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -74377,25 +74371,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StorefileRefresherChore.java">org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner' import.</td>
 <td>31</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>94</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -74404,19 +74398,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeMultiFileWriter.java">org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74425,13 +74419,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeStoreConfig.java">org/apache/hadoop/hbase/regionserver/StripeStoreConfig.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -74440,13 +74434,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeStoreEngine.java">org/apache/hadoop/hbase/regionserver/StripeStoreEngine.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -74455,127 +74449,127 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeStoreFileManager.java">org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.regionserver.compactions.StripeCompactionPolicy' import.</td>
 <td>43</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableCollection' import.</td>
 <td>48</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'stripeEndRows' must be private and have accessor methods.</td>
 <td>96</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'stripeFiles' must be private and have accessor methods.</td>
 <td>103</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'level0Files' must be private and have accessor methods.</td>
 <td>105</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'allFilesCached' must be private and have accessor methods.</td>
 <td>108</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>239</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>268</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>281</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>512</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>513</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>517</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>587</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>595</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>736</td></tr>
-<tr class="b">
+<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 107).</td>
 <td>901</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>918</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>922</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>964</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74584,19 +74578,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StripeStoreFlusher.java">org/apache/hadoop/hbase/regionserver/StripeStoreFlusher.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>31</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -74605,43 +74599,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.TimeRangeTracker.java">org/apache/hadoop/hbase/regionserver/TimeRangeTracker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.TimeRange' import.</td>
 <td>29</td></tr>
-<tr class="b">
+<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>143</td></tr>
-<tr class="a">
+<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 

<TRUNCATED>

[30/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
Published site at .


Project: http://git-wip-us.apache.org/repos/asf/hbase-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase-site/commit/2bb8bd01
Tree: http://git-wip-us.apache.org/repos/asf/hbase-site/tree/2bb8bd01
Diff: http://git-wip-us.apache.org/repos/asf/hbase-site/diff/2bb8bd01

Branch: refs/heads/asf-site
Commit: 2bb8bd01caf5746f5a92dba9d5b133005d3c3769
Parents: d0a296b
Author: jenkins <bu...@apache.org>
Authored: Mon Sep 18 15:12:52 2017 +0000
Committer: jenkins <bu...@apache.org>
Committed: Mon Sep 18 15:12:52 2017 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    6 +-
 book.html                                       |    2 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       | 4134 ++++++++--------
 checkstyle.rss                                  |    6 +-
 coc.html                                        |    4 +-
 cygwin.html                                     |    4 +-
 dependencies.html                               |    4 +-
 dependency-convergence.html                     |    4 +-
 dependency-info.html                            |    4 +-
 dependency-management.html                      |    4 +-
 devapidocs/constant-values.html                 |    6 +-
 devapidocs/index-all.html                       |   48 -
 .../hadoop/hbase/backup/package-tree.html       |    4 +-
 .../hbase/class-use/MetaMutationAnnotation.html |   34 -
 .../hadoop/hbase/client/class-use/Mutation.html |   27 +-
 .../hadoop/hbase/client/package-tree.html       |   24 +-
 .../hbase/coprocessor/RegionServerObserver.html |  215 +-
 .../coprocessor/class-use/ObserverContext.html  |  446 +-
 .../RegionServerCoprocessorEnvironment.html     |   94 +-
 .../hadoop/hbase/executor/package-tree.html     |    2 +-
 .../hadoop/hbase/filter/package-tree.html       |   10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    8 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |    4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    2 +-
 .../hadoop/hbase/master/package-tree.html       |    6 +-
 .../hadoop/hbase/monitoring/package-tree.html   |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   16 +-
 .../org/apache/hadoop/hbase/package-use.html    |   26 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    6 +-
 .../hadoop/hbase/quotas/package-tree.html       |    6 +-
 ...cessorHost.CoprocessOperationWithResult.html |   10 +-
 ...verCoprocessorHost.CoprocessorOperation.html |   10 +-
 ...essorHost.EnvironmentPriorityComparator.html |    6 +-
 ...CoprocessorHost.RegionServerEnvironment.html |   14 +-
 .../RegionServerCoprocessorHost.html            |  183 +-
 .../hbase/regionserver/class-use/HRegion.html   |   47 +-
 .../hbase/regionserver/class-use/Region.html    |   90 -
 .../hadoop/hbase/regionserver/package-tree.html |   14 +-
 .../replication/regionserver/package-tree.html  |    2 +-
 .../hbase/security/access/AccessController.html |  472 +-
 .../hadoop/hbase/security/class-use/User.html   |   43 +-
 .../hadoop/hbase/security/package-tree.html     |    2 +-
 ...ibilityController.VisibilityReplication.html |    2 +-
 .../hadoop/hbase/thrift/package-tree.html       |    2 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    8 +-
 .../org/apache/hadoop/hbase/Version.html        |    6 +-
 .../hbase/coprocessor/RegionServerObserver.html |  264 +-
 ...cessorHost.CoprocessOperationWithResult.html |  695 ++-
 ...verCoprocessorHost.CoprocessorOperation.html |  695 ++-
 ...essorHost.EnvironmentPriorityComparator.html |  695 ++-
 ...CoprocessorHost.RegionServerEnvironment.html |  695 ++-
 .../RegionServerCoprocessorHost.html            |  695 ++-
 .../access/AccessController.OpType.html         |  373 +-
 .../hbase/security/access/AccessController.html |  373 +-
 export_control.html                             |    4 +-
 hbase-annotations/dependencies.html             |    4 +-
 hbase-annotations/dependency-convergence.html   |    4 +-
 hbase-annotations/dependency-info.html          |    4 +-
 hbase-annotations/dependency-management.html    |    4 +-
 hbase-annotations/index.html                    |    4 +-
 hbase-annotations/integration.html              |    4 +-
 hbase-annotations/issue-tracking.html           |    4 +-
 hbase-annotations/license.html                  |    4 +-
 hbase-annotations/mail-lists.html               |    4 +-
 hbase-annotations/plugin-management.html        |    4 +-
 hbase-annotations/plugins.html                  |    4 +-
 hbase-annotations/project-info.html             |    4 +-
 hbase-annotations/project-summary.html          |    4 +-
 hbase-annotations/source-repository.html        |    4 +-
 hbase-annotations/team-list.html                |    4 +-
 hbase-build-configuration/dependencies.html     |    4 +-
 .../dependency-convergence.html                 |    4 +-
 hbase-build-configuration/dependency-info.html  |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-archetypes/dependencies.html          |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../hbase-archetypes/dependency-info.html       |    4 +-
 .../hbase-archetypes/dependency-management.html |    4 +-
 .../hbase-archetype-builder/dependencies.html   |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../dependency-info.html                        |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-archetype-builder/index.html          |    4 +-
 .../hbase-archetype-builder/integration.html    |    4 +-
 .../hbase-archetype-builder/issue-tracking.html |    4 +-
 .../hbase-archetype-builder/license.html        |    4 +-
 .../hbase-archetype-builder/mail-lists.html     |    4 +-
 .../plugin-management.html                      |    4 +-
 .../hbase-archetype-builder/plugins.html        |    4 +-
 .../hbase-archetype-builder/project-info.html   |    4 +-
 .../project-summary.html                        |    4 +-
 .../source-repository.html                      |    4 +-
 .../hbase-archetype-builder/team-list.html      |    4 +-
 .../hbase-client-project/checkstyle.html        |    4 +-
 .../hbase-client-project/dependencies.html      |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../hbase-client-project/dependency-info.html   |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-client-project/index.html             |    4 +-
 .../hbase-client-project/integration.html       |    4 +-
 .../hbase-client-project/issue-tracking.html    |    4 +-
 .../hbase-client-project/license.html           |    4 +-
 .../hbase-client-project/mail-lists.html        |    4 +-
 .../hbase-client-project/plugin-management.html |    4 +-
 .../hbase-client-project/plugins.html           |    4 +-
 .../hbase-client-project/project-info.html      |    4 +-
 .../hbase-client-project/project-reports.html   |    4 +-
 .../hbase-client-project/project-summary.html   |    4 +-
 .../hbase-client-project/source-repository.html |    4 +-
 .../hbase-client-project/team-list.html         |    4 +-
 .../hbase-shaded-client-project/checkstyle.html |    4 +-
 .../dependencies.html                           |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../dependency-info.html                        |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-shaded-client-project/index.html      |    4 +-
 .../integration.html                            |    4 +-
 .../issue-tracking.html                         |    4 +-
 .../hbase-shaded-client-project/license.html    |    4 +-
 .../hbase-shaded-client-project/mail-lists.html |    4 +-
 .../plugin-management.html                      |    4 +-
 .../hbase-shaded-client-project/plugins.html    |    4 +-
 .../project-info.html                           |    4 +-
 .../project-reports.html                        |    4 +-
 .../project-summary.html                        |    4 +-
 .../source-repository.html                      |    4 +-
 .../hbase-shaded-client-project/team-list.html  |    4 +-
 .../hbase-archetypes/index.html                 |    4 +-
 .../hbase-archetypes/integration.html           |    4 +-
 .../hbase-archetypes/issue-tracking.html        |    4 +-
 .../hbase-archetypes/license.html               |    4 +-
 .../hbase-archetypes/mail-lists.html            |    4 +-
 .../hbase-archetypes/plugin-management.html     |    4 +-
 .../hbase-archetypes/plugins.html               |    4 +-
 .../hbase-archetypes/project-info.html          |    4 +-
 .../hbase-archetypes/project-summary.html       |    4 +-
 .../hbase-archetypes/source-repository.html     |    4 +-
 .../hbase-archetypes/team-list.html             |    4 +-
 .../hbase-spark/checkstyle.html                 |    4 +-
 .../hbase-spark/dependencies.html               |    4 +-
 .../hbase-spark/dependency-convergence.html     |    4 +-
 .../hbase-spark/dependency-info.html            |    4 +-
 .../hbase-spark/dependency-management.html      |    4 +-
 .../hbase-spark/index.html                      |    4 +-
 .../hbase-spark/integration.html                |    4 +-
 .../hbase-spark/issue-tracking.html             |    4 +-
 .../hbase-spark/license.html                    |    4 +-
 .../hbase-spark/mail-lists.html                 |    4 +-
 .../hbase-spark/plugin-management.html          |    4 +-
 .../hbase-spark/plugins.html                    |    4 +-
 .../hbase-spark/project-info.html               |    4 +-
 .../hbase-spark/project-reports.html            |    4 +-
 .../hbase-spark/project-summary.html            |    4 +-
 .../hbase-spark/source-repository.html          |    4 +-
 .../hbase-spark/team-list.html                  |    4 +-
 hbase-build-configuration/index.html            |    4 +-
 hbase-build-configuration/integration.html      |    4 +-
 hbase-build-configuration/issue-tracking.html   |    4 +-
 hbase-build-configuration/license.html          |  208 +-
 hbase-build-configuration/mail-lists.html       |    4 +-
 .../plugin-management.html                      |    4 +-
 hbase-build-configuration/plugins.html          |    4 +-
 hbase-build-configuration/project-info.html     |    4 +-
 hbase-build-configuration/project-summary.html  |    4 +-
 .../source-repository.html                      |    4 +-
 hbase-build-configuration/team-list.html        |    4 +-
 hbase-shaded-check-invariants/checkstyle.html   |    4 +-
 hbase-shaded-check-invariants/dependencies.html |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../dependency-info.html                        |    4 +-
 .../dependency-management.html                  |    4 +-
 hbase-shaded-check-invariants/index.html        |    4 +-
 hbase-shaded-check-invariants/integration.html  |    4 +-
 .../issue-tracking.html                         |    4 +-
 hbase-shaded-check-invariants/license.html      |    4 +-
 hbase-shaded-check-invariants/mail-lists.html   |    4 +-
 .../plugin-management.html                      |    4 +-
 hbase-shaded-check-invariants/plugins.html      |    4 +-
 hbase-shaded-check-invariants/project-info.html |    4 +-
 .../project-reports.html                        |    4 +-
 .../project-summary.html                        |    4 +-
 .../source-repository.html                      |    4 +-
 hbase-shaded-check-invariants/team-list.html    |    4 +-
 index.html                                      |    4 +-
 integration.html                                |    4 +-
 issue-tracking.html                             |    4 +-
 license.html                                    |    4 +-
 mail-lists.html                                 |    4 +-
 metrics.html                                    |    4 +-
 old_news.html                                   |    4 +-
 plugin-management.html                          |    4 +-
 plugins.html                                    |    4 +-
 poweredbyhbase.html                             |    4 +-
 project-info.html                               |    4 +-
 project-reports.html                            |    4 +-
 project-summary.html                            |    4 +-
 pseudo-distributed.html                         |    4 +-
 replication.html                                |    4 +-
 resources.html                                  |    4 +-
 source-repository.html                          |    4 +-
 sponsors.html                                   |    4 +-
 supportingprojects.html                         |    4 +-
 team-list.html                                  |    4 +-
 testdevapidocs/index-all.html                   |    4 -
 ...stJMXConnectorServer.MyAccessController.html |    2 +-
 .../hadoop/hbase/backup/package-tree.html       |    2 +-
 ...essorMetrics.CustomRegionServerObserver.html |    2 +-
 .../TestNamespaceAuditor.CPMasterObserver.html  |   10 +-
 ...NamespaceAuditor.CPRegionServerObserver.html |   42 +-
 .../TestNamespaceAuditor.CustomObserver.html    |   10 +-
 ...TestNamespaceAuditor.MasterSyncObserver.html |   14 +-
 .../hbase/namespace/TestNamespaceAuditor.html   |   54 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   10 +-
 .../hadoop/hbase/procedure/package-tree.html    |    8 +-
 ...nServerAbort.StopBlockingRegionObserver.html |    2 +-
 .../hadoop/hbase/regionserver/package-tree.html |    4 +-
 .../TestAccessController.BulkLoadHelper.html    |   16 +-
 .../TestAccessController.PingCoprocessor.html   |   20 +-
 .../security/access/TestAccessController.html   |  230 +-
 ...estAccessController2.MyAccessController.html |    2 +-
 ...ccessController3.FaultyAccessController.html |    2 +-
 .../access/TestWithDisabledAuthorization.html   |    4 +-
 .../apache/hadoop/hbase/test/package-tree.html  |    4 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    2 +-
 .../TestNamespaceAuditor.CPMasterObserver.html  | 1291 +++--
 ...NamespaceAuditor.CPRegionServerObserver.html | 1291 +++--
 .../TestNamespaceAuditor.CustomObserver.html    | 1291 +++--
 ...TestNamespaceAuditor.MasterSyncObserver.html | 1291 +++--
 .../hbase/namespace/TestNamespaceAuditor.html   | 1291 +++--
 .../TestAccessController.BulkLoadHelper.html    | 4635 +++++++++---------
 .../TestAccessController.PingCoprocessor.html   | 4635 +++++++++---------
 ...tAccessController.TestTableDDLProcedure.html | 4635 +++++++++---------
 .../security/access/TestAccessController.html   | 4635 +++++++++---------
 .../access/TestWithDisabledAuthorization.html   |  445 +-
 236 files changed, 17680 insertions(+), 19566 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 4c70901..13de367 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -606,7 +606,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index cda1a6c..b5249b3 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.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20170917144641+00'00')
-/CreationDate (D:20170917144641+00'00')
+/ModDate (D:20170918144631+00'00')
+/CreationDate (D:20170918144631+00'00')
 >>
 endobj
 2 0 obj
@@ -27334,7 +27334,7 @@ endobj
 endobj
 136 0 obj
 << /Limits [(__anchor-top) (adding.new.node)]
-/Names [(__anchor-top) 25 0 R (__indexterm-6978776) 3266 0 R (__indexterm-6981026) 3268 0 R (__indexterm-6983088) 3269 0 R (__indexterm-6984962) 3270 0 R (acid) 894 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3365 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3366 0 R (add.metrics) 3363 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3604 0 R (adding.new.node) 2863 0 R]
+/Names [(__anchor-top) 25 0 R (__indexterm-6978774) 3266 0 R (__indexterm-6981024) 3268 0 R (__indexterm-6983086) 3269 0 R (__indexterm-6984960) 3270 0 R (acid) 894 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3365 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3366 0 R (add.metrics) 3363 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3604 0 R (adding.new.node) 2863 0 R]
 >>
 endobj
 137 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 9ff86e4..95861d3 100644
--- a/book.html
+++ b/book.html
@@ -35195,7 +35195,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2017-09-17 14:29:36 UTC
+Last updated 2017-09-18 14:29:35 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 29d3d29..20ad721 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -311,7 +311,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 


[18/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html
index 36f4c8d..ec36d2e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html
@@ -38,395 +38,326 @@
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.CoprocessorEnvironment;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.MetaMutationAnnotation;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.User;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.49"></a>
-<span class="sourceLineNo">050</span>@InterfaceStability.Evolving<a name="line.50"></a>
-<span class="sourceLineNo">051</span>public class RegionServerCoprocessorHost extends<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.52"></a>
+<span class="sourceLineNo">033</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.metrics.MetricRegistry;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.replication.ReplicationEndpoint;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.User;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.47"></a>
+<span class="sourceLineNo">048</span>@InterfaceStability.Evolving<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class RegionServerCoprocessorHost extends<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    CoprocessorHost&lt;RegionServerCoprocessorHost.RegionServerEnvironment&gt; {<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.52"></a>
 <span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  private static final Log LOG = LogFactory.getLog(RegionServerCoprocessorHost.class);<a name="line.54"></a>
+<span class="sourceLineNo">054</span>  private RegionServerServices rsServices;<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private RegionServerServices rsServices;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      Configuration conf) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    super(rsServices);<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    this.rsServices = rsServices;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    this.conf = conf;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    LOG.info("Table coprocessor loading is " +<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  @Override<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      sequence, conf, this.rsServices);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public void preStop(String message, User user) throws IOException {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // coprocessor should be cleaned up.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      public void call(RegionServerObserver oserver,<a name="line.88"></a>
-<span class="sourceLineNo">089</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        oserver.preStopRegionServer(ctx);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      @Override<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        // invoke coprocessor stop method<a name="line.94"></a>
-<span class="sourceLineNo">095</span>        shutdown(env);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      }<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    });<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public boolean preMerge(final HRegion regionA, final HRegion regionB, final User user) throws IOException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      @Override<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      public void call(RegionServerObserver oserver,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        oserver.preMerge(ctx, regionA, regionB);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      }<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    });<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public void postMerge(final HRegion regionA, final HRegion regionB, final HRegion mergedRegion,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>                        final User user)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      throws IOException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      @Override<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      public void call(RegionServerObserver oserver,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        oserver.postMerge(ctx, regionA, regionB, mergedRegion);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    });<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public boolean preMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      final @MetaMutationAnnotation List&lt;Mutation&gt; metaEntries, final User user)<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      throws IOException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      public void call(RegionServerObserver oserver,<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        oserver.preMergeCommit(ctx, regionA, regionB, metaEntries);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    });<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public void postMergeCommit(final HRegion regionA, final HRegion regionB,<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      final HRegion mergedRegion, final User user) throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      @Override<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      public void call(RegionServerObserver oserver,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        oserver.postMergeCommit(ctx, regionA, regionB, mergedRegion);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    });<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public void preRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      throws IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      public void call(RegionServerObserver oserver,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        oserver.preRollBackMerge(ctx, regionA, regionB);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    });<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  public void postRollBackMerge(final HRegion regionA, final HRegion regionB, final User user)<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      throws IOException {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      public void call(RegionServerObserver oserver,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        oserver.postRollBackMerge(ctx, regionA, regionB);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      }<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    });<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      @Override<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      public void call(RegionServerObserver oserver,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    });<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      @Override<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      public void call(RegionServerObserver oserver,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    });<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
+<span class="sourceLineNo">056</span>  public RegionServerCoprocessorHost(RegionServerServices rsServices,<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      Configuration conf) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    super(rsServices);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    this.rsServices = rsServices;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    this.conf = conf;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    // Log the state of coprocessor loading here; should appear only once or<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    // twice in the daemon log, depending on HBase version, because there is<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    // only one RegionServerCoprocessorHost instance in the RS process<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    boolean tableCoprocessorsEnabled = conf.getBoolean(USER_COPROCESSORS_ENABLED_CONF_KEY,<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      DEFAULT_USER_COPROCESSORS_ENABLED);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    LOG.info("System coprocessor loading is " + (coprocessorsEnabled ? "enabled" : "disabled"));<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    LOG.info("Table coprocessor loading is " +<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      ((coprocessorsEnabled &amp;&amp; tableCoprocessorsEnabled) ? "enabled" : "disabled"));<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    loadSystemCoprocessors(conf, REGIONSERVER_COPROCESSOR_CONF_KEY);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public RegionServerEnvironment createEnvironment(Class&lt;?&gt; implClass,<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      Coprocessor instance, int priority, int sequence, Configuration conf) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return new RegionServerEnvironment(implClass, instance, priority,<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      sequence, conf, this.rsServices);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public void preStop(String message, User user) throws IOException {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // While stopping the region server all coprocessors method should be executed first then the<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    // coprocessor should be cleaned up.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    execShutdown(coprocessors.isEmpty() ? null : new CoprocessorOperation(user) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      public void call(RegionServerObserver oserver,<a name="line.86"></a>
+<span class="sourceLineNo">087</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        oserver.preStopRegionServer(ctx);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      }<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      public void postEnvCall(RegionServerEnvironment env) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        // invoke coprocessor stop method<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        shutdown(env);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    });<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public void preRollWALWriterRequest() throws IOException {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      @Override<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      public void call(RegionServerObserver oserver,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        oserver.preRollWALWriterRequest(ctx);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    });<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void postRollWALWriterRequest() throws IOException {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      @Override<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      public void call(RegionServerObserver oserver,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        oserver.postRollWALWriterRequest(ctx);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    });<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      throws IOException {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      public void call(RegionServerObserver oserver,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    });<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      throws IOException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      public void call(RegionServerObserver oserver,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    });<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      throws IOException {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          public void call(RegionServerObserver oserver,<a name="line.145"></a>
+<span class="sourceLineNo">146</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        });<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public void preClearCompactionQueues() throws IOException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      public void call(RegionServerObserver oserver,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        oserver.preClearCompactionQueues(ctx);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    });<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public void postClearCompactionQueues() throws IOException {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      public void call(RegionServerObserver oserver,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        oserver.postClearCompactionQueues(ctx);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    });<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    if (ctx == null)<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      return defaultValue;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    ctx.setResult(defaultValue);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    execOperation(ctx);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    return ctx.getResult();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  private static abstract class CoprocessorOperation<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    public CoprocessorOperation() {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      this(RpcServer.getRequestUser());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
 <span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void preReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      @Override<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      public void call(RegionServerObserver oserver,<a name="line.191"></a>
-<span class="sourceLineNo">192</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        oserver.preReplicateLogEntries(ctx, entries, cells);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    });<a name="line.195"></a>
+<span class="sourceLineNo">187</span>    public CoprocessorOperation(User user) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      super(user);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public abstract void call(RegionServerObserver oserver,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
 <span class="sourceLineNo">196</span>  }<a name="line.196"></a>
 <span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  public void postReplicateLogEntries(final List&lt;WALEntry&gt; entries, final CellScanner cells)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      throws IOException {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      @Override<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      public void call(RegionServerObserver oserver,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        oserver.postReplicateLogEntries(ctx, entries, cells);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    });<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  public ReplicationEndpoint postCreateReplicationEndPoint(final ReplicationEndpoint endpoint)<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      throws IOException {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    return execOperationWithResult(endpoint, coprocessors.isEmpty() ? null<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        : new CoprocessOperationWithResult&lt;ReplicationEndpoint&gt;() {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          @Override<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          public void call(RegionServerObserver oserver,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>              ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>            setResult(oserver.postCreateReplicationEndPoint(ctx, getResult()));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>          }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        });<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  public void preClearCompactionQueues() throws IOException {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      @Override<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      public void call(RegionServerObserver oserver,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        oserver.preClearCompactionQueues(ctx);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    });<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public void postClearCompactionQueues() throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    execOperation(coprocessors.isEmpty() ? null : new CoprocessorOperation() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      public void call(RegionServerObserver oserver,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>                       ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        oserver.postClearCompactionQueues(ctx);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    });<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private &lt;T&gt; T execOperationWithResult(final T defaultValue,<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      final CoprocessOperationWithResult&lt;T&gt; ctx) throws IOException {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    if (ctx == null)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return defaultValue;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    ctx.setResult(defaultValue);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    execOperation(ctx);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    return ctx.getResult();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  private static abstract class CoprocessorOperation<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      extends ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public CoprocessorOperation() {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      this(RpcServer.getRequestUser());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public CoprocessorOperation(User user) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(user);<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>    public abstract void call(RegionServerObserver oserver,<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx) throws IOException;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public void postEnvCall(RegionServerEnvironment env) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  }<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    private T result = null;<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    public void setResult(final T result) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.result = result;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public T getResult() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return this.result;<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (ctx == null) return false;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    boolean bypass = false;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      RegionServerEnvironment env = envs.get(i);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        ctx.prepare(env);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        Thread currentThread = Thread.currentThread();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        try {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        } catch (Throwable e) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          handleCoprocessorThrowable(env, e);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        } finally {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          currentThread.setContextClassLoader(cl);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        bypass |= ctx.shouldBypass();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        if (ctx.shouldComplete()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          break;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      ctx.postEnvCall(env);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return bypass;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * RegionServer stop. (Refer:<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param ctx CoprocessorOperation<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @throws IOException<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (ctx == null) return false;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    boolean bypass = false;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    int envsSize = envs.size();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      RegionServerEnvironment env = envs.get(i);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        ctx.prepare(env);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        Thread currentThread = Thread.currentThread();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        try {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        } catch (Throwable e) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          handleCoprocessorThrowable(env, e);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        } finally {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>          currentThread.setContextClassLoader(cl);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        bypass |= ctx.shouldBypass();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        if (ctx.shouldComplete()) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          break;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">198</span>  private static abstract class CoprocessOperationWithResult&lt;T&gt; extends CoprocessorOperation {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    private T result = null;<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    public void setResult(final T result) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      this.result = result;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public T getResult() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return this.result;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>  private boolean execOperation(final CoprocessorOperation ctx) throws IOException {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    if (ctx == null) return false;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    boolean bypass = false;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    for (int i = 0; i &lt; envs.size(); i++) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      RegionServerEnvironment env = envs.get(i);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        ctx.prepare(env);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        Thread currentThread = Thread.currentThread();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          ctx.call((RegionServerObserver)env.getInstance(), ctx);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        } catch (Throwable e) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          handleCoprocessorThrowable(env, e);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        } finally {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>          currentThread.setContextClassLoader(cl);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        bypass |= ctx.shouldBypass();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        if (ctx.shouldComplete()) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          break;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ctx.postEnvCall(env);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    return bypass;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * RegionServer coprocessor classes can be configured in any order, based on that priority is set<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * and chained in a sorted order. For preStop(), coprocessor methods are invoked in call() and<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   * environment is shutdown in postEnvCall(). &lt;br&gt;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Need to execute all coprocessor methods first then postEnvCall(), otherwise some coprocessors<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * may remain shutdown if any exception occurs during next coprocessor execution which prevent<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * RegionServer stop. (Refer:<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * &lt;a href="https://issues.apache.org/jira/browse/HBASE-16663"&gt;HBASE-16663&lt;/a&gt;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * @param ctx CoprocessorOperation<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * @return true if bypaas coprocessor execution, false if not.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * @throws IOException<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  private boolean execShutdown(final CoprocessorOperation ctx) throws IOException {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    if (ctx == null) return false;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    boolean bypass = false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    List&lt;RegionServerEnvironment&gt; envs = coprocessors.get();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    int envsSize = envs.size();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    // Iterate the coprocessors and execute CoprocessorOperation's call()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      RegionServerEnvironment env = envs.get(i);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      if (env.getInstance() instanceof RegionServerObserver) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        ctx.prepare(env);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Thread currentThread = Thread.currentThread();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        ClassLoader cl = currentThread.getContextClassLoader();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          currentThread.setContextClassLoader(env.getClassLoader());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          ctx.call((RegionServerObserver) env.getInstance(), ctx);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        } catch (Throwable e) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          handleCoprocessorThrowable(env, e);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        } finally {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          currentThread.setContextClassLoader(cl);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        bypass |= ctx.shouldBypass();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        if (ctx.shouldComplete()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          break;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      }<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>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      RegionServerEnvironment env = envs.get(i);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      ctx.postEnvCall(env);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    return bypass;<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>  /**<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * Coprocessor environment extension providing access to region server<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * related services.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      implements RegionServerCoprocessorEnvironment {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    private final RegionServerServices regionServerServices;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    private final MetricRegistry metricRegistry;<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        final Configuration conf, final RegionServerServices services) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      super(impl, priority, seq, conf);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      this.regionServerServices = services;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          this.regionServerServices.registerService(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          break;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      this.metricRegistry =<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    @Override<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    public RegionServerServices getRegionServerServices() {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      return regionServerServices;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      return metricRegistry;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    @Override<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    protected void shutdown() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      super.shutdown();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<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>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * order.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  static class EnvironmentPriorityComparator implements<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        final CoprocessorEnvironment env2) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        return -1;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        return 1;<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><a name="line.345"></a>
-<span class="sourceLineNo">346</span>    // Iterate the coprocessors and execute CoprocessorOperation's postEnvCall()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    for (int i = 0; i &lt; envsSize; i++) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      RegionServerEnvironment env = envs.get(i);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      ctx.postEnvCall(env);<a name="line.349"></a>
+<span class="sourceLineNo">344</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        return -1;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        return 1;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      return 0;<a name="line.349"></a>
 <span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return bypass;<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>   * Coprocessor environment extension providing access to region server<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * related services.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  static class RegionServerEnvironment extends CoprocessorHost.Environment<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      implements RegionServerCoprocessorEnvironment {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    private final RegionServerServices regionServerServices;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    private final MetricRegistry metricRegistry;<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="BC_UNCONFIRMED_CAST",<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        justification="Intentional; FB has trouble detecting isAssignableFrom")<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RegionServerEnvironment(final Class&lt;?&gt; implClass,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        final Coprocessor impl, final int priority, final int seq,<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        final Configuration conf, final RegionServerServices services) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      super(impl, priority, seq, conf);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      this.regionServerServices = services;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      for (Object itf : ClassUtils.getAllInterfaces(implClass)) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        Class&lt;?&gt; c = (Class&lt;?&gt;) itf;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        if (SingletonCoprocessorService.class.isAssignableFrom(c)) {// FindBugs: BC_UNCONFIRMED_CAST<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          this.regionServerServices.registerService(<a name="line.373"></a>
-<span class="sourceLineNo">374</span>            ((SingletonCoprocessorService) impl).getService());<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          break;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      this.metricRegistry =<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          MetricsCoprocessor.createRegistryForRSCoprocessor(implClass.getName());<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    public RegionServerServices getRegionServerServices() {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      return regionServerServices;<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>    @Override<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    public MetricRegistry getMetricRegistryForRegionServer() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      return metricRegistry;<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>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    protected void shutdown() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      super.shutdown();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      MetricsCoprocessor.removeRegistry(metricRegistry);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Environment priority comparator. Coprocessors are chained in sorted<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * order.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  static class EnvironmentPriorityComparator implements<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    @Override<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        final CoprocessorEnvironment env2) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        return -1;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        return 1;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        return -1;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        return 1;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      return 0;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    }<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">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>}<a name="line.352"></a>
 
 
 


[27/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html
index 02dbe8f..b51998f 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":18,"i1":18,"i2":18,"i3":18,"i4":18,"i5":18,"i6":18,"i7":18,"i8":18,"i9":18,"i10":18,"i11":18,"i12":18,"i13":18};
+var methods = {"i0":18,"i1":18,"i2":18,"i3":18,"i4":18,"i5":18,"i6":18,"i7":18};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],16:["t5","Default Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -111,7 +111,7 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Coprocesssor")
  @InterfaceStability.Evolving
-public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.62">RegionServerObserver</a>
+public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.59">RegionServerObserver</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a></pre>
 <div class="block">Defines coprocessor hooks for interacting with operations on the
  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegionServer</code></a> process.
@@ -199,68 +199,25 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 </tr>
 <tr id="i2" class="altColor">
 <td class="colFirst"><code>default void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-         <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-         <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-         <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">called after the regions merge.</div>
-</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-               <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-               <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-               <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">This will be called after PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">postReplicateLogEntries</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                        <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)</code>
 <div class="block">This will be called after executing replication request to shipping log entries.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">This will be called after the roll back of the regions merge.</div>
-</td>
-</tr>
-<tr id="i6" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postRollWALWriterRequest</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called after executing user request to roll a region server WAL.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearCompactionQueues</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called before clearing compaction queues</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-        <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-        <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">Called before the regions merge.</div>
-</td>
-</tr>
-<tr id="i9" class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>
-<div class="block">This will be called before PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr id="i10" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">preReplicateLogEntries</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
@@ -268,21 +225,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 <div class="block">This will be called before executing replication request to shipping log entries.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preRollBackMerge</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">This will be called before the roll back of the regions merge.</div>
-</td>
-</tr>
-<tr id="i12" class="altColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preRollWALWriterRequest</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called before executing user request to roll a region server WAL.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preStopRegionServer-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preStopRegionServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">Called before stopping region server.</div>
@@ -316,7 +265,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>preStopRegionServer</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.67">preStopRegionServer</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.64">preStopRegionServer</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
                           throws <a href="http://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">Called before stopping region server.</div>
 <dl>
@@ -327,147 +276,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 </dl>
 </li>
 </ul>
-<a name="preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>preMerge</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.77">preMerge</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)
-               throws <a href="http://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">Called before the regions merge.
- Call <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#bypass--"><code>ObserverContext.bypass()</code></a> to skip the merge.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>ctx</code> - the environment to interact with the framework and region server.</dd>
-<dd><code>regionA</code> - region being merged.</dd>
-<dd><code>regionB</code> - region being merged.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>postMerge</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.86">postMerge</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)
-                throws <a href="http://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">called after the regions merge.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>ctx</code> - the environment to interact with the framework and region server.</dd>
-<dd><code>regionA</code> - region being merged.</dd>
-<dd><code>regionB</code> - region being merged.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>preMergeCommit</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.98">preMergeCommit</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-                            <a href="../../../../../org/apache/hadoop/hbase/MetaMutationAnnotation.html" title="annotation in org.apache.hadoop.hbase">@MetaMutationAnnotation</a>
-                            <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)
-                     throws <a href="http://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">This will be called before PONR step as part of regions merge transaction. Calling
- <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#bypass--"><code>ObserverContext.bypass()</code></a> rollback the merge</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>ctx</code> - the environment to interact with the framework and region server.</dd>
-<dd><code>regionA</code> - region being merged.</dd>
-<dd><code>regionB</code> - region being merged.</dd>
-<dd><code>metaEntries</code> - mutations to execute on hbase:meta atomically with regions merge updates.
-        Any puts or deletes to execute on hbase:meta can be added to the mutations.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>postMergeCommit</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.108">postMergeCommit</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)
-                      throws <a href="http://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">This will be called after PONR step as part of regions merge transaction.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>ctx</code> - the environment to interact with the framework and region server.</dd>
-<dd><code>regionA</code> - region being merged.</dd>
-<dd><code>regionB</code> - region being merged.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="preRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>preRollBackMerge</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.117">preRollBackMerge</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)
-                       throws <a href="http://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">This will be called before the roll back of the regions merge.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>ctx</code> - the environment to interact with the framework and region server.</dd>
-<dd><code>regionA</code> - region being merged.</dd>
-<dd><code>regionB</code> - region being merged.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>postRollBackMerge</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.126">postRollBackMerge</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                               <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                               <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)
-                        throws <a href="http://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">This will be called after the roll back of the regions merge.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>ctx</code> - the environment to interact with the framework and region server.</dd>
-<dd><code>regionA</code> - region being merged.</dd>
-<dd><code>regionB</code> - region being merged.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
-</li>
-</ul>
 <a name="preRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>preRollWALWriterRequest</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.133">preRollWALWriterRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.71">preRollWALWriterRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
                               throws <a href="http://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">This will be called before executing user request to roll a region server WAL.</div>
 <dl>
@@ -484,7 +299,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>postRollWALWriterRequest</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.141">postRollWALWriterRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.79">postRollWALWriterRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
                                throws <a href="http://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">This will be called after executing user request to roll a region server WAL.</div>
 <dl>
@@ -501,7 +316,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>postCreateReplicationEndPoint</h4>
-<pre>default&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.151">postCreateReplicationEndPoint</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
+<pre>default&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.89">postCreateReplicationEndPoint</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                                                           <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;endpoint)</pre>
 <div class="block">This will be called after the replication endpoint is instantiated.</div>
 <dl>
@@ -519,7 +334,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>preReplicateLogEntries</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.162">preReplicateLogEntries</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.100">preReplicateLogEntries</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                                     <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -540,7 +355,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>postReplicateLogEntries</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.171">postReplicateLogEntries</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.109">postReplicateLogEntries</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                                      <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -561,7 +376,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 <ul class="blockList">
 <li class="blockList">
 <h4>preClearCompactionQueues</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.179">preClearCompactionQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.117">preClearCompactionQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
                                throws <a href="http://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">This will be called before clearing compaction queues</div>
 <dl>
@@ -578,7 +393,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title=
 <ul class="blockListLast">
 <li class="blockList">
 <h4>postClearCompactionQueues</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.187">postClearCompactionQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#line.125">postClearCompactionQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
                                 throws <a href="http://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">This will be called after clearing compaction queues</div>
 <dl>


[04/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html
index 6899321..da046b2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html
@@ -865,2376 +865,2351 @@
 <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>  @Test (timeout=180000)<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  public void testMergeRegions() throws Exception {<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    createTestTable(tableName);<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    try {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>      final List&lt;HRegion&gt; regions = TEST_UTIL.getHBaseCluster().findRegionsForTable(tableName);<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      assertTrue("not enough regions: " + regions.size(), regions.size() &gt;= 2);<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>      AccessTestAction action = new AccessTestAction() {<a name="line.867"></a>
-<span class="sourceLineNo">868</span>        @Override<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        public Object run() throws Exception {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>          ACCESS_CONTROLLER.preMerge(ObserverContext.createAndPrepare(RSCP_ENV, null),<a name="line.870"></a>
-<span class="sourceLineNo">871</span>            regions.get(0), regions.get(1));<a name="line.871"></a>
-<span class="sourceLineNo">872</span>          return null;<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        }<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      };<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>      verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      verifyDenied(action, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    } finally {<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      deleteTable(TEST_UTIL, tableName);<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    }<a name="line.881"></a>
-<span class="sourceLineNo">882</span>  }<a name="line.882"></a>
-<span class="sourceLineNo">883</span><a name="line.883"></a>
-<span class="sourceLineNo">884</span>  @Test (timeout=180000)<a name="line.884"></a>
-<span class="sourceLineNo">885</span>  public void testFlush() throws Exception {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    AccessTestAction action = new AccessTestAction() {<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      @Override<a name="line.887"></a>
-<span class="sourceLineNo">888</span>      public Object run() throws Exception {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.889"></a>
-<span class="sourceLineNo">890</span>        return null;<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    };<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      USER_GROUP_ADMIN);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<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>  @Test (timeout=180000)<a name="line.899"></a>
-<span class="sourceLineNo">900</span>  public void testCompact() throws Exception {<a name="line.900"></a>
-<span class="sourceLineNo">901</span>    AccessTestAction action = new AccessTestAction() {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      @Override<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      public Object run() throws Exception {<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        ACCESS_CONTROLLER.preCompact(ObserverContext.createAndPrepare(RCP_ENV, null), null, null,<a name="line.904"></a>
-<span class="sourceLineNo">905</span>          ScanType.COMPACT_RETAIN_DELETES, null);<a name="line.905"></a>
-<span class="sourceLineNo">906</span>        return null;<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>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      USER_GROUP_ADMIN);<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<a name="line.912"></a>
-<span class="sourceLineNo">913</span>  }<a name="line.913"></a>
-<span class="sourceLineNo">914</span><a name="line.914"></a>
-<span class="sourceLineNo">915</span>  private void verifyRead(AccessTestAction action) throws Exception {<a name="line.915"></a>
-<span class="sourceLineNo">916</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW, USER_RO,<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      USER_GROUP_READ);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    verifyDenied(action, USER_NONE, USER_GROUP_CREATE, USER_GROUP_ADMIN, USER_GROUP_WRITE);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>  }<a name="line.919"></a>
-<span class="sourceLineNo">920</span><a name="line.920"></a>
-<span class="sourceLineNo">921</span>  private void verifyReadWrite(AccessTestAction action) throws Exception {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    verifyDenied(action, USER_NONE, USER_RO, USER_GROUP_ADMIN, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        USER_GROUP_WRITE);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>  }<a name="line.925"></a>
-<span class="sourceLineNo">926</span><a name="line.926"></a>
-<span class="sourceLineNo">927</span>  @Test (timeout=180000)<a name="line.927"></a>
-<span class="sourceLineNo">928</span>  public void testRead() throws Exception {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>    // get action<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    AccessTestAction getAction = new AccessTestAction() {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>      @Override<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      public Object run() throws Exception {<a name="line.932"></a>
-<span class="sourceLineNo">933</span>        Get g = new Get(TEST_ROW);<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        g.addFamily(TEST_FAMILY);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.935"></a>
-<span class="sourceLineNo">936</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.936"></a>
-<span class="sourceLineNo">937</span>          t.get(g);<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        }<a name="line.938"></a>
-<span class="sourceLineNo">939</span>        return null;<a name="line.939"></a>
-<span class="sourceLineNo">940</span>      }<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    };<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    verifyRead(getAction);<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>    // action for scanning<a name="line.944"></a>
-<span class="sourceLineNo">945</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      @Override<a name="line.946"></a>
-<span class="sourceLineNo">947</span>      public Object run() throws Exception {<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        Scan s = new Scan();<a name="line.948"></a>
-<span class="sourceLineNo">949</span>        s.addFamily(TEST_FAMILY);<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>            Table table = conn.getTable(TEST_TABLE)) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>          ResultScanner scanner = table.getScanner(s);<a name="line.952"></a>
-<span class="sourceLineNo">953</span>          try {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>            for (Result r = scanner.next(); r != null; r = scanner.next()) {<a name="line.954"></a>
-<span class="sourceLineNo">955</span>              // do nothing<a name="line.955"></a>
-<span class="sourceLineNo">956</span>            }<a name="line.956"></a>
-<span class="sourceLineNo">957</span>          } finally {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>            scanner.close();<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>        return null;<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      }<a name="line.962"></a>
-<span class="sourceLineNo">963</span>    };<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    verifyRead(scanAction);<a name="line.964"></a>
-<span class="sourceLineNo">965</span>  }<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>  @Test (timeout=180000)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>  // test put, delete, increment<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  public void testWrite() throws Exception {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    // put action<a name="line.970"></a>
-<span class="sourceLineNo">971</span>    AccessTestAction putAction = new AccessTestAction() {<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      @Override<a name="line.972"></a>
-<span class="sourceLineNo">973</span>      public Object run() throws Exception {<a name="line.973"></a>
-<span class="sourceLineNo">974</span>        Put p = new Put(TEST_ROW);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.975"></a>
-<span class="sourceLineNo">976</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.976"></a>
-<span class="sourceLineNo">977</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.977"></a>
-<span class="sourceLineNo">978</span>          t.put(p);<a name="line.978"></a>
-<span class="sourceLineNo">979</span>        }<a name="line.979"></a>
-<span class="sourceLineNo">980</span>        return null;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>      }<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    };<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    verifyWrite(putAction);<a name="line.983"></a>
-<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span>    // delete action<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    AccessTestAction deleteAction = new AccessTestAction() {<a name="line.986"></a>
-<span class="sourceLineNo">987</span>      @Override<a name="line.987"></a>
-<span class="sourceLineNo">988</span>      public Object run() throws Exception {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>        Delete d = new Delete(TEST_ROW);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>        d.addFamily(TEST_FAMILY);<a name="line.990"></a>
-<span class="sourceLineNo">991</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.992"></a>
-<span class="sourceLineNo">993</span>          t.delete(d);<a name="line.993"></a>
-<span class="sourceLineNo">994</span>        }<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        return null;<a name="line.995"></a>
-<span class="sourceLineNo">996</span>      }<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    };<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    verifyWrite(deleteAction);<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    // increment action<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>    AccessTestAction incrementAction = new AccessTestAction() {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>      @Override<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      public Object run() throws Exception {<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>        Increment inc = new Increment(TEST_ROW);<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>        inc.addColumn(TEST_FAMILY, TEST_QUALIFIER, 1);<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>          t.increment(inc);<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>        }<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        return null;<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>    verifyWrite(incrementAction);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  @Test (timeout=180000)<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  public void testReadWrite() throws Exception {<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>    // action for checkAndDelete<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    AccessTestAction checkAndDeleteAction = new AccessTestAction() {<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      @Override<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      public Object run() throws Exception {<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>        Delete d = new Delete(TEST_ROW);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>        d.addFamily(TEST_FAMILY);<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          t.checkAndDelete(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>              Bytes.toBytes("test_value"), d);<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>        }<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>        return null;<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      }<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    };<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    verifyReadWrite(checkAndDeleteAction);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span><a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    // action for checkAndPut()<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    AccessTestAction checkAndPut = new AccessTestAction() {<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      @Override<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      public Object run() throws Exception {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>        Put p = new Put(TEST_ROW);<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>          t.checkAndPut(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>              Bytes.toBytes("test_value"), p);<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>        }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>        return null;<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>      }<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>    };<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>    verifyReadWrite(checkAndPut);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>  }<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span><a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>  @Test (timeout=180000)<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>  public void testBulkLoad() throws Exception {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    try {<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>      FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      final Path dir = TEST_UTIL.getDataTestDirOnTestFS("testBulkLoad");<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>      fs.mkdirs(dir);<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      // need to make it globally writable<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      // so users creating HFiles have write permissions<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>      fs.setPermission(dir, FsPermission.valueOf("-rwxrwxrwx"));<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span><a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>      AccessTestAction bulkLoadAction = new AccessTestAction() {<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>        @Override<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>        public Object run() throws Exception {<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>          int numRows = 3;<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span><a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>          // Making the assumption that the test table won't split between the range<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>          byte[][][] hfileRanges = { { { (byte) 0 }, { (byte) 9 } } };<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>          Path bulkLoadBasePath = new Path(dir, new Path(User.getCurrent().getName()));<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>          new BulkLoadHelper(bulkLoadBasePath).bulkLoadHFile(TEST_TABLE, TEST_FAMILY,<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>            TEST_QUALIFIER, hfileRanges, numRows);<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span><a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>          return null;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>        }<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      };<a name="line.1075"></a>
+<span class="sourceLineNo">860</span>  public void testFlush() throws Exception {<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    AccessTestAction action = new AccessTestAction() {<a name="line.861"></a>
+<span class="sourceLineNo">862</span>      @Override<a name="line.862"></a>
+<span class="sourceLineNo">863</span>      public Object run() throws Exception {<a name="line.863"></a>
+<span class="sourceLineNo">864</span>        ACCESS_CONTROLLER.preFlush(ObserverContext.createAndPrepare(RCP_ENV, null));<a name="line.864"></a>
+<span class="sourceLineNo">865</span>        return null;<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>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      USER_GROUP_ADMIN);<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<a name="line.871"></a>
+<span class="sourceLineNo">872</span>  }<a name="line.872"></a>
+<span class="sourceLineNo">873</span><a name="line.873"></a>
+<span class="sourceLineNo">874</span>  @Test (timeout=180000)<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  public void testCompact() throws Exception {<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    AccessTestAction action = new AccessTestAction() {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>      @Override<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      public Object run() throws Exception {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>        ACCESS_CONTROLLER.preCompact(ObserverContext.createAndPrepare(RCP_ENV, null), null, null,<a name="line.879"></a>
+<span class="sourceLineNo">880</span>          ScanType.COMPACT_RETAIN_DELETES, null);<a name="line.880"></a>
+<span class="sourceLineNo">881</span>        return null;<a name="line.881"></a>
+<span class="sourceLineNo">882</span>      }<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    };<a name="line.883"></a>
+<span class="sourceLineNo">884</span><a name="line.884"></a>
+<span class="sourceLineNo">885</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_GROUP_CREATE,<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      USER_GROUP_ADMIN);<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    verifyDenied(action, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE);<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>  private void verifyRead(AccessTestAction action) throws Exception {<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW, USER_RO,<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      USER_GROUP_READ);<a name="line.892"></a>
+<span class="sourceLineNo">893</span>    verifyDenied(action, USER_NONE, USER_GROUP_CREATE, USER_GROUP_ADMIN, USER_GROUP_WRITE);<a name="line.893"></a>
+<span class="sourceLineNo">894</span>  }<a name="line.894"></a>
+<span class="sourceLineNo">895</span><a name="line.895"></a>
+<span class="sourceLineNo">896</span>  private void verifyReadWrite(AccessTestAction action) throws Exception {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>    verifyAllowed(action, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW);<a name="line.897"></a>
+<span class="sourceLineNo">898</span>    verifyDenied(action, USER_NONE, USER_RO, USER_GROUP_ADMIN, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.898"></a>
+<span class="sourceLineNo">899</span>        USER_GROUP_WRITE);<a name="line.899"></a>
+<span class="sourceLineNo">900</span>  }<a name="line.900"></a>
+<span class="sourceLineNo">901</span><a name="line.901"></a>
+<span class="sourceLineNo">902</span>  @Test (timeout=180000)<a name="line.902"></a>
+<span class="sourceLineNo">903</span>  public void testRead() throws Exception {<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    // get action<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    AccessTestAction getAction = new AccessTestAction() {<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      @Override<a name="line.906"></a>
+<span class="sourceLineNo">907</span>      public Object run() throws Exception {<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        Get g = new Get(TEST_ROW);<a name="line.908"></a>
+<span class="sourceLineNo">909</span>        g.addFamily(TEST_FAMILY);<a name="line.909"></a>
+<span class="sourceLineNo">910</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.911"></a>
+<span class="sourceLineNo">912</span>          t.get(g);<a name="line.912"></a>
+<span class="sourceLineNo">913</span>        }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>        return null;<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>    verifyRead(getAction);<a name="line.917"></a>
+<span class="sourceLineNo">918</span><a name="line.918"></a>
+<span class="sourceLineNo">919</span>    // action for scanning<a name="line.919"></a>
+<span class="sourceLineNo">920</span>    AccessTestAction scanAction = new AccessTestAction() {<a name="line.920"></a>
+<span class="sourceLineNo">921</span>      @Override<a name="line.921"></a>
+<span class="sourceLineNo">922</span>      public Object run() throws Exception {<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        Scan s = new Scan();<a name="line.923"></a>
+<span class="sourceLineNo">924</span>        s.addFamily(TEST_FAMILY);<a name="line.924"></a>
+<span class="sourceLineNo">925</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.925"></a>
+<span class="sourceLineNo">926</span>            Table table = conn.getTable(TEST_TABLE)) {<a name="line.926"></a>
+<span class="sourceLineNo">927</span>          ResultScanner scanner = table.getScanner(s);<a name="line.927"></a>
+<span class="sourceLineNo">928</span>          try {<a name="line.928"></a>
+<span class="sourceLineNo">929</span>            for (Result r = scanner.next(); r != null; r = scanner.next()) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>              // do nothing<a name="line.930"></a>
+<span class="sourceLineNo">931</span>            }<a name="line.931"></a>
+<span class="sourceLineNo">932</span>          } finally {<a name="line.932"></a>
+<span class="sourceLineNo">933</span>            scanner.close();<a name="line.933"></a>
+<span class="sourceLineNo">934</span>          }<a name="line.934"></a>
+<span class="sourceLineNo">935</span>        }<a name="line.935"></a>
+<span class="sourceLineNo">936</span>        return null;<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>    verifyRead(scanAction);<a name="line.939"></a>
+<span class="sourceLineNo">940</span>  }<a name="line.940"></a>
+<span class="sourceLineNo">941</span><a name="line.941"></a>
+<span class="sourceLineNo">942</span>  @Test (timeout=180000)<a name="line.942"></a>
+<span class="sourceLineNo">943</span>  // test put, delete, increment<a name="line.943"></a>
+<span class="sourceLineNo">944</span>  public void testWrite() throws Exception {<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    // put action<a name="line.945"></a>
+<span class="sourceLineNo">946</span>    AccessTestAction putAction = new AccessTestAction() {<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      @Override<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      public Object run() throws Exception {<a name="line.948"></a>
+<span class="sourceLineNo">949</span>        Put p = new Put(TEST_ROW);<a name="line.949"></a>
+<span class="sourceLineNo">950</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.951"></a>
+<span class="sourceLineNo">952</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>          t.put(p);<a name="line.953"></a>
+<span class="sourceLineNo">954</span>        }<a name="line.954"></a>
+<span class="sourceLineNo">955</span>        return null;<a name="line.955"></a>
+<span class="sourceLineNo">956</span>      }<a name="line.956"></a>
+<span class="sourceLineNo">957</span>    };<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    verifyWrite(putAction);<a name="line.958"></a>
+<span class="sourceLineNo">959</span><a name="line.959"></a>
+<span class="sourceLineNo">960</span>    // delete action<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    AccessTestAction deleteAction = new AccessTestAction() {<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      @Override<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      public Object run() throws Exception {<a name="line.963"></a>
+<span class="sourceLineNo">964</span>        Delete d = new Delete(TEST_ROW);<a name="line.964"></a>
+<span class="sourceLineNo">965</span>        d.addFamily(TEST_FAMILY);<a name="line.965"></a>
+<span class="sourceLineNo">966</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.967"></a>
+<span class="sourceLineNo">968</span>          t.delete(d);<a name="line.968"></a>
+<span class="sourceLineNo">969</span>        }<a name="line.969"></a>
+<span class="sourceLineNo">970</span>        return 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>    verifyWrite(deleteAction);<a name="line.973"></a>
+<span class="sourceLineNo">974</span><a name="line.974"></a>
+<span class="sourceLineNo">975</span>    // increment action<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    AccessTestAction incrementAction = new AccessTestAction() {<a name="line.976"></a>
+<span class="sourceLineNo">977</span>      @Override<a name="line.977"></a>
+<span class="sourceLineNo">978</span>      public Object run() throws Exception {<a name="line.978"></a>
+<span class="sourceLineNo">979</span>        Increment inc = new Increment(TEST_ROW);<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        inc.addColumn(TEST_FAMILY, TEST_QUALIFIER, 1);<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.981"></a>
+<span class="sourceLineNo">982</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.982"></a>
+<span class="sourceLineNo">983</span>          t.increment(inc);<a name="line.983"></a>
+<span class="sourceLineNo">984</span>        }<a name="line.984"></a>
+<span class="sourceLineNo">985</span>        return null;<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>    verifyWrite(incrementAction);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Test (timeout=180000)<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public void testReadWrite() throws Exception {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    // action for checkAndDelete<a name="line.993"></a>
+<span class="sourceLineNo">994</span>    AccessTestAction checkAndDeleteAction = new AccessTestAction() {<a name="line.994"></a>
+<span class="sourceLineNo">995</span>      @Override<a name="line.995"></a>
+<span class="sourceLineNo">996</span>      public Object run() throws Exception {<a name="line.996"></a>
+<span class="sourceLineNo">997</span>        Delete d = new Delete(TEST_ROW);<a name="line.997"></a>
+<span class="sourceLineNo">998</span>        d.addFamily(TEST_FAMILY);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>          t.checkAndDelete(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>              Bytes.toBytes("test_value"), d);<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>        }<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>        return null;<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>    verifyReadWrite(checkAndDeleteAction);<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span><a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    // action for checkAndPut()<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>    AccessTestAction checkAndPut = new AccessTestAction() {<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>      @Override<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>      public Object run() throws Exception {<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>        Put p = new Put(TEST_ROW);<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>        p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>            Table t = conn.getTable(TEST_TABLE);) {<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>          t.checkAndPut(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER,<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>              Bytes.toBytes("test_value"), p);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>        }<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>        return null;<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>      }<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    };<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    verifyReadWrite(checkAndPut);<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>  @Test (timeout=180000)<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>  public void testBulkLoad() throws Exception {<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>    try {<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>      FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>      final Path dir = TEST_UTIL.getDataTestDirOnTestFS("testBulkLoad");<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>      fs.mkdirs(dir);<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>      // need to make it globally writable<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>      // so users creating HFiles have write permissions<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>      fs.setPermission(dir, FsPermission.valueOf("-rwxrwxrwx"));<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span><a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>      AccessTestAction bulkLoadAction = new AccessTestAction() {<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>        @Override<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>        public Object run() throws Exception {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>          int numRows = 3;<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span><a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>          // Making the assumption that the test table won't split between the range<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>          byte[][][] hfileRanges = { { { (byte) 0 }, { (byte) 9 } } };<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span><a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>          Path bulkLoadBasePath = new Path(dir, new Path(User.getCurrent().getName()));<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>          new BulkLoadHelper(bulkLoadBasePath).bulkLoadHFile(TEST_TABLE, TEST_FAMILY,<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>            TEST_QUALIFIER, hfileRanges, numRows);<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span><a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>          return null;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>        }<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>      };<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span><a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>      // User performing bulk loads must have privilege to read table metadata<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>      // (ADMIN or CREATE)<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>      verifyAllowed(bulkLoadAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE,<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>        USER_GROUP_CREATE);<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>      verifyDenied(bulkLoadAction, USER_RW, USER_NONE, USER_RO, USER_GROUP_READ, USER_GROUP_WRITE,<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>        USER_GROUP_ADMIN);<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    } finally {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>      // Reinit after the bulk upload<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>      TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>    }<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>  }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span><a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>  public class BulkLoadHelper {<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    private final FileSystem fs;<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>    private final Path loadPath;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    private final Configuration conf;<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    public BulkLoadHelper(Path loadPath) throws IOException {<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>      fs = TEST_UTIL.getTestFileSystem();<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>      conf = TEST_UTIL.getConfiguration();<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>      loadPath = loadPath.makeQualified(fs);<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>      this.loadPath = loadPath;<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>    }<a name="line.1075"></a>
 <span class="sourceLineNo">1076</span><a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      // User performing bulk loads must have privilege to read table metadata<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>      // (ADMIN or CREATE)<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      verifyAllowed(bulkLoadAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE,<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>        USER_GROUP_CREATE);<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>      verifyDenied(bulkLoadAction, USER_RW, USER_NONE, USER_RO, USER_GROUP_READ, USER_GROUP_WRITE,<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>        USER_GROUP_ADMIN);<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    } finally {<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      // Reinit after the bulk upload<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>      TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>      TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<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><a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>  public class BulkLoadHelper {<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    private final FileSystem fs;<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    private final Path loadPath;<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>    private final Configuration conf;<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span><a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    public BulkLoadHelper(Path loadPath) throws IOException {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      fs = TEST_UTIL.getTestFileSystem();<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      conf = TEST_UTIL.getConfiguration();<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>      loadPath = loadPath.makeQualified(fs);<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      this.loadPath = loadPath;<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>    }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span><a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    private void createHFile(Path path,<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>        byte[] family, byte[] qualifier,<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>        byte[] startKey, byte[] endKey, int numRows) throws IOException {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      HFile.Writer writer = null;<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      long now = System.currentTimeMillis();<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>      try {<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>        HFileContext context = new HFileContextBuilder().build();<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>        writer = HFile.getWriterFactory(conf, new CacheConfig(conf))<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>            .withPath(fs, path)<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>            .withFileContext(context)<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>            .create();<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>        // subtract 2 since numRows doesn't include boundary keys<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>        for (byte[] key : Bytes.iterateOnSplits(startKey, endKey, true, numRows-2)) {<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>          KeyValue kv = new KeyValue(key, family, qualifier, now, key);<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>          writer.append(kv);<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>        }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>      } finally {<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>        if(writer != null)<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>          writer.close();<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>      }<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    }<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span><a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>    private void bulkLoadHFile(<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>        TableName tableName,<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>        byte[] family,<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        byte[] qualifier,<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>        byte[][][] hfileRanges,<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>        int numRowsPerRange) throws Exception {<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span><a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>      Path familyDir = new Path(loadPath, Bytes.toString(family));<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>      fs.mkdirs(familyDir);<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      int hfileIdx = 0;<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>      for (byte[][] range : hfileRanges) {<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>        byte[] from = range[0];<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>        byte[] to = range[1];<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>        createHFile(new Path(familyDir, "hfile_"+(hfileIdx++)),<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>            family, qualifier, from, to, numRowsPerRange);<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      }<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>      //set global read so RegionServer can move it<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      setPermission(loadPath, FsPermission.valueOf("-rwxrwxrwx"));<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>      try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>           Admin admin = conn.getAdmin();<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>           RegionLocator locator = conn.getRegionLocator(tableName);<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>           Table table = conn.getTable(tableName)) {<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>        TEST_UTIL.waitUntilAllRegionsAssigned(tableName);<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>        LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>        loader.doBulkLoad(loadPath, admin, table, locator);<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>      }<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>    }<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span><a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>    public void setPermission(Path dir, FsPermission perm) throws IOException {<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>      if(!fs.getFileStatus(dir).isDirectory()) {<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>        fs.setPermission(dir,perm);<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>      }<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>      else {<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>        for(FileStatus el : fs.listStatus(dir)) {<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>          fs.setPermission(el.getPath(), perm);<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>          setPermission(el.getPath() , perm);<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>        }<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>      }<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>    }<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>  }<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span><a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>  @Test (timeout=180000)<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>  public void testAppend() throws Exception {<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span><a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>    AccessTestAction appendAction = new AccessTestAction() {<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>      @Override<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>      public Object run() throws Exception {<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>        byte[] row = TEST_ROW;<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>        byte[] qualifier = TEST_QUALIFIER;<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>        Put put = new Put(row);<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>        put.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(1));<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>        Append append = new Append(row);<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>        append.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(2));<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>          t.put(put);<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>          t.append(append);<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>        }<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>        return null;<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>      }<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>    verifyAllowed(appendAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW,<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>      USER_GROUP_WRITE);<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    verifyDenied(appendAction, USER_RO, USER_NONE, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>      USER_GROUP_ADMIN);<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>  }<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span><a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>  @Test (timeout=180000)<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>  public void testGrantRevoke() throws Exception {<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>    AccessTestAction grantAction = new AccessTestAction() {<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      @Override<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>      public Object run() throws Exception {<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>          AccessControlService.BlockingInterface protocol =<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>            AccessControlService.newBlockingStub(service);<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>          AccessControlUtil.grant(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY,<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>              null, false, Action.READ);<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>        }<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>        return null;<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>      }<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>    };<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span><a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>    AccessTestAction revokeAction = new AccessTestAction() {<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>      @Override<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>      public Object run() throws Exception {<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>          AccessControlService.BlockingInterface protocol =<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>            AccessControlService.newBlockingStub(service);<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>          AccessControlUtil.revoke(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>            Action.READ);<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>        }<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>        return null;<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>      }<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>    };<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span><a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>    AccessTestAction getTablePermissionsAction = new AccessTestAction() {<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>      @Override<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>      public Object run() throws Exception {<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)){<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>          AccessControlService.BlockingInterface protocol =<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>              AccessControlService.newBlockingStub(service);<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>          AccessControlUtil.getUserPermissions(null, protocol, TEST_TABLE);<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>        }<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>        return null;<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>      }<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>    };<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span><a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>    AccessTestAction getGlobalPermissionsAction = new AccessTestAction() {<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      @Override<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      public Object run() throws Exception {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME);) {<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>          BlockingRpcChannel service = acl.coprocessorService(HConstants.EMPTY_START_ROW);<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>          AccessControlService.BlockingInterface protocol =<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>            AccessControlService.newBlockingStub(service);<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>          AccessControlUtil.getUserPermissions(null, protocol);<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>        }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>        return null;<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>      }<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    };<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span><a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>    verifyAllowed(grantAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>    verifyDenied(grantAction, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>    try {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>      verifyAllowed(revokeAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>      verifyDenied(revokeAction, USER_CREATE, USER_RW, USER_RO, USER_NONE, USER_GROUP_READ,<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>        USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span><a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>      verifyAllowed(getTablePermissionsAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_GROUP_ADMIN);<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>      verifyDenied(getTablePermissionsAction, USER_CREATE, USER_RW, USER_RO, USER_NONE,<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>        USER_GROUP_READ, USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span><a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>      verifyAllowed(getGlobalPermissionsAction, SUPERUSER, USER_ADMIN, USER_GROUP_ADMIN);<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>      verifyDenied(getGlobalPermissionsAction, USER_CREATE, USER_OWNER, USER_RW, USER_RO,<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>        USER_NONE, USER_GROUP_READ, USER_GROUP_WRITE, USER_GROUP_CREATE);<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>    } finally {<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>      // Cleanup, Grant the revoked permission back to the user<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>      grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>        Permission.Action.READ);<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>    }<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>  }<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span><a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>  @Test (timeout=180000)<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>  public void testPostGrantRevoke() throws Exception {<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    final TableName tableName =<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>        TableName.valueOf("TempTable");<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>    final byte[] family1 = Bytes.toBytes("f1");<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>    final byte[] family2 = Bytes.toBytes("f2");<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>    final byte[] qualifier = Bytes.toBytes("q");<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span><a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>    // create table<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>    Admin admin = TEST_UTIL.getAdmin();<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>    if (admin.tableExists(tableName)) {<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>      deleteTable(TEST_UTIL, tableName);<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>    }<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    htd.addFamily(new HColumnDescriptor(family1));<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>    htd.addFamily(new HColumnDescriptor(family2));<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>    createTable(TEST_UTIL, htd);<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>    try {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>      // create temp users<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>      User tblUser =<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>          User.createUserForTesting(TEST_UTIL.getConfiguration(), "tbluser", new String[0]);<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>      User gblUser =<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>          User.createUserForTesting(TEST_UTIL.getConfiguration(), "gbluser", new String[0]);<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span><a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>      // prepare actions:<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>      AccessTestAction putActionAll = new AccessTestAction() {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>        @Override<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>        public Object run() throws Exception {<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>          p.addColumn(family1, qualifier, Bytes.toBytes("v1"));<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>          p.addColumn(family2, qualifier, Bytes.toBytes("v2"));<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span><a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>              Table t = conn.getTable(tableName);) {<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>            t.put(p);<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>          }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>          return null;<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>        }<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>      };<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span><a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>      AccessTestAction putAction1 = new AccessTestAction() {<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>        @Override<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>        public Object run() throws Exception {<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>          p.addColumn(family1, qualifier, Bytes.toBytes("v1"));<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span><a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>              Table t = conn.getTable(tableName)) {<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>            t.put(p);<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>          }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>          return null;<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>        }<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>      };<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span><a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>      AccessTestAction putAction2 = new AccessTestAction() {<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>        @Override<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>        public Object run() throws Exception {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>          Put p = new Put(Bytes.toBytes("a"));<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>          p.addColumn(family2, qualifier, Bytes.toBytes("v2"));<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>              Table t = conn.getTable(tableName);) {<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>            t.put(p);<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>          }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>          return null;<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>        }<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>      };<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span><a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      AccessTestAction getActionAll = new AccessTestAction() {<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>        @Override<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>        public Object run() throws Exception {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>          Get g = new Get(TEST_ROW);<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>          g.addFamily(family1);<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>          g.addFamily(family2);<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>              Table t = conn.getTable(tableName);) {<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>            t.get(g);<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>          }<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>          return null;<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>        }<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>      };<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span><a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>      AccessTestAction getAction1 = new AccessTestAction() {<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>        @Override<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>        public Object run() throws Exception {<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>          Get g = new Get(TEST_ROW);<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>          g.addFamily(family1);<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>              Table t = conn.getTable(tableName)) {<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>            t.get(g);<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>          }<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>          return null;<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>        }<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      };<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span><a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      AccessTestAction getAction2 = new AccessTestAction() {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>        @Override<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>        public Object run() throws Exception {<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>          Get g = new Get(TEST_ROW);<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>          g.addFamily(family2);<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>              Table t = conn.getTable(tableName)) {<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>            t.get(g);<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>          }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>          return null;<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>        }<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>      AccessTestAction deleteActionAll = new AccessTestAction() {<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>        @Override<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>        public Object run() throws Exception {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>          Delete d = new Delete(TEST_ROW);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>          d.addFamily(family1);<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>          d.addFamily(family2);<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>              Table t = conn.getTable(tableName)) {<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>            t.delete(d);<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>          }<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>          return null;<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        }<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>      };<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span><a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>      AccessTestAction deleteAction1 = new AccessTestAction() {<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>        @Override<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>        public Object run() throws Exception {<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          Delete d = new Delete(TEST_ROW);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>          d.addFamily(family1);<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>              Table t = conn.getTable(tableName)) {<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>            t.delete(d);<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>          }<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          return null;<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>        }<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>      };<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>      AccessTestAction deleteAction2 = new AccessTestAction() {<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>        @Override<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        public Object run() throws Exception {<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>          Delete d = new Delete(TEST_ROW);<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>          d.addFamily(family2);<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>          try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>              Table t = conn.getTable(tableName)) {<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>            t.delete(d);<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>          }<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>          return null;<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>        }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>      };<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span><a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>      // initial check:<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>      verifyDenied(tblUser, getActionAll, getAction1, getAction2);<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>      verifyDenied(tblUser, putActionAll, putAction1, putAction2);<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>      verifyDenied(tblUser, deleteActionAll, deleteAction1, deleteAction2);<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span><a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>      verifyDenied(gblUser, getActionAll, getAction1, getAction2);<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>      verifyDenied(gblUser, putActionAll, putAction1, putAction2);<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>      verifyDenied(gblUser, deleteActionAll, deleteAction1, deleteAction2);<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span><a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>      // grant table read permission<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>      grantGlobal(TEST_UTIL, gblUser.getShortName(), Permission.Action.READ);<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>      grantOnTable(TEST_UTIL, tblUser.getShortName(), tableName, null, null, Permission.Action.READ);<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span><a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>      // check<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>      verifyAllowed(tblUser, getActionAll, getAction1, getAction2);<a name="line.1438"></a>
+<span class="sourceLineNo">1077</span>    private void createHFile(Path path,<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>        byte[] family, byte[] qualifier,<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>        byte[] startKey, byte[] endKey, int numRows) throws IOException {<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span><a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      HFile.Writer writer = null;<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>      long now = System.currentTimeMillis();<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      try {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>        HFileContext context = new HFileContextBuilder().build();<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>        writer = HFile.getWriterFactory(conf, new CacheConfig(conf))<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>            .withPath(fs, path)<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>            .withFileContext(context)<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>            .create();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>        // subtract 2 since numRows doesn't include boundary keys<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>        for (byte[] key : Bytes.iterateOnSplits(startKey, endKey, true, numRows-2)) {<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>          KeyValue kv = new KeyValue(key, family, qualifier, now, key);<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span>          writer.append(kv);<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>        }<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>      } finally {<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>        if(writer != null)<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>          writer.close();<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>      }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>    }<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span><a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>    private void bulkLoadHFile(<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>        TableName tableName,<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>        byte[] family,<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>        byte[] qualifier,<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span>        byte[][][] hfileRanges,<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>        int numRowsPerRange) throws Exception {<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span><a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>      Path familyDir = new Path(loadPath, Bytes.toString(family));<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>      fs.mkdirs(familyDir);<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>      int hfileIdx = 0;<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>      for (byte[][] range : hfileRanges) {<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span>        byte[] from = range[0];<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>        byte[] to = range[1];<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>        createHFile(new Path(familyDir, "hfile_"+(hfileIdx++)),<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>            family, qualifier, from, to, numRowsPerRange);<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>      }<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>      //set global read so RegionServer can move it<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>      setPermission(loadPath, FsPermission.valueOf("-rwxrwxrwx"));<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>      try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>           Admin admin = conn.getAdmin();<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>           RegionLocator locator = conn.getRegionLocator(tableName);<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>           Table table = conn.getTable(tableName)) {<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>        TEST_UTIL.waitUntilAllRegionsAssigned(tableName);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>        LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span>        loader.doBulkLoad(loadPath, admin, table, locator);<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>      }<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>    }<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span><a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>    public void setPermission(Path dir, FsPermission perm) throws IOException {<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>      if(!fs.getFileStatus(dir).isDirectory()) {<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>        fs.setPermission(dir,perm);<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>      }<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>      else {<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>        for(FileStatus el : fs.listStatus(dir)) {<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>          fs.setPermission(el.getPath(), perm);<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>          setPermission(el.getPath() , perm);<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>        }<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>      }<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>    }<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>  }<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span><a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>  @Test (timeout=180000)<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>  public void testAppend() throws Exception {<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span><a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>    AccessTestAction appendAction = new AccessTestAction() {<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>      @Override<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>      public Object run() throws Exception {<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>        byte[] row = TEST_ROW;<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span>        byte[] qualifier = TEST_QUALIFIER;<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>        Put put = new Put(row);<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>        put.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(1));<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>        Append append = new Append(row);<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span>        append.addColumn(TEST_FAMILY, qualifier, Bytes.toBytes(2));<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>            Table t = conn.getTable(TEST_TABLE)) {<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>          t.put(put);<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>          t.append(append);<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>        }<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>        return null;<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>      }<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>    };<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span><a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>    verifyAllowed(appendAction, SUPERUSER, USER_ADMIN, USER_OWNER, USER_CREATE, USER_RW,<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>      USER_GROUP_WRITE);<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span>    verifyDenied(appendAction, USER_RO, USER_NONE, USER_GROUP_CREATE, USER_GROUP_READ,<a name="line.1166"></a>
+<span class="sourceLineNo">1167</span>      USER_GROUP_ADMIN);<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span>  }<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span><a name="line.1169"></a>
+<span class="sourceLineNo">1170</span>  @Test (timeout=180000)<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span>  public void testGrantRevoke() throws Exception {<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span>    AccessTestAction grantAction = new AccessTestAction() {<a name="line.1172"></a>
+<span class="sourceLineNo">1173</span>      @Override<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span>      public Object run() throws Exception {<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span>        try(Connection conn = ConnectionFactory.createConnection(conf);<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span>            Table acl = conn.getTable(AccessControlLists.ACL_TABLE_NAME)) {<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span>          BlockingRpcChannel service = acl.coprocessorService(TEST_TABLE.getName());<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span>          AccessControlService.BlockingInterface protocol =<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span>            AccessControlService.newBlockingStub(service);<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span>          AccessControlUtil.grant(null, protocol, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY,<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span>              null, false, Action.READ);<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span>        }<a name="line.1182"></a>
+<span class="sourceLineNo">1183</span>        return null;<a name="line.1183"></a>
+<span class="sourceLineNo">1184<

<TRUNCATED>

[25/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/RegionServerCoprocessorEnvironment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/RegionServerCoprocessorEnvironment.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/RegionServerCoprocessorEnvironment.html
index cbc4043..eb5a24c 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/RegionServerCoprocessorEnvironment.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/class-use/RegionServerCoprocessorEnvironment.html
@@ -131,24 +131,6 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">called after the regions merge.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>
-<div class="block">This will be called after PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">postReplicateLogEntries</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                        <a href="../../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)</code>
@@ -157,57 +139,24 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">This will be called after the roll back of the regions merge.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#postRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postRollWALWriterRequest</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called after executing user request to roll a region server WAL.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearCompactionQueues</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
 <div class="block">This will be called before clearing compaction queues</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">Called before the regions merge.</div>
-</td>
-</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>
-<div class="block">This will be called before PONR step as part of regions merge transaction.</div>
-</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">preReplicateLogEntries</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                       <a href="../../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)</code>
 <div class="block">This will be called before executing replication request to shipping log entries.</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>default void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>
-<div class="block">This will be called before the roll back of the regions merge.</div>
-</td>
-</tr>
 <tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#preRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preRollWALWriterRequest</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>
@@ -276,63 +225,24 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;c,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-               <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;mergedRegion)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">postReplicateLogEntries</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                        <a href="../../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">postRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#postRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">postRollWALWriterRequest</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearCompactionQueues</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>&nbsp;</td>
-</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preClearCompactionQueues-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preClearCompactionQueues</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preMergeCommit-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-java.util.List-">preMergeCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB,
-              <a href="http://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/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;metaEntries)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preReplicateLogEntries-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-org.apache.hadoop.hbase.CellScanner-">preReplicateLogEntries</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                       <a href="../../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preRollBackMerge-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.regionserver.Region-">preRollBackMerge</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionA,
-                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;regionB)</code>&nbsp;</td>
-</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">AccessController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.html#preRollWALWriterRequest-org.apache.hadoop.hbase.coprocessor.ObserverContext-">preRollWALWriterRequest</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index bbf68db..5bdab95 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -104,8 +104,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index 318362f..0d860df 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -175,14 +175,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 2013f04..e69dc4d 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,12 +273,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
index c426e00..007957e 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -341,9 +341,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index eae0dc1..29fb14b 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -293,8 +293,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index a582859..aa3653d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -316,11 +316,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index d264c19..c43c370 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -125,8 +125,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index 0c7004c..e52f86a 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -429,18 +429,18 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterStatus.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterStatus.Option</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ProcedureState.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterStatus.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterStatus.Option</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-use.html b/devapidocs/org/apache/hadoop/hbase/package-use.html
index 146d8a3..3ced178 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-use.html
@@ -2961,68 +2961,62 @@ service.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/MetaMutationAnnotation.html#org.apache.hadoop.hbase.regionserver">MetaMutationAnnotation</a>
-<div class="block">The field or the parameter to which this annotation can be applied only when it
- holds mutations for hbase:meta table.</div>
-</td>
-</tr>
-<tr class="altColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/NoTagsByteBufferKeyValue.html#org.apache.hadoop.hbase.regionserver">NoTagsByteBufferKeyValue</a>
 <div class="block">An extension of the ByteBufferKeyValue where the tags length is always 0</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/NotServingRegionException.html#org.apache.hadoop.hbase.regionserver">NotServingRegionException</a>
 <div class="block">Thrown by a region server if it is sent a request for a region it is not
  serving.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/RegionTooBusyException.html#org.apache.hadoop.hbase.regionserver">RegionTooBusyException</a>
 <div class="block">Thrown by a region server if it will block and wait to serve a request.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/ScheduledChore.html#org.apache.hadoop.hbase.regionserver">ScheduledChore</a>
 <div class="block">ScheduledChore is a task performed on a period in hbase.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/Server.html#org.apache.hadoop.hbase.regionserver">Server</a>
 <div class="block">Defines the set of shared functions implemented by HBase servers (Masters
  and RegionServers).</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/ServerName.html#org.apache.hadoop.hbase.regionserver">ServerName</a>
 <div class="block">Name of a particular incarnation of an HBase Server.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/SettableSequenceId.html#org.apache.hadoop.hbase.regionserver">SettableSequenceId</a>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
 <div class="block"><span class="deprecationComment">as of 2.0 and will be removed in 3.0. Use <a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html" title="interface in org.apache.hadoop.hbase"><code>ExtendedCell</code></a> instead</span></div>
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/SettableTimestamp.html#org.apache.hadoop.hbase.regionserver">SettableTimestamp</a>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
 <div class="block"><span class="deprecationComment">as of 2.0 and will be removed in 3.0. Use <a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html" title="interface in org.apache.hadoop.hbase"><code>ExtendedCell</code></a> instead</span></div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/Stoppable.html#org.apache.hadoop.hbase.regionserver">Stoppable</a>
 <div class="block">Implementers are Stoppable.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/TableDescriptors.html#org.apache.hadoop.hbase.regionserver">TableDescriptors</a>
 <div class="block">Get, remove and modify table descriptors.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/TableName.html#org.apache.hadoop.hbase.regionserver">TableName</a>
 <div class="block">Immutable POJO class for representing a table name.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 8a3a89d..90074eb 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -203,11 +203,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index 0d87368..701ffe2 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -201,12 +201,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html
index 5156337..b083091 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.267">RegionServerCoprocessorHost.CoprocessOperationWithResult</a>&lt;T&gt;
+<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.198">RegionServerCoprocessorHost.CoprocessOperationWithResult</a>&lt;T&gt;
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.CoprocessorOperation</a></pre>
 </li>
 </ul>
@@ -231,7 +231,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>result</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html" title="type parameter in RegionServerCoprocessorHost.CoprocessOperationWithResult">T</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html#line.268">result</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html" title="type parameter in RegionServerCoprocessorHost.CoprocessOperationWithResult">T</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html#line.199">result</a></pre>
 </li>
 </ul>
 </li>
@@ -248,7 +248,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CoprocessOperationWithResult</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html#line.267">CoprocessOperationWithResult</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html#line.198">CoprocessOperationWithResult</a>()</pre>
 </li>
 </ul>
 </li>
@@ -267,7 +267,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServe
 <ul class="blockList">
 <li class="blockList">
 <h4>setResult</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html#line.270">setResult</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html" title="type parameter in RegionServerCoprocessorHost.CoprocessOperationWithResult">T</a>&nbsp;result)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html#line.201">setResult</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html" title="type parameter in RegionServerCoprocessorHost.CoprocessOperationWithResult">T</a>&nbsp;result)</pre>
 </li>
 </ul>
 <a name="getResult--">
@@ -276,7 +276,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getResult</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html" title="type parameter in RegionServerCoprocessorHost.CoprocessOperationWithResult">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html#line.274">getResult</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html" title="type parameter in RegionServerCoprocessorHost.CoprocessOperationWithResult">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessOperationWithResult.html#line.205">getResult</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html
index 88c0841..bef4eca 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.250">RegionServerCoprocessorHost.CoprocessorOperation</a>
+<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.181">RegionServerCoprocessorHost.CoprocessorOperation</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;</pre>
 </li>
 </ul>
@@ -206,7 +206,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockList">
 <li class="blockList">
 <h4>CoprocessorOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html#line.252">CoprocessorOperation</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html#line.183">CoprocessorOperation</a>()</pre>
 </li>
 </ul>
 <a name="CoprocessorOperation-org.apache.hadoop.hbase.security.User-">
@@ -215,7 +215,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CoprocessorOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html#line.256">CoprocessorOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html#line.187">CoprocessorOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</pre>
 </li>
 </ul>
 </li>
@@ -232,7 +232,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockList">
 <li class="blockList">
 <h4>call</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html#line.260">call</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a>&nbsp;oserver,
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html#line.191">call</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerObserver</a>&nbsp;oserver,
                           <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a>&gt;&nbsp;ctx)
                    throws <a href="http://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>
@@ -247,7 +247,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverCont
 <ul class="blockListLast">
 <li class="blockList">
 <h4>postEnvCall</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html#line.263">postEnvCall</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.RegionServerEnvironment</a>&nbsp;env)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.CoprocessorOperation.html#line.194">postEnvCall</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.RegionServerEnvironment</a>&nbsp;env)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html
index 79a2cdd..f1b3495 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.403">RegionServerCoprocessorHost.EnvironmentPriorityComparator</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.334">RegionServerCoprocessorHost.EnvironmentPriorityComparator</a>
 extends <a href="http://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="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&gt;</pre>
 <div class="block">Environment priority comparator. Coprocessors are chained in sorted
@@ -197,7 +197,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>EnvironmentPriorityComparator</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html#line.403">EnvironmentPriorityComparator</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html#line.334">EnvironmentPriorityComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -214,7 +214,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html#line.406">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.EnvironmentPriorityComparator.html#line.337">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env1,
                    <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env2)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html
index ac323d7..ac070d8 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.358">RegionServerCoprocessorHost.RegionServerEnvironment</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html#line.289">RegionServerCoprocessorHost.RegionServerEnvironment</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.Environment</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionServerCoprocessorEnvironment</a></pre>
 <div class="block">Coprocessor environment extension providing access to region server
@@ -257,7 +257,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionSer
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerServices</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.360">regionServerServices</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.291">regionServerServices</a></pre>
 </li>
 </ul>
 <a name="metricRegistry">
@@ -266,7 +266,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionSer
 <ul class="blockListLast">
 <li class="blockList">
 <h4>metricRegistry</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/metrics/MetricRegistry.html" title="interface in org.apache.hadoop.hbase.metrics">MetricRegistry</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.361">metricRegistry</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/metrics/MetricRegistry.html" title="interface in org.apache.hadoop.hbase.metrics">MetricRegistry</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.292">metricRegistry</a></pre>
 </li>
 </ul>
 </li>
@@ -283,7 +283,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionSer
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionServerEnvironment</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.365">RegionServerEnvironment</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.296">RegionServerEnvironment</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass,
                                <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&nbsp;impl,
                                int&nbsp;priority,
                                int&nbsp;seq,
@@ -305,7 +305,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionSer
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServerServices</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.383">getRegionServerServices</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.314">getRegionServerServices</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html#getRegionServerServices--">RegionServerCoprocessorEnvironment</a></code></span></div>
 <div class="block">Gets the region server services.</div>
 <dl>
@@ -322,7 +322,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionSer
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetricRegistryForRegionServer</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/metrics/MetricRegistry.html" title="interface in org.apache.hadoop.hbase.metrics">MetricRegistry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.388">getMetricRegistryForRegionServer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/metrics/MetricRegistry.html" title="interface in org.apache.hadoop.hbase.metrics">MetricRegistry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.319">getMetricRegistryForRegionServer</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.html#getMetricRegistryForRegionServer--">RegionServerCoprocessorEnvironment</a></code></span></div>
 <div class="block">Returns a MetricRegistry that can be used to track metrics at the region server level.
 
@@ -342,7 +342,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionSer
 <ul class="blockListLast">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.393">shutdown</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#line.324">shutdown</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#shutdown--">CoprocessorHost.Environment</a></code></span></div>
 <div class="block">Clean up the environment</div>
 <dl>


[07/30] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
index 82eb9fd..8eb952a 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/namespace/TestNamespaceAuditor.MasterSyncObserver.html
@@ -71,668 +71,655 @@
 <span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.63"></a>
 <span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.64"></a>
 <span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessorEnvironment;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.zookeeper.KeeperException;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.junit.After;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.junit.AfterClass;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.junit.BeforeClass;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.junit.Rule;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.junit.Test;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.junit.experimental.categories.Category;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.junit.rules.TestRule;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>@Category(MediumTests.class)<a name="line.93"></a>
-<span class="sourceLineNo">094</span>public class TestNamespaceAuditor {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private static Admin ADMIN;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private String prefix = "TestNamespaceAuditor";<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  @BeforeClass<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public static void before() throws Exception {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    Configuration conf = UTIL.getConfiguration();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    conf.setStrings(<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      RegionServerObserver.class);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    UTIL.startMiniCluster(1, 1);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    waitForQuotaInitialize(UTIL);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    ADMIN = UTIL.getAdmin();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  @AfterClass<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public static void tearDown() throws Exception {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    UTIL.shutdownMiniCluster();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @After<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public void cleanup() throws Exception, KeeperException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      ADMIN.disableTable(table.getTableName());<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      deleteTable(table.getTableName());<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      if (ns.getName().startsWith(prefix)) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  @Test<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void testTableOperations() throws Exception {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    String nsp = prefix + "_np2";<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    NamespaceDescriptor nspDesc =<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.142"></a>
-<span class="sourceLineNo">143</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    ADMIN.createNamespace(nspDesc);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    HTableDescriptor tableDescOne =<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    tableDescOne.addFamily(fam1);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HTableDescriptor tableDescTwo =<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    tableDescTwo.addFamily(fam1);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    HTableDescriptor tableDescThree =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    tableDescThree.addFamily(fam1);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    ADMIN.createTable(tableDescOne);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    boolean constraintViolated = false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    } catch (Exception exp) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      assertTrue(exp instanceof IOException);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      constraintViolated = true;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    } finally {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        constraintViolated);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    assertNotNull(nspState);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    constraintViolated = false;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      ADMIN.createTable(tableDescThree);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    } catch (Exception exp) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      assertTrue(exp instanceof IOException);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      constraintViolated = true;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    } finally {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        constraintViolated);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  @Test<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void testValidQuotas() throws Exception {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    boolean exceptionCaught = false;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    NamespaceDescriptor nspDesc =<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.192"></a>
-<span class="sourceLineNo">193</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.193"></a>
-<span class="sourceLineNo">194</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      ADMIN.createNamespace(nspDesc);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    } catch (Exception exp) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      LOG.warn(exp);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      exceptionCaught = true;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } finally {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      assertTrue(exceptionCaught);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    nspDesc =<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      ADMIN.createNamespace(nspDesc);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    } catch (Exception exp) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      LOG.warn(exp);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      exceptionCaught = true;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    } finally {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      assertTrue(exceptionCaught);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    nspDesc =<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      ADMIN.createNamespace(nspDesc);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    } catch (Exception exp) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      LOG.warn(exp);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      exceptionCaught = true;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    } finally {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      assertTrue(exceptionCaught);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    nspDesc =<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.232"></a>
-<span class="sourceLineNo">233</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    try {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      ADMIN.createNamespace(nspDesc);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    } catch (Exception exp) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      LOG.warn(exp);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      exceptionCaught = true;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    } finally {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      assertTrue(exceptionCaught);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Test<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public void testDeleteTable() throws Exception {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    String namespace = prefix + "_dummy";<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    NamespaceDescriptor nspDesc =<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        NamespaceDescriptor.create(namespace)<a name="line.249"></a>
-<span class="sourceLineNo">250</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    ADMIN.createNamespace(nspDesc);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    HTableDescriptor tableDescOne =<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    tableDescOne.addFamily(fam1);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    HTableDescriptor tableDescTwo =<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    tableDescTwo.addFamily(fam1);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    ADMIN.createTable(tableDescOne);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    deleteTable(tableDescOne.getTableName());<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    deleteTable(tableDescTwo.getTableName());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    ADMIN.deleteNamespace(namespace);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    stateInfo = getNamespaceState(namespace);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.RegionServerObserver;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.master.TableNamespaceManager;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.quotas.QuotaExceededException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.StoreFile;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.zookeeper.KeeperException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.junit.After;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.junit.AfterClass;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.junit.BeforeClass;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.junit.Rule;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.junit.Test;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.junit.experimental.categories.Category;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.junit.rules.TestRule;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>@Category(MediumTests.class)<a name="line.90"></a>
+<span class="sourceLineNo">091</span>public class TestNamespaceAuditor {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @Rule public final TestRule timeout = CategoryBasedTimeout.builder().<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      withTimeout(this.getClass()).withLookingForStuckThread(true).build();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private static final Log LOG = LogFactory.getLog(TestNamespaceAuditor.class);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private static Admin ADMIN;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private String prefix = "TestNamespaceAuditor";<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @BeforeClass<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public static void before() throws Exception {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    Configuration conf = UTIL.getConfiguration();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, CustomObserver.class.getName());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    conf.setStrings(<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      MasterSyncObserver.class.getName(), CPMasterObserver.class.getName());<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 5);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    conf.setBoolean(QuotaUtil.QUOTA_CONF_KEY, true);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.setClass("hbase.coprocessor.regionserver.classes", CPRegionServerObserver.class,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      RegionServerObserver.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    UTIL.startMiniCluster(1, 1);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    waitForQuotaInitialize(UTIL);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ADMIN = UTIL.getAdmin();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @AfterClass<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public static void tearDown() throws Exception {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    UTIL.shutdownMiniCluster();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  @After<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public void cleanup() throws Exception, KeeperException {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (HTableDescriptor table : ADMIN.listTables()) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      ADMIN.disableTable(table.getTableName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      deleteTable(table.getTableName());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    for (NamespaceDescriptor ns : ADMIN.listNamespaceDescriptors()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      if (ns.getName().startsWith(prefix)) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        ADMIN.deleteNamespace(ns.getName());<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    assertTrue("Quota manager not initialized", UTIL.getHBaseCluster().getMaster()<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        .getMasterQuotaManager().isQuotaInitialized());<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  @Test<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public void testTableOperations() throws Exception {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    String nsp = prefix + "_np2";<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    NamespaceDescriptor nspDesc =<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        NamespaceDescriptor.create(nsp).addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "5")<a name="line.139"></a>
+<span class="sourceLineNo">140</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    ADMIN.createNamespace(nspDesc);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(nsp));<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    assertEquals(ADMIN.listNamespaceDescriptors().length, 3);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    HTableDescriptor tableDescOne =<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table1"));<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    tableDescOne.addFamily(fam1);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    HTableDescriptor tableDescTwo =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table2"));<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    tableDescTwo.addFamily(fam1);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    HTableDescriptor tableDescThree =<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        new HTableDescriptor(TableName.valueOf(nsp + TableName.NAMESPACE_DELIM + "table3"));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    tableDescThree.addFamily(fam1);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    ADMIN.createTable(tableDescOne);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    boolean constraintViolated = false;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    try {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    } catch (Exception exp) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      assertTrue(exp instanceof IOException);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      constraintViolated = true;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    } finally {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      assertTrue("Constraint not violated for table " + tableDescTwo.getTableName(),<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        constraintViolated);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 4);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    NamespaceTableAndRegionInfo nspState = getQuotaManager().getState(nsp);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    assertNotNull(nspState);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    assertTrue(nspState.getTables().size() == 2);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(nspState.getRegionCount() == 5);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    constraintViolated = false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    try {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      ADMIN.createTable(tableDescThree);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (Exception exp) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      assertTrue(exp instanceof IOException);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      constraintViolated = true;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } finally {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      assertTrue("Constraint not violated for table " + tableDescThree.getTableName(),<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        constraintViolated);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  @Test<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public void testValidQuotas() throws Exception {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    boolean exceptionCaught = false;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    FileSystem fs = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getFileSystem();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    Path rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    NamespaceDescriptor nspDesc =<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        NamespaceDescriptor.create(prefix + "vq1")<a name="line.189"></a>
+<span class="sourceLineNo">190</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "hihdufh")<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    try {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      ADMIN.createNamespace(nspDesc);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    } catch (Exception exp) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      LOG.warn(exp);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      exceptionCaught = true;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      assertTrue(exceptionCaught);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    nspDesc =<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        NamespaceDescriptor.create(prefix + "vq2")<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "-456")<a name="line.203"></a>
+<span class="sourceLineNo">204</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    try {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ADMIN.createNamespace(nspDesc);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    } catch (Exception exp) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      LOG.warn(exp);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      exceptionCaught = true;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    } finally {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      assertTrue(exceptionCaught);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    nspDesc =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        NamespaceDescriptor.create(prefix + "vq3")<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.216"></a>
+<span class="sourceLineNo">217</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "sciigd").build();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    try {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      ADMIN.createNamespace(nspDesc);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    } catch (Exception exp) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      LOG.warn(exp);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      exceptionCaught = true;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    } finally {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      assertTrue(exceptionCaught);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    nspDesc =<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        NamespaceDescriptor.create(prefix + "vq4")<a name="line.228"></a>
+<span class="sourceLineNo">229</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "10")<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "-1500").build();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    try {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      ADMIN.createNamespace(nspDesc);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    } catch (Exception exp) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      LOG.warn(exp);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      exceptionCaught = true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } finally {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      assertTrue(exceptionCaught);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      assertFalse(fs.exists(FSUtils.getNamespaceDir(rootDir, nspDesc.getName())));<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  @Test<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public void testDeleteTable() throws Exception {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    String namespace = prefix + "_dummy";<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    NamespaceDescriptor nspDesc =<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        NamespaceDescriptor.create(namespace)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "100")<a name="line.247"></a>
+<span class="sourceLineNo">248</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "3").build();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    ADMIN.createNamespace(nspDesc);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    assertNotNull("Namespace descriptor found null.", ADMIN.getNamespaceDescriptor(namespace));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    NamespaceTableAndRegionInfo stateInfo = getNamespaceState(nspDesc.getName());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertNotNull("Namespace state found null for " + namespace, stateInfo);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    HTableDescriptor tableDescOne =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table1"));<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    tableDescOne.addFamily(fam1);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    HTableDescriptor tableDescTwo =<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        new HTableDescriptor(TableName.valueOf(namespace + TableName.NAMESPACE_DELIM + "table2"));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    tableDescTwo.addFamily(fam1);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    ADMIN.createTable(tableDescOne);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("AAA"), Bytes.toBytes("ZZZ"), 5);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(2, stateInfo.getTables().size());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    assertEquals(5, stateInfo.getRegionCountOfTable(tableDescTwo.getTableName()));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertEquals(6, stateInfo.getRegionCount());<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    ADMIN.disableTable(tableDescOne.getTableName());<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    deleteTable(tableDescOne.getTableName());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    stateInfo = getNamespaceState(nspDesc.getName());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    assertNotNull("Namespace state found to be null.", stateInfo);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertEquals(5, stateInfo.getRegionCount());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    assertEquals(1, stateInfo.getTables().size());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    ADMIN.disableTable(tableDescTwo.getTableName());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    deleteTable(tableDescTwo.getTableName());<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    ADMIN.deleteNamespace(namespace);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    stateInfo = getNamespaceState(namespace);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    assertNull("Namespace state not found to be null.", stateInfo);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    private volatile boolean shouldFailMerge = false;<a name="line.281"></a>
 <span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public static class CPRegionServerObserver implements RegionServerObserver {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    private volatile boolean shouldFailMerge = false;<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public void failMerge(boolean fail) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      shouldFailMerge = fail;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    private boolean triggered = false;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      while (!triggered) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        wait();<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    @Override<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    public synchronized void preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        Region regionA, Region regionB) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      triggered = true;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      notifyAll();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (shouldFailMerge) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        throw new IOException("fail merge");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    private volatile boolean shouldFailMerge = false;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    public void failMerge(boolean fail) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      shouldFailMerge = fail;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public synchronized void preMergeRegionsAction(<a name="line.317"></a>
-<span class="sourceLineNo">318</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      notifyAll();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      if (shouldFailMerge) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        throw new IOException("fail merge");<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testRegionMerge() throws Exception {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    String nsp1 = prefix + "_regiontest";<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    final int initialRegions = 3;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    NamespaceDescriptor nspDesc =<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        NamespaceDescriptor.create(nsp1)<a name="line.332"></a>
-<span class="sourceLineNo">333</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.333"></a>
-<span class="sourceLineNo">334</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    ADMIN.createNamespace(nspDesc);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    ADMIN.flush(tableTwo);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    assertEquals(initialRegions, hris.size());<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    Collections.sort(hris);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      false);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    f.get(10, TimeUnit.SECONDS);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    Collections.sort(hris);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // Not much we can do here until we have split return a Future.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    Threads.sleep(5000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(initialRegions, hris.size());<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    Collections.sort(hris);<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>    // Fail region merge through Coprocessor hook<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    masterObserver.failMerge(true);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    f = ADMIN.mergeRegionsAsync(<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      false);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    try {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      f.get(10, TimeUnit.SECONDS);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      fail("Merge was supposed to fail!");<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } catch (ExecutionException ee) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      // Expected.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assertEquals(initialRegions, hris.size());<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    Collections.sort(hris);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    // verify that we cannot split<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    Thread.sleep(2000);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * HBASE-13394<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Test<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    NamespaceDescriptor nspDesc =<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        NamespaceDescriptor.create(nsp1)<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    ADMIN.createNamespace(nspDesc);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    try {<a name="line.410"></a>
+<span class="sourceLineNo">283</span>    public void failMerge(boolean fail) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      shouldFailMerge = fail;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    private boolean triggered = false;<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>    public synchronized void waitUtilTriggered() throws InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      while (!triggered) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        wait();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public static class CPMasterObserver implements MasterObserver {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    private volatile boolean shouldFailMerge = false;<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>    public void failMerge(boolean fail) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      shouldFailMerge = fail;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>    @Override<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    public synchronized void preMergeRegionsAction(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        final HRegionInfo[] regionsToMerge) throws IOException {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      notifyAll();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (shouldFailMerge) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        throw new IOException("fail merge");<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  @Test<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  public void testRegionMerge() throws Exception {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    String nsp1 = prefix + "_regiontest";<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    final int initialRegions = 3;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    NamespaceDescriptor nspDesc =<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        NamespaceDescriptor.create(nsp1)<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "" + initialRegions)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "2").build();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    ADMIN.createNamespace(nspDesc);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    final TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableTwo);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("0"), Bytes.toBytes("9"), initialRegions);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    try (Table table = connection.getTable(tableTwo)) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      UTIL.loadNumericRows(table, Bytes.toBytes("info"), 1000, 1999);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    ADMIN.flush(tableTwo);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    List&lt;HRegionInfo&gt; hris = ADMIN.getTableRegions(tableTwo);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    assertEquals(initialRegions, hris.size());<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    Collections.sort(hris);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    Future&lt;?&gt; f = ADMIN.mergeRegionsAsync(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      hris.get(0).getEncodedNameAsBytes(),<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      false);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    f.get(10, TimeUnit.SECONDS);<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    assertEquals(initialRegions - 1, hris.size());<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Collections.sort(hris);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    ADMIN.split(tableTwo, Bytes.toBytes("3"));<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // Not much we can do here until we have split return a Future.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    Threads.sleep(5000);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    assertEquals(initialRegions, hris.size());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    Collections.sort(hris);<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>    // Fail region merge through Coprocessor hook<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    MiniHBaseCluster cluster = UTIL.getHBaseCluster();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    MasterCoprocessorHost cpHost = cluster.getMaster().getMasterCoprocessorHost();<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    Coprocessor coprocessor = cpHost.findCoprocessor(CPMasterObserver.class.getName());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    CPMasterObserver masterObserver = (CPMasterObserver) coprocessor;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    masterObserver.failMerge(true);<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>    f = ADMIN.mergeRegionsAsync(<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      hris.get(1).getEncodedNameAsBytes(),<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      hris.get(2).getEncodedNameAsBytes(),<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      false);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    try {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      f.get(10, TimeUnit.SECONDS);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      fail("Merge was supposed to fail!");<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    } catch (ExecutionException ee) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      // Expected.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    hris = ADMIN.getTableRegions(tableTwo);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    assertEquals(initialRegions, hris.size());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    Collections.sort(hris);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    // verify that we cannot split<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    HRegionInfo hriToSplit2 = hris.get(1);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    ADMIN.split(tableTwo, Bytes.toBytes("6"));<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    Thread.sleep(2000);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assertEquals(initialRegions, ADMIN.getTableRegions(tableTwo).size());<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>  /*<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Create a table and make sure that the table creation fails after adding this table entry into<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * namespace quota cache. Now correct the failure and recreate the table with same name.<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * HBASE-13394<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   */<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  @Test<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public void testRecreateTableWithSameNameAfterFirstTimeFailure() throws Exception {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    String nsp1 = prefix + "_testRecreateTable";<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    NamespaceDescriptor nspDesc =<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        NamespaceDescriptor.create(nsp1)<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "1").build();<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    ADMIN.createNamespace(nspDesc);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    final TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    byte[] columnFamily = Bytes.toBytes("info");<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    tableDescOne.addFamily(new HColumnDescriptor(columnFamily));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    MasterSyncObserver.throwExceptionInPreCreateTableAction = true;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    try {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      try {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        ADMIN.createTable(tableDescOne);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } catch (Exception exp) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        LOG.error(exp);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.410"></a>
 <span class="sourceLineNo">411</span>      try {<a name="line.411"></a>
 <span class="sourceLineNo">412</span>        ADMIN.createTable(tableDescOne);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        fail("Table " + tableOne.toString() + "creation should fail.");<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      } catch (Exception exp) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        LOG.error(exp);<a name="line.415"></a>
+<span class="sourceLineNo">413</span>      } catch (Exception e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        LOG.error(e);<a name="line.415"></a>
 <span class="sourceLineNo">416</span>      }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      assertFalse(ADMIN.tableExists(tableOne));<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>      NamespaceTableAndRegionInfo nstate = getNamespaceState(nsp1);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      assertEquals("First table creation failed in namespace so number of tables in namespace "<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          + "should be 0.", 0, nstate.getTables().size());<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      try {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        ADMIN.createTable(tableDescOne);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } catch (Exception e) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        fail("Table " + tableOne.toString() + "creation should succeed.");<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        LOG.error(e);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      nstate = getNamespaceState(nsp1);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    } finally {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ADMIN.disableTable(tableOne);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        deleteTable(tableOne);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      ADMIN.deleteNamespace(nsp1);<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><a name="line.443"></a>
-<span class="sourceLineNo">444</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      IOException {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return getQuotaManager().getState(namespace);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    String skey = Bytes.toString(startKey);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    int key;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    if (StringUtils.isBlank(skey)) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    } else {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return Bytes.toBytes("" + key);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  public static class CustomObserver implements RegionObserver {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    volatile CountDownLatch postCompact;<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>    @Override<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      postCompact.countDown();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    @Override<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      postCompact = new CountDownLatch(1);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  @Test<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public void testStatePreserve() throws Exception {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    final String nsp1 = prefix + "_testStatePreserve";<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    NamespaceDescriptor nspDesc = NamespaceDescriptor.create(nsp1)<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_REGIONS, "20")<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        .addConfiguration(TableNamespaceManager.KEY_MAX_TABLES, "10").build();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    ADMIN.createNamespace(nspDesc);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    TableName tableOne = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table1");<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    TableName tableTwo = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table2");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    TableName tableThree = TableName.valueOf(nsp1 + TableName.NAMESPACE_DELIM + "table3");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    HColumnDescriptor fam1 = new HColumnDescriptor("fam1");<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    HTableDescriptor tableDescOne = new HTableDescriptor(tableOne);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    tableDescOne.addFamily(fam1);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    HTableDescriptor tableDescTwo = new HTableDescriptor(tableTwo);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    tableDescTwo.addFamily(fam1);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    HTableDescriptor tableDescThree = new HTableDescriptor(tableThree);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    tableDescThree.addFamily(fam1);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    ADMIN.createTable(tableDescOne, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    ADMIN.createTable(tableDescTwo, Bytes.toBytes("1"), Bytes.toBytes("1000"), 3);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    ADMIN.createTable(tableDescThree, Bytes.toBytes("1"), Bytes.toBytes("1000"), 4);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    ADMIN.disableTable(tableThree);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    deleteTable(tableThree);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // wait for chore to complete<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    UTIL.waitFor(1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      @Override<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      public boolean evaluate() throws Exception {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>       return (getNamespaceState(nsp1).getTables().size() == 2);<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>    NamespaceTableAndRegionInfo before = getNamespaceState(nsp1);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    restartMaster();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    NamespaceTableAndRegionInfo after = getNamespaceState(nsp1);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    assertEquals("Expected: " + before.getTables() + " Found: " + after.getTables(), before<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        .getTables().size(), after.getTables().size());<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public static void waitForQuotaInitialize(final HBaseTestingUtility util) throws Exception {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    util.waitFor(60000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      @Override<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      public boolean evaluate() throws Exception {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        HMaster master = util.getHBaseCluster().getMaster();<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        if (master == null) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          return false;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        MasterQuotaManager quotaManager = master.getMasterQuotaManager();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>        return quotaManager != null &amp;&amp; quotaManager.isQuotaInitialized();<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>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  private void restartMaster() throws Exception {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    UTIL.getHBaseCluster().getMaster(0).stop("Stopping to start again");<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    UTIL.getHBaseCluster().waitOnMaster(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    UTIL.getHBaseCluster().startMaster();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    waitForQuotaInitialize(UTIL);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  private NamespaceAuditor getQuotaManager() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    return UTIL.getHBaseCluster().getMaster()<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        .getMasterQuotaManager().getNamespaceQuotaManager();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public static class MasterSyncObserver implements MasterObserver {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    volatile CountDownLatch tableDeletionLatch;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    static boolean throwExceptionInPreCreateTableAction;<a name="line.539"></a>
+<span class="sourceLineNo">417</span>      assertTrue(ADMIN.tableExists(tableOne));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      nstate = getNamespaceState(nsp1);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      assertEquals("First table was created successfully so table size in namespace should "<a name="line.419"></a>
+<span class="sourceLineNo">420</span>          + "be one now.", 1, nstate.getTables().size());<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    } finally {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      MasterSyncObserver.throwExceptionInPreCreateTableAction = false;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      if (ADMIN.tableExists(tableOne)) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        ADMIN.disableTable(tableOne);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        deleteTable(tableOne);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      ADMIN.deleteNamespace(nsp1);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  private NamespaceTableAndRegionInfo getNamespaceState(String namespace) throws KeeperException,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      IOException {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return getQuotaManager().getState(namespace);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  byte[] getSplitKey(byte[] startKey, byte[] endKey) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    String skey = Bytes.toString(startKey);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    int key;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (StringUtils.isBlank(skey)) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      key = Integer.parseInt(Bytes.toString(endKey))/2 ;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    } else {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      key = (int) (Integer.parseInt(skey) * 1.5);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return Bytes.toBytes("" + key);<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 static class CustomObserver implements RegionObserver {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    volatile CountDownLatch postCompact;<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    @Override<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    public void postCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Store store,<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        StoreFile resultFile, CompactionLifeCycleTracker tracker) throws IOException {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      postCompact.countDown();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    @Override<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    public void start(CoprocessorEnvironment e) throws IOException {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      postCompact = new CountDownLatch(1);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
+<span class="sourceLineNo">460</span> 

<TRUNCATED>