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 2019/05/09 14:49:19 UTC

[hbase-site] branch asf-site updated: Published site at 4d64dd2e82c163f4f247e5f4fb5ca75c5a3803a2.

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

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


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

commit f9759ee5c2d6013b5085198d3c5d486159a28860
Author: jenkins <bu...@apache.org>
AuthorDate: Thu May 9 14:49:03 2019 +0000

    Published site at 4d64dd2e82c163f4f247e5f4fb5ca75c5a3803a2.
---
 acid-semantics.html                                |    2 +-
 apache_hbase_reference_guide.pdf                   | 3540 ++++++++++----------
 book.html                                          |   26 +-
 bulk-loads.html                                    |    2 +-
 checkstyle-aggregate.html                          |    4 +-
 checkstyle.rss                                     |   16 +-
 coc.html                                           |    2 +-
 dependencies.html                                  |    2 +-
 dependency-convergence.html                        |    2 +-
 dependency-info.html                               |    2 +-
 dependency-management.html                         |    2 +-
 devapidocs/constant-values.html                    |    4 +-
 .../apache/hadoop/hbase/backup/package-tree.html   |    4 +-
 .../apache/hadoop/hbase/client/package-tree.html   |   24 +-
 .../hadoop/hbase/coprocessor/package-tree.html     |    2 +-
 .../apache/hadoop/hbase/filter/package-tree.html   |    8 +-
 .../apache/hadoop/hbase/io/hfile/package-tree.html |    6 +-
 .../org/apache/hadoop/hbase/ipc/package-tree.html  |    2 +-
 .../hadoop/hbase/mapreduce/package-tree.html       |    2 +-
 .../apache/hadoop/hbase/master/package-tree.html   |    2 +-
 .../hbase/master/procedure/package-tree.html       |    2 +-
 .../hadoop/hbase/monitoring/package-tree.html      |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html      |   16 +-
 .../hadoop/hbase/procedure2/package-tree.html      |    4 +-
 .../apache/hadoop/hbase/quotas/package-tree.html   |    4 +-
 .../hadoop/hbase/regionserver/package-tree.html    |   16 +-
 .../regionserver/querymatcher/package-tree.html    |    2 +-
 .../hbase/regionserver/wal/package-tree.html       |    4 +-
 .../hadoop/hbase/replication/package-tree.html     |    2 +-
 .../replication/regionserver/package-tree.html     |    2 +-
 .../hadoop/hbase/rest/model/package-tree.html      |    2 +-
 .../security/access/AccessChecker.InputUser.html   |   22 +-
 .../hbase/security/access/AccessChecker.html       |   55 +-
 .../hadoop/hbase/security/access/package-tree.html |    2 +-
 .../apache/hadoop/hbase/thrift/package-tree.html   |    2 +-
 .../org/apache/hadoop/hbase/util/package-tree.html |   10 +-
 .../src-html/org/apache/hadoop/hbase/Version.html  |    4 +-
 .../MemStoreCompactorSegmentsIterator.html         |    2 +-
 .../MemStoreMergerSegmentsIterator.html            |    2 +-
 ...ressureAwareCompactionThroughputController.html |    2 +-
 .../security/access/AccessChecker.InputUser.html   | 1193 +++----
 .../hbase/security/access/AccessChecker.html       | 1193 +++----
 downloads.html                                     |   57 +-
 export_control.html                                |    2 +-
 index.html                                         |    2 +-
 issue-management.html                              |    2 +-
 licenses.html                                      |    2 +-
 mailing-lists.html                                 |    2 +-
 metrics.html                                       |    2 +-
 old_news.html                                      |    2 +-
 plugin-management.html                             |    2 +-
 plugins.html                                       |    2 +-
 poweredbyhbase.html                                |    2 +-
 project-info.html                                  |    2 +-
 project-reports.html                               |    2 +-
 pseudo-distributed.html                            |    2 +-
 replication.html                                   |    2 +-
 resources.html                                     |    2 +-
 scm.html                                           |    2 +-
 sponsors.html                                      |    2 +-
 summary.html                                       |    2 +-
 supportingprojects.html                            |    2 +-
 team.html                                          |    2 +-
 testdevapidocs/allclasses-frame.html               |    1 +
 testdevapidocs/allclasses-noframe.html             |    1 +
 testdevapidocs/index-all.html                      |   45 +
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |  170 +-
 .../org/apache/hadoop/hbase/package-tree.html      |   12 +-
 .../hadoop/hbase/procedure/package-tree.html       |    8 +-
 .../hadoop/hbase/procedure2/package-tree.html      |    6 +-
 .../regionserver/TestMemStoreSegmentsIterator.html |  551 +++
 .../regionserver/TestMemstoreLABWithoutPool.html   |    4 +-
 .../regionserver/TestMetricsHeapMemoryManager.html |    4 +-
 .../class-use/TestMemStoreSegmentsIterator.html    |  125 +
 .../hadoop/hbase/regionserver/package-frame.html   |    1 +
 .../hadoop/hbase/regionserver/package-summary.html |  307 +-
 .../hadoop/hbase/regionserver/package-tree.html    |    5 +-
 .../org/apache/hadoop/hbase/test/package-tree.html |    4 +-
 testdevapidocs/overview-tree.html                  |    1 +
 .../regionserver/TestMemStoreSegmentsIterator.html |  236 ++
 80 files changed, 4441 insertions(+), 3334 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 4e41431..d25e96d 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -457,7 +457,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index d80c908..19d1ffc 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:20190508144537+00'00')
-/CreationDate (D:20190508144537+00'00')
+/ModDate (D:20190509144552+00'00')
+/CreationDate (D:20190509144552+00'00')
 >>
 endobj
 2 0 obj
@@ -689322,7 +689322,7 @@ endobj
 >>
 endobj
 3709 0 obj
-<< /Length 3511
+<< /Length 4004
 >>
 stream
 q
@@ -689372,29 +689372,47 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-3.418 Tw
-
 BT
 48.24 721.646 Td
 /F1.0 10.5 Tf
 <63616e6469646174652c20> Tj
 ET
 
-
-0.0 Tw
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
 0.2588 0.5451 0.7922 scn
 0.2588 0.5451 0.7922 SCN
 
-3.418 Tw
-
 BT
-106.279 721.646 Td
+102.861 721.646 Td
 /F1.0 10.5 Tf
 <52656c6561736520506f6c696379> Tj
 ET
 
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+173.295 721.646 Td
+/F1.0 10.5 Tf
+<2e> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+1.7638 Tw
+
+BT
+62.74 691.0174 Td
+/F1.0 13 Tf
+<4265666f72652063617374696e67202b312062696e64696e6720766f7465732c20696e646976696475616c732061726520726571756972656420746f20646f776e6c6f616420746865> Tj
+ET
+
 
 0.0 Tw
 0.0 0.0 0.0 SCN
@@ -689402,12 +689420,12 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-3.418 Tw
+5.7184 Tw
 
 BT
-180.131 721.646 Td
-/F1.0 10.5 Tf
-<2e205b71756f74655d5f4265666f72652063617374696e6720312062696e64696e6720766f7465732c20696e646976696475616c732061726520726571756972656420746f> Tj
+62.74 671.4803 Td
+/F1.0 13 Tf
+<7369676e656420736f7572636520636f6465207061636b616765206f6e746f207468656972206f776e2068617264776172652c20636f6d70696c65206974206173> Tj
 ET
 
 
@@ -689417,12 +689435,12 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-1.4008 Tw
+2.6556 Tw
 
 BT
-48.24 705.866 Td
-/F1.0 10.5 Tf
-<646f776e6c6f616420746865207369676e656420736f7572636520636f6465207061636b616765206f6e746f207468656972206f776e2068617264776172652c20636f6d70696c652069742061732070726f76696465642c20616e64> Tj
+62.74 651.9431 Td
+/F1.0 13 Tf
+<70726f76696465642c20616e6420746573742074686520726573756c74696e672065786563757461626c65206f6e207468656972206f776e20706c6174666f726d2c20616c6f6e67> Tj
 ET
 
 
@@ -689432,12 +689450,12 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-3.1026 Tw
+0.0474 Tw
 
 BT
-48.24 690.086 Td
-/F1.0 10.5 Tf
-[<746573742074686520726573756c74696e672065786563757461626c65206f6e207468656972206f776e20706c6174666f726d2c20616c6f6e67207769746820616c736f2076616c69646174696e672063727970746f6772> 20.0195 <6170686963>] TJ
+62.74 632.406 Td
+/F1.0 13 Tf
+[<7769746820616c736f2076616c69646174696e672063727970746f6772> 20.0195 <6170686963207369676e61747572657320616e6420766572696679696e67207468617420746865207061636b616765>] TJ
 ET
 
 
@@ -689447,12 +689465,45 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-1.2396 Tw
+BT
+62.74 612.8689 Td
+/F1.0 13 Tf
+<6d656574732074686520726571756972656d656e7473206f66207468652041534620706f6c696379206f6e2072656c65617365732e> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+q
+5 w
+0.9333 0.9333 0.9333 SCN
+50.74 705.83 m
+50.74 605.1443 l
+S
+Q
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+0.3533 Tw
 
 BT
-48.24 674.306 Td
+48.24 581.1803 Td
 /F1.0 10.5 Tf
-<7369676e61747572657320616e6420766572696679696e67207468617420746865207061636b616765206d656574732074686520726571756972656d656e7473206f66207468652041534620706f6c696379206f6e2072656c65617365732e5f> Tj
+<5265676172647320746865206c61747465722c2072756e20> Tj
+ET
+
+
+0.0 Tw
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+0.6941 0.1294 0.2745 scn
+0.6941 0.1294 0.2745 SCN
+
+0.3533 Tw
+
+BT
+164.7753 581.1803 Td
+/F4.0 10.5 Tf
+<6d766e206170616368652d7261743a636865636b> Tj
 ET
 
 
@@ -689462,12 +689513,12 @@ ET
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
-1.3626 Tw
+0.3533 Tw
 
 BT
-48.24 658.526 Td
+270.1287 581.1803 Td
 /F1.0 10.5 Tf
-[<5265676172647320746865206c61747465722c2072756e202b6d766e206170616368652d72> 20.0195 <61743a636865636b20746f2076657269667920616c6c2066696c657320617265207375697461626c79206c6963656e7365642e2053656520>] TJ
+<20746f2076657269667920616c6c2066696c657320617265207375697461626c79206c6963656e7365642e2053656520> Tj
 ET
 
 
@@ -689477,12 +689528,12 @@ ET
 0.2588 0.5451 0.7922 scn
 0.2588 0.5451 0.7922 SCN
 
-1.3626 Tw
+0.3533 Tw
 
 BT
-512.9885 658.526 Td
+487.4982 581.1803 Td
 /F1.0 10.5 Tf
-<48426173652c> Tj
+<48426173652c206d61696c> Tj
 ET
 
 
@@ -689493,9 +689544,9 @@ ET
 0.2588 0.5451 0.7922 SCN
 
 BT
-48.24 642.746 Td
+48.24 565.4003 Td
 /F1.0 10.5 Tf
-<6d61696c202320646576202d204f6e20726563656e742064697363757373696f6e20636c6172696679696e67204153462072656c6561736520706f6c696379> Tj
+<2320646576202d204f6e20726563656e742064697363757373696f6e20636c6172696679696e67204153462072656c6561736520706f6c696379> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -689504,9 +689555,9 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-356.835 642.746 Td
+331.698 565.4003 Td
 /F1.0 10.5 Tf
-<2e20666f7220686f77207765206172726976656420617420746869732070726f636573732e> Tj
+<20666f7220686f77207765206172726976656420617420746869732070726f636573732e> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -689547,6 +689598,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
+/F4.0 37 0 R
 >>
 /XObject << /Stamp2 5116 0 R
 >>
@@ -689564,7 +689616,7 @@ endobj
 /URI (https://github.com/rectang/asfrelease/blob/master/release.md)
 >>
 /Subtype /Link
-/Rect [106.279 718.58 180.131 732.86]
+/Rect [102.861 718.58 173.295 732.86]
 /Type /Annot
 >>
 endobj
@@ -689575,7 +689627,7 @@ endobj
 /URI (http://search-hadoop.com/m/DHED4dhFaU)
 >>
 /Subtype /Link
-/Rect [512.9885 655.46 547.04 669.74]
+/Rect [487.4982 578.1143 547.04 592.3943]
 /Type /Annot
 >>
 endobj
@@ -689586,7 +689638,7 @@ endobj
 /URI (http://search-hadoop.com/m/DHED4dhFaU)
 >>
 /Subtype /Link
-/Rect [48.24 639.68 356.835 653.96]
+/Rect [48.24 562.3343 331.698 576.6143]
 /Type /Annot
 >>
 endobj
@@ -867208,1728 +867260,1728 @@ xref
 0010942091 00000 n 
 0010942471 00000 n 
 0010942601 00000 n 
-0010946167 00000 n 
-0010946552 00000 n 
-0010946600 00000 n 
-0010946805 00000 n 
-0010946987 00000 n 
-0010947167 00000 n 
-0010956237 00000 n 
-0010956649 00000 n 
-0010956697 00000 n 
-0010956870 00000 n 
-0010957041 00000 n 
+0010946660 00000 n 
+0010947058 00000 n 
+0010947106 00000 n 
+0010947311 00000 n 
+0010947497 00000 n 
+0010947681 00000 n 
+0010956751 00000 n 
+0010957163 00000 n 
 0010957211 00000 n 
-0010959288 00000 n 
-0010959664 00000 n 
-0010959712 00000 n 
-0010959911 00000 n 
-0010960062 00000 n 
-0010962614 00000 n 
-0010963008 00000 n 
-0010963056 00000 n 
-0010963225 00000 n 
-0010963273 00000 n 
-0010963955 00000 n 
-0010964109 00000 n 
-0010964157 00000 n 
-0010964326 00000 n 
-0010964456 00000 n 
-0010977329 00000 n 
-0010977736 00000 n 
-0010977784 00000 n 
-0010978367 00000 n 
-0010978492 00000 n 
-0010978540 00000 n 
-0010978672 00000 n 
-0010978720 00000 n 
-0010978852 00000 n 
-0010979066 00000 n 
-0010989903 00000 n 
-0010990283 00000 n 
-0010990331 00000 n 
-0010990468 00000 n 
-0010990516 00000 n 
-0011014872 00000 n 
-0011015305 00000 n 
-0011015498 00000 n 
-0011015632 00000 n 
-0011015688 00000 n 
-0011015872 00000 n 
-0011015928 00000 n 
-0011016111 00000 n 
-0011016167 00000 n 
-0011029007 00000 n 
-0011029400 00000 n 
-0011029455 00000 n 
-0011029589 00000 n 
-0011029637 00000 n 
-0011029685 00000 n 
-0011029733 00000 n 
-0011029781 00000 n 
-0011029829 00000 n 
-0011041566 00000 n 
-0011041940 00000 n 
-0011041988 00000 n 
-0011042036 00000 n 
-0011042084 00000 n 
-0011056548 00000 n 
-0011056922 00000 n 
-0011056970 00000 n 
-0011057018 00000 n 
-0011057557 00000 n 
-0011057605 00000 n 
-0011064945 00000 n 
-0011065293 00000 n 
-0011065341 00000 n 
-0011065389 00000 n 
-0011065437 00000 n 
-0011065485 00000 n 
-0011091160 00000 n 
-0011091521 00000 n 
-0011091569 00000 n 
-0011108184 00000 n 
-0011108560 00000 n 
-0011121418 00000 n 
-0011121811 00000 n 
-0011121859 00000 n 
-0011122059 00000 n 
-0011122107 00000 n 
-0011140045 00000 n 
-0011140465 00000 n 
-0011140513 00000 n 
-0011140708 00000 n 
-0011140890 00000 n 
-0011140938 00000 n 
-0011141120 00000 n 
-0011141301 00000 n 
-0011152827 00000 n 
-0011153188 00000 n 
-0011165182 00000 n 
-0011165543 00000 n 
-0011165592 00000 n 
-0011179029 00000 n 
-0011179422 00000 n 
-0011179470 00000 n 
-0011179604 00000 n 
-0011179652 00000 n 
-0011180148 00000 n 
-0011180376 00000 n 
-0011188154 00000 n 
-0011188502 00000 n 
-0011198481 00000 n 
-0011198868 00000 n 
-0011198916 00000 n 
-0011198964 00000 n 
-0011199012 00000 n 
-0011199060 00000 n 
-0011199460 00000 n 
-0011221844 00000 n 
-0011222233 00000 n 
-0011222281 00000 n 
-0011222483 00000 n 
-0011222622 00000 n 
-0011222670 00000 n 
-0011223362 00000 n 
-0011223410 00000 n 
-0011248828 00000 n 
-0011249189 00000 n 
-0011249237 00000 n 
-0011249285 00000 n 
-0011249333 00000 n 
-0011249381 00000 n 
-0011260638 00000 n 
-0011261053 00000 n 
-0011261101 00000 n 
-0011261149 00000 n 
-0011261197 00000 n 
-0011261245 00000 n 
-0011261294 00000 n 
-0011261522 00000 n 
-0011261749 00000 n 
-0011271329 00000 n 
-0011271735 00000 n 
-0011271783 00000 n 
-0011271831 00000 n 
-0011272026 00000 n 
-0011272074 00000 n 
-0011284136 00000 n 
-0011284529 00000 n 
-0011284577 00000 n 
-0011284788 00000 n 
-0011284836 00000 n 
-0011285623 00000 n 
-0011285824 00000 n 
-0011285872 00000 n 
-0011285920 00000 n 
-0011285968 00000 n 
-0011286562 00000 n 
-0011301244 00000 n 
-0011301655 00000 n 
-0011301703 00000 n 
-0011301888 00000 n 
-0011302060 00000 n 
-0011302108 00000 n 
-0011302246 00000 n 
-0011316896 00000 n 
-0011317363 00000 n 
-0011317491 00000 n 
-0011317710 00000 n 
-0011317759 00000 n 
-0011317885 00000 n 
-0011318015 00000 n 
-0011318064 00000 n 
-0011318113 00000 n 
-0011318785 00000 n 
-0011318955 00000 n 
-0011319126 00000 n 
-0011333990 00000 n 
-0011334430 00000 n 
-0011334619 00000 n 
-0011334667 00000 n 
-0011334715 00000 n 
-0011334867 00000 n 
-0011334996 00000 n 
-0011335158 00000 n 
-0011335312 00000 n 
-0011335465 00000 n 
-0011347880 00000 n 
-0011348333 00000 n 
-0011348481 00000 n 
-0011348529 00000 n 
-0011348723 00000 n 
-0011348908 00000 n 
-0011348956 00000 n 
-0011349188 00000 n 
-0011349236 00000 n 
-0011349426 00000 n 
-0011349620 00000 n 
-0011349668 00000 n 
-0011365339 00000 n 
-0011365745 00000 n 
-0011365935 00000 n 
-0011374625 00000 n 
-0011374973 00000 n 
-0011385242 00000 n 
-0011385603 00000 n 
-0011385651 00000 n 
-0011385699 00000 n 
-0011396898 00000 n 
-0011397336 00000 n 
-0011397520 00000 n 
-0011397568 00000 n 
-0011397776 00000 n 
-0011397983 00000 n 
-0011398031 00000 n 
-0011398078 00000 n 
-0011399032 00000 n 
-0011399214 00000 n 
-0011399395 00000 n 
-0011399443 00000 n 
-0011399491 00000 n 
-0011399642 00000 n 
-0011413213 00000 n 
-0011413606 00000 n 
-0011413654 00000 n 
-0011413702 00000 n 
-0011413964 00000 n 
-0011414012 00000 n 
-0011416000 00000 n 
-0011416380 00000 n 
-0011416428 00000 n 
-0011416623 00000 n 
-0011418540 00000 n 
-0011418925 00000 n 
-0011418973 00000 n 
-0011419207 00000 n 
-0011419440 00000 n 
-0011419568 00000 n 
-0011445265 00000 n 
-0011445645 00000 n 
-0011445693 00000 n 
-0011445854 00000 n 
-0011471311 00000 n 
-0011471678 00000 n 
-0011471877 00000 n 
-0011479517 00000 n 
-0011479906 00000 n 
-0011479954 00000 n 
-0011480134 00000 n 
-0011480260 00000 n 
-0011524613 00000 n 
-0011524961 00000 n 
-0011557132 00000 n 
-0011557512 00000 n 
-0011557560 00000 n 
-0011557730 00000 n 
-0011602438 00000 n 
-0011602786 00000 n 
-0011609507 00000 n 
-0011609900 00000 n 
-0011609948 00000 n 
-0011610074 00000 n 
-0011657453 00000 n 
-0011657833 00000 n 
-0011658087 00000 n 
-0011658491 00000 n 
-0011658839 00000 n 
-0011658887 00000 n 
-0011674439 00000 n 
-0011674859 00000 n 
-0011674907 00000 n 
-0011675100 00000 n 
-0011675226 00000 n 
-0011675341 00000 n 
-0011675472 00000 n 
-0011675520 00000 n 
-0011698379 00000 n 
-0011698727 00000 n 
-0011704186 00000 n 
-0011704590 00000 n 
-0011704638 00000 n 
-0011704831 00000 n 
-0011705011 00000 n 
-0011705243 00000 n 
-0011721252 00000 n 
-0011721641 00000 n 
-0011721689 00000 n 
-0011732541 00000 n 
-0011732902 00000 n 
-0011732950 00000 n 
-0011732998 00000 n 
-0011733046 00000 n 
-0011733094 00000 n 
-0011740399 00000 n 
-0011740792 00000 n 
-0011740840 00000 n 
-0011741076 00000 n 
-0011743857 00000 n 
-0011744218 00000 n 
-0011744266 00000 n 
-0011749135 00000 n 
-0011749496 00000 n 
-0011749544 00000 n 
-0011751240 00000 n 
-0011751588 00000 n 
-0011751636 00000 n 
-0011752173 00000 n 
-0011752390 00000 n 
-0011755496 00000 n 
-0011755844 00000 n 
-0011755892 00000 n 
-0011763328 00000 n 
-0011763689 00000 n 
-0011763737 00000 n 
-0011772143 00000 n 
-0011772517 00000 n 
-0011772565 00000 n 
-0011772613 00000 n 
-0011772661 00000 n 
-0011774800 00000 n 
-0011775176 00000 n 
-0011775224 00000 n 
-0011775442 00000 n 
-0011775675 00000 n 
-0011777999 00000 n 
-0011778360 00000 n 
-0011778408 00000 n 
-0011789800 00000 n 
-0011790229 00000 n 
-0011790277 00000 n 
-0011790473 00000 n 
-0011790669 00000 n 
-0011790788 00000 n 
-0011790983 00000 n 
-0011791102 00000 n 
-0011797398 00000 n 
-0011797759 00000 n 
-0011797807 00000 n 
-0011831164 00000 n 
-0011831538 00000 n 
-0011831586 00000 n 
-0011831634 00000 n 
-0011889684 00000 n 
-0011890032 00000 n 
-0011891916 00000 n 
-0011892264 00000 n 
-0011892312 00000 n 
-0011893315 00000 n 
-0011893663 00000 n 
-0011893711 00000 n 
-0011899850 00000 n 
-0011900211 00000 n 
-0011900259 00000 n 
-0011900307 00000 n 
-0011900355 00000 n 
-0011902611 00000 n 
-0011902959 00000 n 
-0011903007 00000 n 
-0011903055 00000 n 
-0011903103 00000 n 
-0011903151 00000 n 
-0011903199 00000 n 
-0011909101 00000 n 
-0011909490 00000 n 
-0011909538 00000 n 
-0011909733 00000 n 
-0011909956 00000 n 
+0010957384 00000 n 
+0010957555 00000 n 
+0010957725 00000 n 
+0010959802 00000 n 
+0010960178 00000 n 
+0010960226 00000 n 
+0010960425 00000 n 
+0010960576 00000 n 
+0010963128 00000 n 
+0010963522 00000 n 
+0010963570 00000 n 
+0010963739 00000 n 
+0010963787 00000 n 
+0010964469 00000 n 
+0010964623 00000 n 
+0010964671 00000 n 
+0010964840 00000 n 
+0010964970 00000 n 
+0010977843 00000 n 
+0010978250 00000 n 
+0010978298 00000 n 
+0010978881 00000 n 
+0010979006 00000 n 
+0010979054 00000 n 
+0010979186 00000 n 
+0010979234 00000 n 
+0010979366 00000 n 
+0010979580 00000 n 
+0010990417 00000 n 
+0010990797 00000 n 
+0010990845 00000 n 
+0010990982 00000 n 
+0010991030 00000 n 
+0011015386 00000 n 
+0011015819 00000 n 
+0011016012 00000 n 
+0011016146 00000 n 
+0011016202 00000 n 
+0011016386 00000 n 
+0011016442 00000 n 
+0011016625 00000 n 
+0011016681 00000 n 
+0011029521 00000 n 
+0011029914 00000 n 
+0011029969 00000 n 
+0011030103 00000 n 
+0011030151 00000 n 
+0011030199 00000 n 
+0011030247 00000 n 
+0011030295 00000 n 
+0011030343 00000 n 
+0011042080 00000 n 
+0011042454 00000 n 
+0011042502 00000 n 
+0011042550 00000 n 
+0011042598 00000 n 
+0011057062 00000 n 
+0011057436 00000 n 
+0011057484 00000 n 
+0011057532 00000 n 
+0011058071 00000 n 
+0011058119 00000 n 
+0011065459 00000 n 
+0011065807 00000 n 
+0011065855 00000 n 
+0011065903 00000 n 
+0011065951 00000 n 
+0011065999 00000 n 
+0011091674 00000 n 
+0011092035 00000 n 
+0011092083 00000 n 
+0011108698 00000 n 
+0011109074 00000 n 
+0011121932 00000 n 
+0011122325 00000 n 
+0011122373 00000 n 
+0011122573 00000 n 
+0011122621 00000 n 
+0011140559 00000 n 
+0011140979 00000 n 
+0011141027 00000 n 
+0011141222 00000 n 
+0011141404 00000 n 
+0011141452 00000 n 
+0011141634 00000 n 
+0011141815 00000 n 
+0011153341 00000 n 
+0011153702 00000 n 
+0011165696 00000 n 
+0011166057 00000 n 
+0011166106 00000 n 
+0011179543 00000 n 
+0011179936 00000 n 
+0011179984 00000 n 
+0011180118 00000 n 
+0011180166 00000 n 
+0011180662 00000 n 
+0011180890 00000 n 
+0011188668 00000 n 
+0011189016 00000 n 
+0011198995 00000 n 
+0011199382 00000 n 
+0011199430 00000 n 
+0011199478 00000 n 
+0011199526 00000 n 
+0011199574 00000 n 
+0011199974 00000 n 
+0011222358 00000 n 
+0011222747 00000 n 
+0011222795 00000 n 
+0011222997 00000 n 
+0011223136 00000 n 
+0011223184 00000 n 
+0011223876 00000 n 
+0011223924 00000 n 
+0011249342 00000 n 
+0011249703 00000 n 
+0011249751 00000 n 
+0011249799 00000 n 
+0011249847 00000 n 
+0011249895 00000 n 
+0011261152 00000 n 
+0011261567 00000 n 
+0011261615 00000 n 
+0011261663 00000 n 
+0011261711 00000 n 
+0011261759 00000 n 
+0011261808 00000 n 
+0011262036 00000 n 
+0011262263 00000 n 
+0011271843 00000 n 
+0011272249 00000 n 
+0011272297 00000 n 
+0011272345 00000 n 
+0011272540 00000 n 
+0011272588 00000 n 
+0011284650 00000 n 
+0011285043 00000 n 
+0011285091 00000 n 
+0011285302 00000 n 
+0011285350 00000 n 
+0011286137 00000 n 
+0011286338 00000 n 
+0011286386 00000 n 
+0011286434 00000 n 
+0011286482 00000 n 
+0011287076 00000 n 
+0011301758 00000 n 
+0011302169 00000 n 
+0011302217 00000 n 
+0011302402 00000 n 
+0011302574 00000 n 
+0011302622 00000 n 
+0011302760 00000 n 
+0011317410 00000 n 
+0011317877 00000 n 
+0011318005 00000 n 
+0011318224 00000 n 
+0011318273 00000 n 
+0011318399 00000 n 
+0011318529 00000 n 
+0011318578 00000 n 
+0011318627 00000 n 
+0011319299 00000 n 
+0011319469 00000 n 
+0011319640 00000 n 
+0011334504 00000 n 
+0011334944 00000 n 
+0011335133 00000 n 
+0011335181 00000 n 
+0011335229 00000 n 
+0011335381 00000 n 
+0011335510 00000 n 
+0011335672 00000 n 
+0011335826 00000 n 
+0011335979 00000 n 
+0011348394 00000 n 
+0011348847 00000 n 
+0011348995 00000 n 
+0011349043 00000 n 
+0011349237 00000 n 
+0011349422 00000 n 
+0011349470 00000 n 
+0011349702 00000 n 
+0011349750 00000 n 
+0011349940 00000 n 
+0011350134 00000 n 
+0011350182 00000 n 
+0011365853 00000 n 
+0011366259 00000 n 
+0011366449 00000 n 
+0011375139 00000 n 
+0011375487 00000 n 
+0011385756 00000 n 
+0011386117 00000 n 
+0011386165 00000 n 
+0011386213 00000 n 
+0011397412 00000 n 
+0011397850 00000 n 
+0011398034 00000 n 
+0011398082 00000 n 
+0011398290 00000 n 
+0011398497 00000 n 
+0011398545 00000 n 
+0011398592 00000 n 
+0011399546 00000 n 
+0011399728 00000 n 
+0011399909 00000 n 
+0011399957 00000 n 
+0011400005 00000 n 
+0011400156 00000 n 
+0011413727 00000 n 
+0011414120 00000 n 
+0011414168 00000 n 
+0011414216 00000 n 
+0011414478 00000 n 
+0011414526 00000 n 
+0011416514 00000 n 
+0011416894 00000 n 
+0011416942 00000 n 
+0011417137 00000 n 
+0011419054 00000 n 
+0011419439 00000 n 
+0011419487 00000 n 
+0011419721 00000 n 
+0011419954 00000 n 
+0011420082 00000 n 
+0011445779 00000 n 
+0011446159 00000 n 
+0011446207 00000 n 
+0011446368 00000 n 
+0011471825 00000 n 
+0011472192 00000 n 
+0011472391 00000 n 
+0011480031 00000 n 
+0011480420 00000 n 
+0011480468 00000 n 
+0011480648 00000 n 
+0011480774 00000 n 
+0011525127 00000 n 
+0011525475 00000 n 
+0011557646 00000 n 
+0011558026 00000 n 
+0011558074 00000 n 
+0011558244 00000 n 
+0011602952 00000 n 
+0011603300 00000 n 
+0011610021 00000 n 
+0011610414 00000 n 
+0011610462 00000 n 
+0011610588 00000 n 
+0011657967 00000 n 
+0011658347 00000 n 
+0011658601 00000 n 
+0011659005 00000 n 
+0011659353 00000 n 
+0011659401 00000 n 
+0011674953 00000 n 
+0011675373 00000 n 
+0011675421 00000 n 
+0011675614 00000 n 
+0011675740 00000 n 
+0011675855 00000 n 
+0011675986 00000 n 
+0011676034 00000 n 
+0011698893 00000 n 
+0011699241 00000 n 
+0011704700 00000 n 
+0011705104 00000 n 
+0011705152 00000 n 
+0011705345 00000 n 
+0011705525 00000 n 
+0011705757 00000 n 
+0011721766 00000 n 
+0011722155 00000 n 
+0011722203 00000 n 
+0011733055 00000 n 
+0011733416 00000 n 
+0011733464 00000 n 
+0011733512 00000 n 
+0011733560 00000 n 
+0011733608 00000 n 
+0011740913 00000 n 
+0011741306 00000 n 
+0011741354 00000 n 
+0011741590 00000 n 
+0011744371 00000 n 
+0011744732 00000 n 
+0011744780 00000 n 
+0011749649 00000 n 
+0011750010 00000 n 
+0011750058 00000 n 
+0011751754 00000 n 
+0011752102 00000 n 
+0011752150 00000 n 
+0011752687 00000 n 
+0011752904 00000 n 
+0011756010 00000 n 
+0011756358 00000 n 
+0011756406 00000 n 
+0011763842 00000 n 
+0011764203 00000 n 
+0011764251 00000 n 
+0011772657 00000 n 
+0011773031 00000 n 
+0011773079 00000 n 
+0011773127 00000 n 
+0011773175 00000 n 
+0011775314 00000 n 
+0011775690 00000 n 
+0011775738 00000 n 
+0011775956 00000 n 
+0011776189 00000 n 
+0011778513 00000 n 
+0011778874 00000 n 
+0011778922 00000 n 
+0011790314 00000 n 
+0011790743 00000 n 
+0011790791 00000 n 
+0011790987 00000 n 
+0011791183 00000 n 
+0011791302 00000 n 
+0011791497 00000 n 
+0011791616 00000 n 
+0011797912 00000 n 
+0011798273 00000 n 
+0011798321 00000 n 
+0011831678 00000 n 
+0011832052 00000 n 
+0011832100 00000 n 
+0011832148 00000 n 
+0011890198 00000 n 
+0011890546 00000 n 
+0011892430 00000 n 
+0011892778 00000 n 
+0011892826 00000 n 
+0011893829 00000 n 
+0011894177 00000 n 
+0011894225 00000 n 
+0011900364 00000 n 
+0011900725 00000 n 
+0011900773 00000 n 
+0011900821 00000 n 
+0011900869 00000 n 
+0011903125 00000 n 
+0011903473 00000 n 
+0011903521 00000 n 
+0011903569 00000 n 
+0011903617 00000 n 
+0011903665 00000 n 
+0011903713 00000 n 
+0011909615 00000 n 
 0011910004 00000 n 
-0011928895 00000 n 
-0011929301 00000 n 
-0011929349 00000 n 
-0011929494 00000 n 
-0011948042 00000 n 
-0011948448 00000 n 
-0011948671 00000 n 
-0011956684 00000 n 
-0011957104 00000 n 
-0011957152 00000 n 
-0011957358 00000 n 
-0011957563 00000 n 
-0011957757 00000 n 
-0011957986 00000 n 
-0011977917 00000 n 
-0011978319 00000 n 
-0011978367 00000 n 
-0011978562 00000 n 
-0011978756 00000 n 
-0011978804 00000 n 
-0011998960 00000 n 
-0011999353 00000 n 
-0011999401 00000 n 
-0011999646 00000 n 
-0012030564 00000 n 
-0012030938 00000 n 
-0012030986 00000 n 
-0012050173 00000 n 
-0012050534 00000 n 
-0012059496 00000 n 
-0012059870 00000 n 
-0012059917 00000 n 
-0012059964 00000 n 
-0012060453 00000 n 
-0012070676 00000 n 
-0012071037 00000 n 
-0012071085 00000 n 
-0012071133 00000 n 
-0012071181 00000 n 
-0012074096 00000 n 
-0012074476 00000 n 
-0012074524 00000 n 
-0012074720 00000 n 
-0012074768 00000 n 
-0012075315 00000 n 
-0012075703 00000 n 
-0012076051 00000 n 
-0012076099 00000 n 
-0012084421 00000 n 
-0012084832 00000 n 
-0012084880 00000 n 
-0012085068 00000 n 
-0012085117 00000 n 
-0012085304 00000 n 
-0012085353 00000 n 
-0012085538 00000 n 
-0012085587 00000 n 
-0012095144 00000 n 
-0012095537 00000 n 
-0012095585 00000 n 
-0012095633 00000 n 
-0012095819 00000 n 
-0012099189 00000 n 
-0012099569 00000 n 
-0012099617 00000 n 
-0012099802 00000 n 
-0012100188 00000 n 
-0012100536 00000 n 
-0012100584 00000 n 
-0012112508 00000 n 
-0012112919 00000 n 
-0012112967 00000 n 
-0012113144 00000 n 
-0012113311 00000 n 
-0012113436 00000 n 
-0012113484 00000 n 
-0012113532 00000 n 
-0012127198 00000 n 
-0012127606 00000 n 
-0012127654 00000 n 
-0012127875 00000 n 
-0012148048 00000 n 
-0012148459 00000 n 
-0012148602 00000 n 
-0012148649 00000 n 
-0012148697 00000 n 
-0012148745 00000 n 
-0012148914 00000 n 
-0012149099 00000 n 
-0012174688 00000 n 
-0012175086 00000 n 
-0012175293 00000 n 
-0012175501 00000 n 
-0012175708 00000 n 
-0012193842 00000 n 
-0012194203 00000 n 
-0012208893 00000 n 
-0012209300 00000 n 
-0012209505 00000 n 
-0012209710 00000 n 
-0012209913 00000 n 
-0012210117 00000 n 
-0012218491 00000 n 
-0012218852 00000 n 
-0012227203 00000 n 
-0012227601 00000 n 
-0012227809 00000 n 
-0012228019 00000 n 
-0012228228 00000 n 
-0012242445 00000 n 
-0012242847 00000 n 
-0012243043 00000 n 
-0012243239 00000 n 
-0012260143 00000 n 
-0012260550 00000 n 
-0012260600 00000 n 
-0012260733 00000 n 
-0012260783 00000 n 
-0012271366 00000 n 
-0012271740 00000 n 
-0012271788 00000 n 
-0012271836 00000 n 
-0012282927 00000 n 
-0012283365 00000 n 
-0012283413 00000 n 
-0012283847 00000 n 
-0012283895 00000 n 
-0012284023 00000 n 
-0012284209 00000 n 
-0012284380 00000 n 
-0012284505 00000 n 
-0012284632 00000 n 
-0012284760 00000 n 
-0012284808 00000 n 
-0012296736 00000 n 
-0012297219 00000 n 
-0012297268 00000 n 
-0012297396 00000 n 
-0012297445 00000 n 
-0012297571 00000 n 
-0012297701 00000 n 
-0012297750 00000 n 
-0012297875 00000 n 
-0012297999 00000 n 
-0012298133 00000 n 
-0012298267 00000 n 
-0012298402 00000 n 
-0012298525 00000 n 
-0012298661 00000 n 
-0012298791 00000 n 
-0012304364 00000 n 
-0012304794 00000 n 
-0012304842 00000 n 
-0012304965 00000 n 
-0012305013 00000 n 
-0012305139 00000 n 
-0012305259 00000 n 
-0012305307 00000 n 
-0012305433 00000 n 
-0012305555 00000 n 
-0012305603 00000 n 
-0012305724 00000 n 
-0012305848 00000 n 
-0012305896 00000 n 
-0012306020 00000 n 
-0012314016 00000 n 
-0012314377 00000 n 
-0012314425 00000 n 
-0012314474 00000 n 
-0012314523 00000 n 
-0012335685 00000 n 
-0012336059 00000 n 
-0012373461 00000 n 
-0012373809 00000 n 
-0012411331 00000 n 
-0012411679 00000 n 
-0012444246 00000 n 
-0012444594 00000 n 
-0012475220 00000 n 
-0012475568 00000 n 
-0012486774 00000 n 
-0012487212 00000 n 
-0012487260 00000 n 
-0012487409 00000 n 
-0012487606 00000 n 
-0012487741 00000 n 
-0012487878 00000 n 
-0012488017 00000 n 
-0012488159 00000 n 
-0012493543 00000 n 
-0012493945 00000 n 
-0012534602 00000 n 
-0012562365 00000 n 
-0012570229 00000 n 
-0012570604 00000 n 
-0012616645 00000 n 
-0012616694 00000 n 
-0012634803 00000 n 
-0012635209 00000 n 
-0012635392 00000 n 
-0012635439 00000 n 
-0012669006 00000 n 
-0012669380 00000 n 
-0012700989 00000 n 
-0012701400 00000 n 
-0012701593 00000 n 
-0012701784 00000 n 
-0012701995 00000 n 
-0012702043 00000 n 
-0012702091 00000 n 
-0012716868 00000 n 
-0012717284 00000 n 
-0012717479 00000 n 
-0012717615 00000 n 
-0012717664 00000 n 
-0012717872 00000 n 
-0012718014 00000 n 
-0012718063 00000 n 
-0012718199 00000 n 
-0012718248 00000 n 
-0012730108 00000 n 
-0012730523 00000 n 
-0012730655 00000 n 
-0012730797 00000 n 
-0012730845 00000 n 
-0012730894 00000 n 
-0012730943 00000 n 
-0012743357 00000 n 
-0012743731 00000 n 
-0012743780 00000 n 
-0012754797 00000 n 
-0012755171 00000 n 
-0012755220 00000 n 
-0012758084 00000 n 
-0012758445 00000 n 
-0012759772 00000 n 
-0012760148 00000 n 
-0012760196 00000 n 
-0012760244 00000 n 
-0012760413 00000 n 
-0012760461 00000 n 
-0012760643 00000 n 
-0012763601 00000 n 
-0012763995 00000 n 
-0012764043 00000 n 
-0012764228 00000 n 
-0012764421 00000 n 
-0012764598 00000 n 
-0012764774 00000 n 
-0012771975 00000 n 
-0012772350 00000 n 
-0012772398 00000 n 
-0012772446 00000 n 
-0012772494 00000 n 
-0012798381 00000 n 
-0012802944 00000 n 
-0012802993 00000 n 
-0012803042 00000 n 
-0012803091 00000 n 
-0012810799 00000 n 
-0012811147 00000 n 
-0012811195 00000 n 
-0012857963 00000 n 
-0012864601 00000 n 
-0012864976 00000 n 
-0012865025 00000 n 
-0012874955 00000 n 
-0012875316 00000 n 
-0012875364 00000 n 
-0012875412 00000 n 
-0012887954 00000 n 
-0012888315 00000 n 
-0012888363 00000 n 
-0012902119 00000 n 
-0012902480 00000 n 
-0012902528 00000 n 
-0012903105 00000 n 
-0012903153 00000 n 
-0012903201 00000 n 
-0012921132 00000 n 
-0012921480 00000 n 
-0012921528 00000 n 
-0012933961 00000 n 
-0012934404 00000 n 
-0012934452 00000 n 
-0012934864 00000 n 
-0012934912 00000 n 
-0012935052 00000 n 
-0012935179 00000 n 
-0012935329 00000 n 
-0012935466 00000 n 
-0012935514 00000 n 
-0012935646 00000 n 
+0011910052 00000 n 
+0011910247 00000 n 
+0011910470 00000 n 
+0011910518 00000 n 
+0011929409 00000 n 
+0011929815 00000 n 
+0011929863 00000 n 
+0011930008 00000 n 
+0011948556 00000 n 
+0011948962 00000 n 
+0011949185 00000 n 
+0011957198 00000 n 
+0011957618 00000 n 
+0011957666 00000 n 
+0011957872 00000 n 
+0011958077 00000 n 
+0011958271 00000 n 
+0011958500 00000 n 
+0011978431 00000 n 
+0011978833 00000 n 
+0011978881 00000 n 
+0011979076 00000 n 
+0011979270 00000 n 
+0011979318 00000 n 
+0011999474 00000 n 
+0011999867 00000 n 
+0011999915 00000 n 
+0012000160 00000 n 
+0012031078 00000 n 
+0012031452 00000 n 
+0012031500 00000 n 
+0012050687 00000 n 
+0012051048 00000 n 
+0012060010 00000 n 
+0012060384 00000 n 
+0012060431 00000 n 
+0012060478 00000 n 
+0012060967 00000 n 
+0012071190 00000 n 
+0012071551 00000 n 
+0012071599 00000 n 
+0012071647 00000 n 
+0012071695 00000 n 
+0012074610 00000 n 
+0012074990 00000 n 
+0012075038 00000 n 
+0012075234 00000 n 
+0012075282 00000 n 
+0012075829 00000 n 
+0012076217 00000 n 
+0012076565 00000 n 
+0012076613 00000 n 
+0012084935 00000 n 
+0012085346 00000 n 
+0012085394 00000 n 
+0012085582 00000 n 
+0012085631 00000 n 
+0012085818 00000 n 
+0012085867 00000 n 
+0012086052 00000 n 
+0012086101 00000 n 
+0012095658 00000 n 
+0012096051 00000 n 
+0012096099 00000 n 
+0012096147 00000 n 
+0012096333 00000 n 
+0012099703 00000 n 
+0012100083 00000 n 
+0012100131 00000 n 
+0012100316 00000 n 
+0012100702 00000 n 
+0012101050 00000 n 
+0012101098 00000 n 
+0012113022 00000 n 
+0012113433 00000 n 
+0012113481 00000 n 
+0012113658 00000 n 
+0012113825 00000 n 
+0012113950 00000 n 
+0012113998 00000 n 
+0012114046 00000 n 
+0012127712 00000 n 
+0012128120 00000 n 
+0012128168 00000 n 
+0012128389 00000 n 
+0012148562 00000 n 
+0012148973 00000 n 
+0012149116 00000 n 
+0012149163 00000 n 
+0012149211 00000 n 
+0012149259 00000 n 
+0012149428 00000 n 
+0012149613 00000 n 
+0012175202 00000 n 
+0012175600 00000 n 
+0012175807 00000 n 
+0012176015 00000 n 
+0012176222 00000 n 
+0012194356 00000 n 
+0012194717 00000 n 
+0012209407 00000 n 
+0012209814 00000 n 
+0012210019 00000 n 
+0012210224 00000 n 
+0012210427 00000 n 
+0012210631 00000 n 
+0012219005 00000 n 
+0012219366 00000 n 
+0012227717 00000 n 
+0012228115 00000 n 
+0012228323 00000 n 
+0012228533 00000 n 
+0012228742 00000 n 
+0012242959 00000 n 
+0012243361 00000 n 
+0012243557 00000 n 
+0012243753 00000 n 
+0012260657 00000 n 
+0012261064 00000 n 
+0012261114 00000 n 
+0012261247 00000 n 
+0012261297 00000 n 
+0012271880 00000 n 
+0012272254 00000 n 
+0012272302 00000 n 
+0012272350 00000 n 
+0012283441 00000 n 
+0012283879 00000 n 
+0012283927 00000 n 
+0012284361 00000 n 
+0012284409 00000 n 
+0012284537 00000 n 
+0012284723 00000 n 
+0012284894 00000 n 
+0012285019 00000 n 
+0012285146 00000 n 
+0012285274 00000 n 
+0012285322 00000 n 
+0012297250 00000 n 
+0012297733 00000 n 
+0012297782 00000 n 
+0012297910 00000 n 
+0012297959 00000 n 
+0012298085 00000 n 
+0012298215 00000 n 
+0012298264 00000 n 
+0012298389 00000 n 
+0012298513 00000 n 
+0012298647 00000 n 
+0012298781 00000 n 
+0012298916 00000 n 
+0012299039 00000 n 
+0012299175 00000 n 
+0012299305 00000 n 
+0012304878 00000 n 
+0012305308 00000 n 
+0012305356 00000 n 
+0012305479 00000 n 
+0012305527 00000 n 
+0012305653 00000 n 
+0012305773 00000 n 
+0012305821 00000 n 
+0012305947 00000 n 
+0012306069 00000 n 
+0012306117 00000 n 
+0012306238 00000 n 
+0012306362 00000 n 
+0012306410 00000 n 
+0012306534 00000 n 
+0012314530 00000 n 
+0012314891 00000 n 
+0012314939 00000 n 
+0012314988 00000 n 
+0012315037 00000 n 
+0012336199 00000 n 
+0012336573 00000 n 
+0012373975 00000 n 
+0012374323 00000 n 
+0012411845 00000 n 
+0012412193 00000 n 
+0012444760 00000 n 
+0012445108 00000 n 
+0012475734 00000 n 
+0012476082 00000 n 
+0012487288 00000 n 
+0012487726 00000 n 
+0012487774 00000 n 
+0012487923 00000 n 
+0012488120 00000 n 
+0012488255 00000 n 
+0012488392 00000 n 
+0012488531 00000 n 
+0012488673 00000 n 
+0012494057 00000 n 
+0012494459 00000 n 
+0012535116 00000 n 
+0012562879 00000 n 
+0012570743 00000 n 
+0012571118 00000 n 
+0012617159 00000 n 
+0012617208 00000 n 
+0012635317 00000 n 
+0012635723 00000 n 
+0012635906 00000 n 
+0012635953 00000 n 
+0012669520 00000 n 
+0012669894 00000 n 
+0012701503 00000 n 
+0012701914 00000 n 
+0012702107 00000 n 
+0012702298 00000 n 
+0012702509 00000 n 
+0012702557 00000 n 
+0012702605 00000 n 
+0012717382 00000 n 
+0012717798 00000 n 
+0012717993 00000 n 
+0012718129 00000 n 
+0012718178 00000 n 
+0012718386 00000 n 
+0012718528 00000 n 
+0012718577 00000 n 
+0012718713 00000 n 
+0012718762 00000 n 
+0012730622 00000 n 
+0012731037 00000 n 
+0012731169 00000 n 
+0012731311 00000 n 
+0012731359 00000 n 
+0012731408 00000 n 
+0012731457 00000 n 
+0012743871 00000 n 
+0012744245 00000 n 
+0012744294 00000 n 
+0012755311 00000 n 
+0012755685 00000 n 
+0012755734 00000 n 
+0012758598 00000 n 
+0012758959 00000 n 
+0012760286 00000 n 
+0012760662 00000 n 
+0012760710 00000 n 
+0012760758 00000 n 
+0012760927 00000 n 
+0012760975 00000 n 
+0012761157 00000 n 
+0012764115 00000 n 
+0012764509 00000 n 
+0012764557 00000 n 
+0012764742 00000 n 
+0012764935 00000 n 
+0012765112 00000 n 
+0012765288 00000 n 
+0012772489 00000 n 
+0012772864 00000 n 
+0012772912 00000 n 
+0012772960 00000 n 
+0012773008 00000 n 
+0012798895 00000 n 
+0012803458 00000 n 
+0012803507 00000 n 
+0012803556 00000 n 
+0012803605 00000 n 
+0012811313 00000 n 
+0012811661 00000 n 
+0012811709 00000 n 
+0012858477 00000 n 
+0012865115 00000 n 
+0012865490 00000 n 
+0012865539 00000 n 
+0012875469 00000 n 
+0012875830 00000 n 
+0012875878 00000 n 
+0012875926 00000 n 
+0012888468 00000 n 
+0012888829 00000 n 
+0012888877 00000 n 
+0012902633 00000 n 
+0012902994 00000 n 
+0012903042 00000 n 
+0012903619 00000 n 
+0012903667 00000 n 
+0012903715 00000 n 
+0012921646 00000 n 
+0012921994 00000 n 
+0012922042 00000 n 
+0012934475 00000 n 
+0012934918 00000 n 
+0012934966 00000 n 
+0012935378 00000 n 
+0012935426 00000 n 
+0012935566 00000 n 
 0012935693 00000 n 
-0012935818 00000 n 
-0012935866 00000 n 
-0012935994 00000 n 
-0012936208 00000 n 
-0012946245 00000 n 
-0012946625 00000 n 
-0012946673 00000 n 
-0012946809 00000 n 
-0012954219 00000 n 
-0012954716 00000 n 
-0012954764 00000 n 
-0012954812 00000 n 
-0012954983 00000 n 
-0012955155 00000 n 
-0012955411 00000 n 
-0012955460 00000 n 
-0012955709 00000 n 
-0012955937 00000 n 
-0012956181 00000 n 
-0012956230 00000 n 
-0012956423 00000 n 
-0012956633 00000 n 
-0012956846 00000 n 
-0012956895 00000 n 
-0012957087 00000 n 
-0012957320 00000 n 
-0012957505 00000 n 
-0012957554 00000 n 
-0012957747 00000 n 
-0012957796 00000 n 
-0012958228 00000 n 
-0012958422 00000 n 
-0012960406 00000 n 
-0012960773 00000 n 
-0012960821 00000 n 
-0012961015 00000 n 
-0012964391 00000 n 
-0012964767 00000 n 
-0012964815 00000 n 
-0012964863 00000 n 
-0012965047 00000 n 
-0012965095 00000 n 
-0012965289 00000 n 
-0012968903 00000 n 
-0012969342 00000 n 
-0012969390 00000 n 
-0012973650 00000 n 
-0012974180 00000 n 
-0012974374 00000 n 
-0012974558 00000 n 
-0012974751 00000 n 
-0012974948 00000 n 
-0012975143 00000 n 
-0012975329 00000 n 
-0012998909 00000 n 
-0012999338 00000 n 
-0012999386 00000 n 
-0012999567 00000 n 
-0012999762 00000 n 
-0012999957 00000 n 
-0013000005 00000 n 
-0013000184 00000 n 
-0013000431 00000 n 
-0013009067 00000 n 
-0013009447 00000 n 
-0013009630 00000 n 
-0013039495 00000 n 
-0013039869 00000 n 
-0013039917 00000 n 
-0013060643 00000 n 
-0013061004 00000 n 
-0013061052 00000 n 
-0013071102 00000 n 
-0013071523 00000 n 
-0013071571 00000 n 
-0013072145 00000 n 
-0013072339 00000 n 
-0013072560 00000 n 
-0013072777 00000 n 
-0013072993 00000 n 
-0013073224 00000 n 
-0013073272 00000 n 
-0013073320 00000 n 
-0013073368 00000 n 
-0013073599 00000 n 
-0013073832 00000 n 
-0013073880 00000 n 
-0013073928 00000 n 
-0013087835 00000 n 
-0013088222 00000 n 
-0013088271 00000 n 
-0013088320 00000 n 
-0013088369 00000 n 
-0013096341 00000 n 
-0013096702 00000 n 
-0013096751 00000 n 
-0013096800 00000 n 
-0013096849 00000 n 
-0013096898 00000 n 
-0013096947 00000 n 
-0013108698 00000 n 
-0013109085 00000 n 
-0013109134 00000 n 
-0013109736 00000 n 
-0013110084 00000 n 
-0013110132 00000 n 
-0013122682 00000 n 
-0013123045 00000 n 
-0013123093 00000 n 
-0013123141 00000 n 
-0013123189 00000 n 
-0013123237 00000 n 
-0013123285 00000 n 
-0013138885 00000 n 
-0013139248 00000 n 
-0013139296 00000 n 
-0013139344 00000 n 
-0013139392 00000 n 
-0013154202 00000 n 
-0013154565 00000 n 
-0013154613 00000 n 
-0013154661 00000 n 
-0013171329 00000 n 
-0013171664 00000 n 
-0013185697 00000 n 
-0013186060 00000 n 
-0013186108 00000 n 
-0013186156 00000 n 
-0013186204 00000 n 
-0013186252 00000 n 
-0013199209 00000 n 
-0013199572 00000 n 
-0013199620 00000 n 
-0013199668 00000 n 
-0013199716 00000 n 
-0013199764 00000 n 
-0013199812 00000 n 
-0013216868 00000 n 
-0013217231 00000 n 
-0013217279 00000 n 
-0013217327 00000 n 
-0013217375 00000 n 
-0013217423 00000 n 
-0013217471 00000 n 
-0013217886 00000 n 
-0013239900 00000 n 
-0013240263 00000 n 
-0013240311 00000 n 
-0013240359 00000 n 
-0013255776 00000 n 
-0013256124 00000 n 
-0013256172 00000 n 
-0013256220 00000 n 
-0013256268 00000 n 
-0013269341 00000 n 
-0013269689 00000 n 
-0013269737 00000 n 
-0013269785 00000 n 
-0013269833 00000 n 
-0013288596 00000 n 
-0013288959 00000 n 
-0013289007 00000 n 
-0013289055 00000 n 
-0013289103 00000 n 
-0013304078 00000 n 
-0013304441 00000 n 
-0013304489 00000 n 
-0013304932 00000 n 
-0013304980 00000 n 
-0013305028 00000 n 
-0013305076 00000 n 
-0013318968 00000 n 
-0013319331 00000 n 
-0013319379 00000 n 
-0013319427 00000 n 
-0013319475 00000 n 
-0013319523 00000 n 
-0013319571 00000 n 
-0013335436 00000 n 
-0013335799 00000 n 
-0013335847 00000 n 
-0013335895 00000 n 
-0013336516 00000 n 
-0013336564 00000 n 
-0013336612 00000 n 
-0013351880 00000 n 
-0013352243 00000 n 
-0013352291 00000 n 
-0013352339 00000 n 
-0013352387 00000 n 
-0013352435 00000 n 
-0013352483 00000 n 
-0013352531 00000 n 
-0013353063 00000 n 
-0013367466 00000 n 
-0013367829 00000 n 
-0013367877 00000 n 
-0013367925 00000 n 
-0013368529 00000 n 
-0013368718 00000 n 
-0013368766 00000 n 
-0013368814 00000 n 
-0013368862 00000 n 
-0013388698 00000 n 
-0013389061 00000 n 
-0013389109 00000 n 
-0013389157 00000 n 
-0013401524 00000 n 
-0013401887 00000 n 
-0013401935 00000 n 
-0013401983 00000 n 
-0013402031 00000 n 
-0013402079 00000 n 
-0013402127 00000 n 
-0013402175 00000 n 
-0013402223 00000 n 
-0013414924 00000 n 
-0013415287 00000 n 
-0013415335 00000 n 
-0013415684 00000 n 
-0013415732 00000 n 
-0013416132 00000 n 
-0013416180 00000 n 
-0013416228 00000 n 
-0013416276 00000 n 
-0013416914 00000 n 
-0013431298 00000 n 
-0013431661 00000 n 
-0013431709 00000 n 
-0013431757 00000 n 
-0013431805 00000 n 
-0013431853 00000 n 
-0013439790 00000 n 
-0013440138 00000 n 
-0013440257 00000 n 
-0013440379 00000 n 
-0013440508 00000 n 
-0013440638 00000 n 
-0013440763 00000 n 
-0013440890 00000 n 
-0013441013 00000 n 
-0013441138 00000 n 
-0013441265 00000 n 
-0013441392 00000 n 
-0013441525 00000 n 
-0013441658 00000 n 
-0013441790 00000 n 
-0013441923 00000 n 
-0013442051 00000 n 
-0013442180 00000 n 
-0013442301 00000 n 
-0013442422 00000 n 
-0013442548 00000 n 
-0013442674 00000 n 
-0013442802 00000 n 
-0013442930 00000 n 
-0013443068 00000 n 
-0013443206 00000 n 
-0013443330 00000 n 
-0013443454 00000 n 
-0013443577 00000 n 
-0013443700 00000 n 
-0013443830 00000 n 
-0013443960 00000 n 
-0013444081 00000 n 
-0013444203 00000 n 
-0013444330 00000 n 
-0013444457 00000 n 
-0013444575 00000 n 
-0013444695 00000 n 
-0013444818 00000 n 
-0013444942 00000 n 
-0013445097 00000 n 
-0013445253 00000 n 
-0013445392 00000 n 
-0013445533 00000 n 
-0013445692 00000 n 
-0013445852 00000 n 
-0013445996 00000 n 
-0013446142 00000 n 
-0013446305 00000 n 
-0013446469 00000 n 
-0013446595 00000 n 
-0013446722 00000 n 
-0013446844 00000 n 
-0013446968 00000 n 
-0013447096 00000 n 
-0013447226 00000 n 
-0013447353 00000 n 
-0013447481 00000 n 
-0013447603 00000 n 
-0013447727 00000 n 
-0013447846 00000 n 
-0013447966 00000 n 
-0013448079 00000 n 
-0013448197 00000 n 
-0013448323 00000 n 
-0013448450 00000 n 
-0013448568 00000 n 
-0013448688 00000 n 
-0013448823 00000 n 
-0013448959 00000 n 
-0013449081 00000 n 
-0013449204 00000 n 
-0013449325 00000 n 
-0013449447 00000 n 
-0013449576 00000 n 
-0013449707 00000 n 
-0013449824 00000 n 
-0013449942 00000 n 
-0013450060 00000 n 
-0013450179 00000 n 
-0013450299 00000 n 
-0013450420 00000 n 
-0013450548 00000 n 
-0013450678 00000 n 
-0013450819 00000 n 
-0013450961 00000 n 
-0013451108 00000 n 
-0013451257 00000 n 
-0013451384 00000 n 
-0013451512 00000 n 
-0013451639 00000 n 
-0013451767 00000 n 
-0013451896 00000 n 
+0012935843 00000 n 
+0012935980 00000 n 
+0012936028 00000 n 
+0012936160 00000 n 
+0012936207 00000 n 
+0012936332 00000 n 
+0012936380 00000 n 
+0012936508 00000 n 
+0012936722 00000 n 
+0012946759 00000 n 
+0012947139 00000 n 
+0012947187 00000 n 
+0012947323 00000 n 
+0012954733 00000 n 
+0012955230 00000 n 
+0012955278 00000 n 
+0012955326 00000 n 
+0012955497 00000 n 
+0012955669 00000 n 
+0012955925 00000 n 
+0012955974 00000 n 
+0012956223 00000 n 
+0012956451 00000 n 
+0012956695 00000 n 
+0012956744 00000 n 
+0012956937 00000 n 
+0012957147 00000 n 
+0012957360 00000 n 
+0012957409 00000 n 
+0012957601 00000 n 
+0012957834 00000 n 
+0012958019 00000 n 
+0012958068 00000 n 
+0012958261 00000 n 
+0012958310 00000 n 
+0012958742 00000 n 
+0012958936 00000 n 
+0012960920 00000 n 
+0012961287 00000 n 
+0012961335 00000 n 
+0012961529 00000 n 
+0012964905 00000 n 
+0012965281 00000 n 
+0012965329 00000 n 
+0012965377 00000 n 
+0012965561 00000 n 
+0012965609 00000 n 
+0012965803 00000 n 
+0012969417 00000 n 
+0012969856 00000 n 
+0012969904 00000 n 
+0012974164 00000 n 
+0012974694 00000 n 
+0012974888 00000 n 
+0012975072 00000 n 
+0012975265 00000 n 
+0012975462 00000 n 
+0012975657 00000 n 
+0012975843 00000 n 
+0012999423 00000 n 
+0012999852 00000 n 
+0012999900 00000 n 
+0013000081 00000 n 
+0013000276 00000 n 
+0013000471 00000 n 
+0013000519 00000 n 
+0013000698 00000 n 
+0013000945 00000 n 
+0013009581 00000 n 
+0013009961 00000 n 
+0013010144 00000 n 
+0013040009 00000 n 
+0013040383 00000 n 
+0013040431 00000 n 
+0013061157 00000 n 
+0013061518 00000 n 
+0013061566 00000 n 
+0013071616 00000 n 
+0013072037 00000 n 
+0013072085 00000 n 
+0013072659 00000 n 
+0013072853 00000 n 
+0013073074 00000 n 
+0013073291 00000 n 
+0013073507 00000 n 
+0013073738 00000 n 
+0013073786 00000 n 
+0013073834 00000 n 
+0013073882 00000 n 
+0013074113 00000 n 
+0013074346 00000 n 
+0013074394 00000 n 
+0013074442 00000 n 
+0013088349 00000 n 
+0013088736 00000 n 
+0013088785 00000 n 
+0013088834 00000 n 
+0013088883 00000 n 
+0013096855 00000 n 
+0013097216 00000 n 
+0013097265 00000 n 
+0013097314 00000 n 
+0013097363 00000 n 
+0013097412 00000 n 
+0013097461 00000 n 
+0013109212 00000 n 
+0013109599 00000 n 
+0013109648 00000 n 
+0013110250 00000 n 
+0013110598 00000 n 
+0013110646 00000 n 
+0013123196 00000 n 
+0013123559 00000 n 
+0013123607 00000 n 
+0013123655 00000 n 
+0013123703 00000 n 
+0013123751 00000 n 
+0013123799 00000 n 
+0013139399 00000 n 
+0013139762 00000 n 
+0013139810 00000 n 
+0013139858 00000 n 
+0013139906 00000 n 
+0013154716 00000 n 
+0013155079 00000 n 
+0013155127 00000 n 
+0013155175 00000 n 
+0013171843 00000 n 
+0013172178 00000 n 
+0013186211 00000 n 
+0013186574 00000 n 
+0013186622 00000 n 
+0013186670 00000 n 
+0013186718 00000 n 
+0013186766 00000 n 
+0013199723 00000 n 
+0013200086 00000 n 
+0013200134 00000 n 
+0013200182 00000 n 
+0013200230 00000 n 
+0013200278 00000 n 
+0013200326 00000 n 
+0013217382 00000 n 
+0013217745 00000 n 
+0013217793 00000 n 
+0013217841 00000 n 
+0013217889 00000 n 
+0013217937 00000 n 
+0013217985 00000 n 
+0013218400 00000 n 
+0013240414 00000 n 
+0013240777 00000 n 
+0013240825 00000 n 
+0013240873 00000 n 
+0013256290 00000 n 
+0013256638 00000 n 
+0013256686 00000 n 
+0013256734 00000 n 
+0013256782 00000 n 
+0013269855 00000 n 
+0013270203 00000 n 
+0013270251 00000 n 
+0013270299 00000 n 
+0013270347 00000 n 
+0013289110 00000 n 
+0013289473 00000 n 
+0013289521 00000 n 
+0013289569 00000 n 
+0013289617 00000 n 
+0013304592 00000 n 
+0013304955 00000 n 
+0013305003 00000 n 
+0013305446 00000 n 
+0013305494 00000 n 
+0013305542 00000 n 
+0013305590 00000 n 
+0013319482 00000 n 
+0013319845 00000 n 
+0013319893 00000 n 
+0013319941 00000 n 
+0013319989 00000 n 
+0013320037 00000 n 
+0013320085 00000 n 
+0013335950 00000 n 
+0013336313 00000 n 
+0013336361 00000 n 
+0013336409 00000 n 
+0013337030 00000 n 
+0013337078 00000 n 
+0013337126 00000 n 
+0013352394 00000 n 
+0013352757 00000 n 
+0013352805 00000 n 
+0013352853 00000 n 
+0013352901 00000 n 
+0013352949 00000 n 
+0013352997 00000 n 
+0013353045 00000 n 
+0013353577 00000 n 
+0013367980 00000 n 
+0013368343 00000 n 
+0013368391 00000 n 
+0013368439 00000 n 
+0013369043 00000 n 
+0013369232 00000 n 
+0013369280 00000 n 
+0013369328 00000 n 
+0013369376 00000 n 
+0013389212 00000 n 
+0013389575 00000 n 
+0013389623 00000 n 
+0013389671 00000 n 
+0013402038 00000 n 
+0013402401 00000 n 
+0013402449 00000 n 
+0013402497 00000 n 
+0013402545 00000 n 
+0013402593 00000 n 
+0013402641 00000 n 
+0013402689 00000 n 
+0013402737 00000 n 
+0013415438 00000 n 
+0013415801 00000 n 
+0013415849 00000 n 
+0013416198 00000 n 
+0013416246 00000 n 
+0013416646 00000 n 
+0013416694 00000 n 
+0013416742 00000 n 
+0013416790 00000 n 
+0013417428 00000 n 
+0013431812 00000 n 
+0013432175 00000 n 
+0013432223 00000 n 
+0013432271 00000 n 
+0013432319 00000 n 
+0013432367 00000 n 
+0013440304 00000 n 
+0013440652 00000 n 
+0013440771 00000 n 
+0013440893 00000 n 
+0013441022 00000 n 
+0013441152 00000 n 
+0013441277 00000 n 
+0013441404 00000 n 
+0013441527 00000 n 
+0013441652 00000 n 
+0013441779 00000 n 
+0013441906 00000 n 
+0013442039 00000 n 
+0013442172 00000 n 
+0013442304 00000 n 
+0013442437 00000 n 
+0013442565 00000 n 
+0013442694 00000 n 
+0013442815 00000 n 
+0013442936 00000 n 
+0013443062 00000 n 
+0013443188 00000 n 
+0013443316 00000 n 
+0013443444 00000 n 
+0013443582 00000 n 
+0013443720 00000 n 
+0013443844 00000 n 
+0013443968 00000 n 
+0013444091 00000 n 
+0013444214 00000 n 
+0013444344 00000 n 
+0013444474 00000 n 
+0013444595 00000 n 
+0013444717 00000 n 
+0013444844 00000 n 
+0013444971 00000 n 
+0013445089 00000 n 
+0013445209 00000 n 
+0013445332 00000 n 
+0013445456 00000 n 
+0013445611 00000 n 
+0013445767 00000 n 
+0013445906 00000 n 
+0013446047 00000 n 
+0013446206 00000 n 
+0013446366 00000 n 
+0013446510 00000 n 
+0013446656 00000 n 
+0013446819 00000 n 
+0013446983 00000 n 
+0013447109 00000 n 
+0013447236 00000 n 
+0013447358 00000 n 
+0013447482 00000 n 
+0013447610 00000 n 
+0013447740 00000 n 
+0013447867 00000 n 
+0013447995 00000 n 
+0013448117 00000 n 
+0013448241 00000 n 
+0013448360 00000 n 
+0013448480 00000 n 
+0013448593 00000 n 
+0013448711 00000 n 
+0013448837 00000 n 
+0013448964 00000 n 
+0013449082 00000 n 
+0013449202 00000 n 
+0013449337 00000 n 
+0013449473 00000 n 
+0013449595 00000 n 
+0013449718 00000 n 
+0013449839 00000 n 
+0013449961 00000 n 
+0013450090 00000 n 
+0013450221 00000 n 
+0013450338 00000 n 
+0013450456 00000 n 
+0013450574 00000 n 
+0013450693 00000 n 
+0013450813 00000 n 
+0013450934 00000 n 
+0013451062 00000 n 
+0013451192 00000 n 
+0013451333 00000 n 
+0013451475 00000 n 
+0013451622 00000 n 
+0013451771 00000 n 
+0013451898 00000 n 
 0013452026 00000 n 
-0013452159 00000 n 
-0013452293 00000 n 
-0013452419 00000 n 
-0013452546 00000 n 
-0013452663 00000 n 
-0013452781 00000 n 
-0013452910 00000 n 
-0013453040 00000 n 
-0013453170 00000 n 
-0013453302 00000 n 
-0013453427 00000 n 
-0013453553 00000 n 
-0013453685 00000 n 
-0013453818 00000 n 
-0013453942 00000 n 
+0013452153 00000 n 
+0013452281 00000 n 
+0013452410 00000 n 
+0013452540 00000 n 
+0013452673 00000 n 
+0013452807 00000 n 
+0013452933 00000 n 
+0013453060 00000 n 
+0013453177 00000 n 
+0013453295 00000 n 
+0013453424 00000 n 
+0013453554 00000 n 
+0013453684 00000 n 
+0013453816 00000 n 
+0013453941 00000 n 
 0013454067 00000 n 
-0013454193 00000 n 
-0013454321 00000 n 
-0013454444 00000 n 
-0013454568 00000 n 
+0013454199 00000 n 
+0013454332 00000 n 
+0013454456 00000 n 
+0013454581 00000 n 
 0013454707 00000 n 
-0013454847 00000 n 
-0013454982 00000 n 
-0013455119 00000 n 
-0013455261 00000 n 
-0013455404 00000 n 
-0013455568 00000 n 
-0013455733 00000 n 
-0013455889 00000 n 
-0013456046 00000 n 
-0013456178 00000 n 
-0013456311 00000 n 
-0013456433 00000 n 
-0013456556 00000 n 
-0013456686 00000 n 
-0013456818 00000 n 
-0013456955 00000 n 
-0013457093 00000 n 
-0013457223 00000 n 
-0013457354 00000 n 
-0013457476 00000 n 
-0013457600 00000 n 
-0013457722 00000 n 
-0013457845 00000 n 
-0013457997 00000 n 
-0013458150 00000 n 
-0013458286 00000 n 
-0013458423 00000 n 
-0013458563 00000 n 
-0013458704 00000 n 
-0013458850 00000 n 
-0013458997 00000 n 
-0013459148 00000 n 
-0013459300 00000 n 
-0013459442 00000 n 
-0013459585 00000 n 
-0013459722 00000 n 
-0013459860 00000 n 
-0013459985 00000 n 
-0013460112 00000 n 
-0013460237 00000 n 
-0013460364 00000 n 
-0013460488 00000 n 
-0013460613 00000 n 
-0013460744 00000 n 
-0013460876 00000 n 
-0013461003 00000 n 
-0013461131 00000 n 
-0013461264 00000 n 
-0013461398 00000 n 
-0013461528 00000 n 
-0013461660 00000 n 
-0013461786 00000 n 
-0013461913 00000 n 
-0013462040 00000 n 
-0013462169 00000 n 
-0013462291 00000 n 
-0013462415 00000 n 
-0013462558 00000 n 
-0013462702 00000 n 
-0013462824 00000 n 
-0013462948 00000 n 
-0013463080 00000 n 
-0013463214 00000 n 
-0013463339 00000 n 
-0013463466 00000 n 
-0013463587 00000 n 
-0013463710 00000 n 
-0013463836 00000 n 
-0013463964 00000 n 
-0013464088 00000 n 
-0013464214 00000 n 
-0013464342 00000 n 
-0013464471 00000 n 
-0013464596 00000 n 
-0013464722 00000 n 
-0013464852 00000 n 
-0013464983 00000 n 
-0013465123 00000 n 
-0013465265 00000 n 
-0013465396 00000 n 
-0013465528 00000 n 
-0013465665 00000 n 
-0013465803 00000 n 
-0013465934 00000 n 
-0013466066 00000 n 
-0013466201 00000 n 
-0013466337 00000 n 
-0013466467 00000 n 
-0013466598 00000 n 
-0013466732 00000 n 
-0013466867 00000 n 
-0013467009 00000 n 
-0013467152 00000 n 
-0013467293 00000 n 
-0013467435 00000 n 
-0013467563 00000 n 
-0013467692 00000 n 
-0013467821 00000 n 
-0013467951 00000 n 
+0013454835 00000 n 
+0013454958 00000 n 
+0013455082 00000 n 
+0013455221 00000 n 
+0013455361 00000 n 
+0013455496 00000 n 
+0013455633 00000 n 
+0013455775 00000 n 
+0013455918 00000 n 
+0013456082 00000 n 
+0013456247 00000 n 
+0013456403 00000 n 
+0013456560 00000 n 
+0013456692 00000 n 
+0013456825 00000 n 
+0013456947 00000 n 
+0013457070 00000 n 
+0013457200 00000 n 
+0013457332 00000 n 
+0013457469 00000 n 
+0013457607 00000 n 
+0013457737 00000 n 
+0013457868 00000 n 
+0013457990 00000 n 
+0013458114 00000 n 
+0013458236 00000 n 
+0013458359 00000 n 
+0013458511 00000 n 
+0013458664 00000 n 
+0013458800 00000 n 
+0013458937 00000 n 
+0013459077 00000 n 
+0013459218 00000 n 
+0013459364 00000 n 
+0013459511 00000 n 
+0013459662 00000 n 
+0013459814 00000 n 
+0013459956 00000 n 
+0013460099 00000 n 
+0013460236 00000 n 
+0013460374 00000 n 
+0013460499 00000 n 
+0013460626 00000 n 
+0013460751 00000 n 
+0013460878 00000 n 
+0013461002 00000 n 
+0013461127 00000 n 
+0013461258 00000 n 
+0013461390 00000 n 
+0013461517 00000 n 
+0013461645 00000 n 
+0013461778 00000 n 
+0013461912 00000 n 
+0013462042 00000 n 
+0013462174 00000 n 
+0013462300 00000 n 
+0013462427 00000 n 
+0013462554 00000 n 
+0013462683 00000 n 
+0013462805 00000 n 
+0013462929 00000 n 
+0013463072 00000 n 
+0013463216 00000 n 
+0013463338 00000 n 
+0013463462 00000 n 
+0013463594 00000 n 
+0013463728 00000 n 
+0013463853 00000 n 
+0013463980 00000 n 
+0013464101 00000 n 
+0013464224 00000 n 
+0013464350 00000 n 
+0013464478 00000 n 
+0013464602 00000 n 
+0013464728 00000 n 
+0013464856 00000 n 
+0013464985 00000 n 
+0013465110 00000 n 
+0013465236 00000 n 
+0013465366 00000 n 
+0013465497 00000 n 
+0013465637 00000 n 
+0013465779 00000 n 
+0013465910 00000 n 
+0013466042 00000 n 
+0013466179 00000 n 
+0013466317 00000 n 
+0013466448 00000 n 
+0013466580 00000 n 
+0013466715 00000 n 
+0013466851 00000 n 
+0013466981 00000 n 
+0013467112 00000 n 
+0013467246 00000 n 
+0013467381 00000 n 
+0013467523 00000 n 
+0013467666 00000 n 
+0013467807 00000 n 
+0013467949 00000 n 
 0013468077 00000 n 
-0013468204 00000 n 
-0013468323 00000 n 
-0013468444 00000 n 
-0013468583 00000 n 
-0013468723 00000 n 
-0013468847 00000 n 
-0013468972 00000 n 
-0013469094 00000 n 
-0013469217 00000 n 
-0013469343 00000 n 
-0013469471 00000 n 
-0013469589 00000 n 
-0013469708 00000 n 
-0013469827 00000 n 
-0013469948 00000 n 
-0013470062 00000 n 
-0013470178 00000 n 
-0013470295 00000 n 
-0013470413 00000 n 
-0013470532 00000 n 
-0013470652 00000 n 
-0013470770 00000 n 
-0013470890 00000 n 
-0013471007 00000 n 
-0013471126 00000 n 
-0013471259 00000 n 
-0013471394 00000 n 
-0013471512 00000 n 
-0013471632 00000 n 
-0013471757 00000 n 
-0013471883 00000 n 
-0013472012 00000 n 
-0013472142 00000 n 
-0013472265 00000 n 
-0013472389 00000 n 
-0013472522 00000 n 
+0013468206 00000 n 
+0013468335 00000 n 
+0013468465 00000 n 
+0013468591 00000 n 
+0013468718 00000 n 
+0013468837 00000 n 
+0013468958 00000 n 
+0013469097 00000 n 
+0013469237 00000 n 
+0013469361 00000 n 
+0013469486 00000 n 
+0013469608 00000 n 
+0013469731 00000 n 
+0013469857 00000 n 
+0013469985 00000 n 
+0013470103 00000 n 
+0013470222 00000 n 
+0013470341 00000 n 
+0013470462 00000 n 
+0013470576 00000 n 
+0013470692 00000 n 
+0013470809 00000 n 
+0013470927 00000 n 
+0013471046 00000 n 
+0013471166 00000 n 
+0013471284 00000 n 
+0013471404 00000 n 
+0013471521 00000 n 
+0013471640 00000 n 
+0013471773 00000 n 
+0013471908 00000 n 
+0013472026 00000 n 
+0013472146 00000 n 
+0013472271 00000 n 
+0013472397 00000 n 
+0013472526 00000 n 
 0013472656 00000 n 
-0013472772 00000 n 
-0013472889 00000 n 
-0013473022 00000 n 
-0013473157 00000 n 
-0013473291 00000 n 
-0013473427 00000 n 
-0013473551 00000 n 
-0013473676 00000 n 
-0013473799 00000 n 
-0013473924 00000 n 
-0013474076 00000 n 
-0013474229 00000 n 
-0013474372 00000 n 
-0013474516 00000 n 
-0013474641 00000 n 
-0013474767 00000 n 
-0013474888 00000 n 
-0013475010 00000 n 
-0013475136 00000 n 
-0013475263 00000 n 
-0013475380 00000 n 
-0013475498 00000 n 
-0013475631 00000 n 
-0013475765 00000 n 
-0013475893 00000 n 
-0013476022 00000 n 
-0013476146 00000 n 
-0013476272 00000 n 
-0013476398 00000 n 
-0013476525 00000 n 
-0013476650 00000 n 
-0013476777 00000 n 
-0013476903 00000 n 
-0013477030 00000 n 
-0013477157 00000 n 
-0013477285 00000 n 
-0013477408 00000 n 
-0013477532 00000 n 
-0013477653 00000 n 
-0013477776 00000 n 
-0013477911 00000 n 
-0013478047 00000 n 
-0013478175 00000 n 
-0013478304 00000 n 
-0013478424 00000 n 
-0013478547 00000 n 
-0013478673 00000 n 
-0013478800 00000 n 
-0013478928 00000 n 
-0013479058 00000 n 
-0013479176 00000 n 
-0013479296 00000 n 
-0013479411 00000 n 
-0013479528 00000 n 
-0013479646 00000 n 
-0013479766 00000 n 
-0013479886 00000 n 
-0013480008 00000 n 
-0013480137 00000 n 
-0013480267 00000 n 
-0013480392 00000 n 
-0013480518 00000 n 
-0013480649 00000 n 
+0013472779 00000 n 
+0013472903 00000 n 
+0013473036 00000 n 
+0013473170 00000 n 
+0013473286 00000 n 
+0013473403 00000 n 
+0013473536 00000 n 
+0013473671 00000 n 
+0013473805 00000 n 
+0013473941 00000 n 
+0013474065 00000 n 
+0013474190 00000 n 
+0013474313 00000 n 
+0013474438 00000 n 
+0013474590 00000 n 
+0013474743 00000 n 
+0013474886 00000 n 
+0013475030 00000 n 
+0013475155 00000 n 
+0013475281 00000 n 
+0013475402 00000 n 
+0013475524 00000 n 
+0013475650 00000 n 
+0013475777 00000 n 
+0013475894 00000 n 
+0013476012 00000 n 
+0013476145 00000 n 
+0013476279 00000 n 
+0013476407 00000 n 
+0013476536 00000 n 
+0013476660 00000 n 
+0013476786 00000 n 
+0013476912 00000 n 
+0013477039 00000 n 
+0013477164 00000 n 
+0013477291 00000 n 
+0013477417 00000 n 
+0013477544 00000 n 
+0013477671 00000 n 
+0013477799 00000 n 
+0013477922 00000 n 
+0013478046 00000 n 
+0013478167 00000 n 
+0013478290 00000 n 
+0013478425 00000 n 
+0013478561 00000 n 
+0013478689 00000 n 
+0013478818 00000 n 
+0013478938 00000 n 
+0013479061 00000 n 
+0013479187 00000 n 
+0013479314 00000 n 
+0013479442 00000 n 
+0013479572 00000 n 
+0013479690 00000 n 
+0013479810 00000 n 
+0013479925 00000 n 
+0013480042 00000 n 
+0013480160 00000 n 
+0013480280 00000 n 
+0013480400 00000 n 
+0013480522 00000 n 
+0013480651 00000 n 
 0013480781 00000 n 
-0013480908 00000 n 
-0013481036 00000 n 
-0013481161 00000 n 
-0013481289 00000 n 
-0013481417 00000 n 
-0013481547 00000 n 
-0013481674 00000 n 
+0013480906 00000 n 
+0013481032 00000 n 
+0013481163 00000 n 
+0013481295 00000 n 
+0013481422 00000 n 
+0013481550 00000 n 
+0013481675 00000 n 
 0013481803 00000 n 
-0013481932 00000 n 
-0013482062 00000 n 
-0013482186 00000 n 
-0013482311 00000 n 
-0013482438 00000 n 
-0013482567 00000 n 
-0013482698 00000 n 
-0013482830 00000 n 
-0013482954 00000 n 
-0013483080 00000 n 
-0013483210 00000 n 
-0013483341 00000 n 
+0013481931 00000 n 
+0013482061 00000 n 
+0013482188 00000 n 
+0013482317 00000 n 
+0013482446 00000 n 
+0013482576 00000 n 
+0013482700 00000 n 
+0013482825 00000 n 
+0013482952 00000 n 
+0013483081 00000 n 
+0013483212 00000 n 
+0013483344 00000 n 
 0013483468 00000 n 
-0013483597 00000 n 
+0013483594 00000 n 
 0013483724 00000 n 
-0013483852 00000 n 
-0013483983 00000 n 
-0013484115 00000 n 
-0013484243 00000 n 
-0013484372 00000 n 
-0013484518 00000 n 
-0013484665 00000 n 
-0013484789 00000 n 
-0013484914 00000 n 
-0013485039 00000 n 
-0013485165 00000 n 
-0013485299 00000 n 
-0013485434 00000 n 
-0013485565 00000 n 
-0013485698 00000 n 
-0013485832 00000 n 
-0013485968 00000 n 
-0013486089 00000 n 
-0013486211 00000 n 
-0013486330 00000 n 
-0013486450 00000 n 
-0013486577 00000 n 
-0013486705 00000 n 
-0013486833 00000 n 
-0013486963 00000 n 
-0013487090 00000 n 
-0013487218 00000 n 
-0013487345 00000 n 
-0013487474 00000 n 
-0013487606 00000 n 
-0013487740 00000 n 
-0013487900 00000 n 
-0013488061 00000 n 
-0013488184 00000 n 
-0013488309 00000 n 
-0013488435 00000 n 
-0013488563 00000 n 
-0013488692 00000 n 
-0013488822 00000 n 
-0013488948 00000 n 
-0013489075 00000 n 
-0013489201 00000 n 
-0013489328 00000 n 
-0013489448 00000 n 
-0013489570 00000 n 
-0013489694 00000 n 
-0013489819 00000 n 
-0013489942 00000 n 
-0013490066 00000 n 
-0013490195 00000 n 
-0013490326 00000 n 
-0013490445 00000 n 
-0013490565 00000 n 
-0013490682 00000 n 
-0013490801 00000 n 
-0013490920 00000 n 
-0013491040 00000 n 
-0013491162 00000 n 
-0013491286 00000 n 
-0013491415 00000 n 
-0013491545 00000 n 
-0013491683 00000 n 
-0013491823 00000 n 
-0013491948 00000 n 
-0013492074 00000 n 
-0013492195 00000 n 
-0013492363 00000 n 
-0013492486 00000 n 
-0013492608 00000 n 
-0013492733 00000 n 
-0013492859 00000 n 
-0013492983 00000 n 
-0013493108 00000 n 
-0013493232 00000 n 
-0013493357 00000 n 
-0013493475 00000 n 
-0013493595 00000 n 
-0013493715 00000 n 
-0013493837 00000 n 
-0013493957 00000 n 
-0013494078 00000 n 
-0013494238 00000 n 
-0013494399 00000 n 
-0013494520 00000 n 
-0013494643 00000 n 
-0013494767 00000 n 
-0013494892 00000 n 
-0013495009 00000 n 
-0013495205 00000 n 
-0013495325 00000 n 
-0013495443 00000 n 
-0013495567 00000 n 
-0013495692 00000 n 
-0013495818 00000 n 
-0013495946 00000 n 
-0013496075 00000 n 
-0013496207 00000 n 
-0013496327 00000 n 
-0013496448 00000 n 
-0013496585 00000 n 
-0013496723 00000 n 
-0013496843 00000 n 
-0013496965 00000 n 
-0013497093 00000 n 
-0013497223 00000 n 
-0013497347 00000 n 
-0013497472 00000 n 
-0013497590 00000 n 
-0013497709 00000 n 
-0013497835 00000 n 
-0013497962 00000 n 
-0013498086 00000 n 
-0013498211 00000 n 
-0013498342 00000 n 
-0013498474 00000 n 
-0013498591 00000 n 
-0013498710 00000 n 
-0013498830 00000 n 
-0013498952 00000 n 
-0013499086 00000 n 
-0013499221 00000 n 
-0013499345 00000 n 
-0013499471 00000 n 
-0013499592 00000 n 
-0013499714 00000 n 
-0013499837 00000 n 
-0013499961 00000 n 
-0013500108 00000 n 
-0013500256 00000 n 
-0013500382 00000 n 
-0013500509 00000 n 
-0013500631 00000 n 
-0013500755 00000 n 
-0013500877 00000 n 
-0013501001 00000 n 
-0013501130 00000 n 
-0013501260 00000 n 
-0013501397 00000 n 
-0013501535 00000 n 
-0013501656 00000 n 
-0013501779 00000 n 
-0013501930 00000 n 
-0013502083 00000 n 
-0013502200 00000 n 
-0013502318 00000 n 
-0013502451 00000 n 
-0013502585 00000 n 
-0013502708 00000 n 
-0013502833 00000 n 
-0013502948 00000 n 
-0013503064 00000 n 
-0013503180 00000 n 
-0013503297 00000 n 
-0013503425 00000 n 
-0013503554 00000 n 
-0013503677 00000 n 
-0013503802 00000 n 
-0013503928 00000 n 
-0013504056 00000 n 
-0013504173 00000 n 
-0013504291 00000 n 
-0013504408 00000 n 
-0013504527 00000 n 
-0013504648 00000 n 
-0013504770 00000 n 
-0013504912 00000 n 
-0013505055 00000 n 
-0013505189 00000 n 
-0013505324 00000 n 
-0013505446 00000 n 
-0013505570 00000 n 
-0013505728 00000 n 
-0013505887 00000 n 
-0013506031 00000 n 
-0013506176 00000 n 
-0013506448 00000 n 
-0013506720 00000 n 
-0013506802 00000 n 
-0013507034 00000 n 
-0013507194 00000 n 
-0013507350 00000 n 
-0013507569 00000 n 
-0013507774 00000 n 
-0013508051 00000 n 
-0013508315 00000 n 
-0013508549 00000 n 
-0013508798 00000 n 
-0013509143 00000 n 
-0013509476 00000 n 
-0013509733 00000 n 
-0013509994 00000 n 
-0013510279 00000 n 
-0013510525 00000 n 
-0013510721 00000 n 
-0013511035 00000 n 
-0013511244 00000 n 
-0013511458 00000 n 
-0013511706 00000 n 
-0013511944 00000 n 
-0013512285 00000 n 
-0013512562 00000 n 
-0013512919 00000 n 
-0013513220 00000 n 
-0013513593 00000 n 
-0013513803 00000 n 
-0013514004 00000 n 
-0013514226 00000 n 
-0013514455 00000 n 
-0013514668 00000 n 
-0013514865 00000 n 
-0013515054 00000 n 
-0013515283 00000 n 
-0013515480 00000 n 
-0013515741 00000 n 
-0013515950 00000 n 
-0013516167 00000 n 
-0013516404 00000 n 
-0013516601 00000 n 
-0013516779 00000 n 
-0013517031 00000 n 
-0013517253 00000 n 
-0013517523 00000 n 
-0013517821 00000 n 
-0013518112 00000 n 
-0013518342 00000 n 
-0013518592 00000 n 
-0013518846 00000 n 
-0013519044 00000 n 
-0013519294 00000 n 
-0013519556 00000 n 
-0013519906 00000 n 
-0013520128 00000 n 
-0013520410 00000 n 
-0013520784 00000 n 
-0013520999 00000 n 
-0013521237 00000 n 
-0013521540 00000 n 
-0013521806 00000 n 
-0013522096 00000 n 
-0013522474 00000 n 
-0013522820 00000 n 
-0013523070 00000 n 
-0013523320 00000 n 
-0013523594 00000 n 
-0013523960 00000 n 
-0013524222 00000 n 
-0013524421 00000 n 
-0013524666 00000 n 
-0013524989 00000 n 
-0013525379 00000 n 
-0013525701 00000 n 
-0013526015 00000 n 
-0013526341 00000 n 
-0013526631 00000 n 
-0013526914 00000 n 
-0013527124 00000 n 
-0013527319 00000 n 
-0013527553 00000 n 
-0013527755 00000 n 
-0013528021 00000 n 
-0013528223 00000 n 
-0013528449 00000 n 
-0013528655 00000 n 
-0013528881 00000 n 
-0013529075 00000 n 
-0013529413 00000 n 
-0013529712 00000 n 
-0013529953 00000 n 
-0013530148 00000 n 
-0013530343 00000 n 
-0013530577 00000 n 
-0013530772 00000 n 
-0013530994 00000 n 
-0013531204 00000 n 
-0013531502 00000 n 
-0013531788 00000 n 
-0013532090 00000 n 
-0013532340 00000 n 
-0013532574 00000 n 
-0013532976 00000 n 
-0013533246 00000 n 
-0013533628 00000 n 
-0013533930 00000 n 
-0013534176 00000 n 
-0013534519 00000 n 
-0013534772 00000 n 
-0013534975 00000 n 
-0013535177 00000 n 
-0013535440 00000 n 
-0013535669 00000 n 
-0013535849 00000 n 
-0013536114 00000 n 
-0013536293 00000 n 
-0013536495 00000 n 
-0013536773 00000 n 
-0013537115 00000 n 
-0013537317 00000 n 
-0013537508 00000 n 
-0013537789 00000 n 
-0013538001 00000 n 
-0013538222 00000 n 
-0013538433 00000 n 
-0013538675 00000 n 
-0013538893 00000 n 
-0013539136 00000 n 
-0013539397 00000 n 
-0013539644 00000 n 
-0013539910 00000 n 
-0013540172 00000 n 
-0013540386 00000 n 
-0013540720 00000 n 
-0013541003 00000 n 
-0013541289 00000 n 
-0013541520 00000 n 
-0013541730 00000 n 
-0013541928 00000 n 
-0013542190 00000 n 
-0013542408 00000 n 
-0013542642 00000 n 
-0013542912 00000 n 
-0013543158 00000 n 
-0013543412 00000 n 
-0013543670 00000 n 
-0013543868 00000 n 
-0013544090 00000 n 
-0013544396 00000 n 
-0013544611 00000 n 
-0013544836 00000 n 
-0013545043 00000 n 
-0013545277 00000 n 
-0013545479 00000 n 
-0013545669 00000 n 
-0013545856 00000 n 
-0013546186 00000 n 
-0013546425 00000 n 
-0013546623 00000 n 
-0013546841 00000 n 
-0013547043 00000 n 
-0013547249 00000 n 
-0013547467 00000 n 
-0013547681 00000 n 
-0013547891 00000 n 
-0013548121 00000 n 
-0013548327 00000 n 
-0013548545 00000 n 
-0013548767 00000 n 
-0013549073 00000 n 
-0013549311 00000 n 
-0013549625 00000 n 
-0013549855 00000 n 
-0013550125 00000 n 
-0013550435 00000 n 
-0013550642 00000 n 
-0013550903 00000 n 
-0013551102 00000 n 
-0013551336 00000 n 
-0013551611 00000 n 
-0013551913 00000 n 
-0013552180 00000 n 
-0013552430 00000 n 
-0013552672 00000 n 
-0013552906 00000 n 
-0013553152 00000 n 
-0013553410 00000 n 
-0013553776 00000 n 
-0013554006 00000 n 
-0013554248 00000 n 
-0013554626 00000 n 
-0013554948 00000 n 
-0013555178 00000 n 
-0013555444 00000 n 
-0013555679 00000 n 
-0013555985 00000 n 
-0013556216 00000 n 
-0013556498 00000 n 
-0013556696 00000 n 
-0013556962 00000 n 
-0013557232 00000 n 
-0013557526 00000 n 
-0013557784 00000 n 
-0013558110 00000 n 
-0013558392 00000 n 
-0013558594 00000 n 
-0013558841 00000 n 
-0013559126 00000 n 
-0013559313 00000 n 
-0013559523 00000 n 
-0013559729 00000 n 
-0013560080 00000 n 
-0013560309 00000 n 
-0013560493 00000 n 
-0013560806 00000 n 
-0013561013 00000 n 
-0013561247 00000 n 
-0013561497 00000 n 
-0013561703 00000 n 
-0013561977 00000 n 
-0013562187 00000 n 
-0013562429 00000 n 
-0013562636 00000 n 
-0013562897 00000 n 
-0013563104 00000 n 
-0013563326 00000 n 
-0013563576 00000 n 
-0013563766 00000 n 
-0013563976 00000 n 
-0013564238 00000 n 
-0013564464 00000 n 
-0013564651 00000 n 
-0013564848 00000 n 
-0013565147 00000 n 
-0013565450 00000 n 
-0013565647 00000 n 
-0013565850 00000 n 
-0013566092 00000 n 
-0013566343 00000 n 
-0013566522 00000 n 
-0013566801 00000 n 
-0013566991 00000 n 
-0013567253 00000 n 
-0013567607 00000 n 
-0013567841 00000 n 
-0013568035 00000 n 
-0013568261 00000 n 
-0013568555 00000 n 
-0013568785 00000 n 
-0013569123 00000 n 
-0013569369 00000 n 
-0013569695 00000 n 
-0013569957 00000 n 
-0013570235 00000 n 
-0013570501 00000 n 
-0013570855 00000 n 
-0013571142 00000 n 
-0013586188 00000 n 
-0013596707 00000 n 
-0013596925 00000 n 
-0013598289 00000 n 
-0013599326 00000 n 
-0013608577 00000 n 
-0013608800 00000 n 
-0013610164 00000 n 
-0013611219 00000 n 
-0013619659 00000 n 
-0013619887 00000 n 
-0013621251 00000 n 
-0013622302 00000 n 
-0013628490 00000 n 
-0013628706 00000 n 
-0013630070 00000 n 
-0013631115 00000 n 
-0013632893 00000 n 
-0013633111 00000 n 
-0013633454 00000 n 
-0013634588 00000 n 
-0013636321 00000 n 
-0013636532 00000 n 
-0013636867 00000 n 
-0013637784 00000 n 
-0013640627 00000 n 
-0013640840 00000 n 
-0013642204 00000 n 
-0013643317 00000 n 
-0013644961 00000 n 
-0013645181 00000 n 
-0013646545 00000 n 
-0013647678 00000 n 
-0013649287 00000 n 
-0013649507 00000 n 
-0013649833 00000 n 
-0013650971 00000 n 
-0013653576 00000 n 
-0013653791 00000 n 
-0013655155 00000 n 
-0013656271 00000 n 
-0013661136 00000 n 
-0013661368 00000 n 
-0013662732 00000 n 
-0013663840 00000 n 
-0013665130 00000 n 
-0013665353 00000 n 
-0013665669 00000 n 
-0013666806 00000 n 
-0013667991 00000 n 
-0013668219 00000 n 
-0013668523 00000 n 
+0013483855 00000 n 
+0013483982 00000 n 
+0013484111 00000 n 
+0013484238 00000 n 
+0013484366 00000 n 
+0013484497 00000 n 
+0013484629 00000 n 
+0013484757 00000 n 
+0013484886 00000 n 
+0013485032 00000 n 
+0013485179 00000 n 
+0013485303 00000 n 
+0013485428 00000 n 
+0013485553 00000 n 
+0013485679 00000 n 
+0013485813 00000 n 
+0013485948 00000 n 
+0013486079 00000 n 
+0013486212 00000 n 
+0013486346 00000 n 
+0013486482 00000 n 
+0013486603 00000 n 
+0013486725 00000 n 
+0013486844 00000 n 
+0013486964 00000 n 
+0013487091 00000 n 
+0013487219 00000 n 
+0013487347 00000 n 
+0013487477 00000 n 
+0013487604 00000 n 
+0013487732 00000 n 
+0013487859 00000 n 
+0013487988 00000 n 
+0013488120 00000 n 
+0013488254 00000 n 
+0013488414 00000 n 
+0013488575 00000 n 
+0013488698 00000 n 
+0013488823 00000 n 
+0013488949 00000 n 
+0013489077 00000 n 
+0013489206 00000 n 
+0013489336 00000 n 
+0013489462 00000 n 
+0013489589 00000 n 
+0013489715 00000 n 
+0013489842 00000 n 
+0013489962 00000 n 
+0013490084 00000 n 
+0013490208 00000 n 
+0013490333 00000 n 
+0013490456 00000 n 
+0013490580 00000 n 
+0013490709 00000 n 
+0013490840 00000 n 
+0013490959 00000 n 
+0013491079 00000 n 
+0013491196 00000 n 
+0013491315 00000 n 
+0013491434 00000 n 
+0013491554 00000 n 
+0013491676 00000 n 
+0013491800 00000 n 
+0013491929 00000 n 
+0013492059 00000 n 
+0013492197 00000 n 
+0013492337 00000 n 
+0013492462 00000 n 
+0013492588 00000 n 
+0013492709 00000 n 
+0013492877 00000 n 
+0013493000 00000 n 
+0013493122 00000 n 
+0013493247 00000 n 
+0013493373 00000 n 
+0013493497 00000 n 
+0013493622 00000 n 
+0013493746 00000 n 
+0013493871 00000 n 
+0013493989 00000 n 
+0013494109 00000 n 
+0013494229 00000 n 
+0013494351 00000 n 
+0013494471 00000 n 
+0013494592 00000 n 
+0013494752 00000 n 
+0013494913 00000 n 
+0013495034 00000 n 
+0013495157 00000 n 
+0013495281 00000 n 
+0013495406 00000 n 
+0013495523 00000 n 
+0013495719 00000 n 
+0013495839 00000 n 
+0013495957 00000 n 
+0013496081 00000 n 
+0013496206 00000 n 
+0013496332 00000 n 
+0013496460 00000 n 
+0013496589 00000 n 
+0013496721 00000 n 
+0013496841 00000 n 
+0013496962 00000 n 
+0013497099 00000 n 
+0013497237 00000 n 
+0013497357 00000 n 
+0013497479 00000 n 
+0013497607 00000 n 
+0013497737 00000 n 
+0013497861 00000 n 
+0013497986 00000 n 
+0013498104 00000 n 
+0013498223 00000 n 
+0013498349 00000 n 
+0013498476 00000 n 
+0013498600 00000 n 
+0013498725 00000 n 
+0013498856 00000 n 
+0013498988 00000 n 
+0013499105 00000 n 
+0013499224 00000 n 
+0013499344 00000 n 
+0013499466 00000 n 
+0013499600 00000 n 
+0013499735 00000 n 
+0013499859 00000 n 
+0013499985 00000 n 
+0013500106 00000 n 
+0013500228 00000 n 
+0013500351 00000 n 
+0013500475 00000 n 
+0013500622 00000 n 
+0013500770 00000 n 
+0013500896 00000 n 
+0013501023 00000 n 
+0013501145 00000 n 
+0013501269 00000 n 
+0013501391 00000 n 
+0013501515 00000 n 
+0013501644 00000 n 
+0013501774 00000 n 
+0013501911 00000 n 
+0013502049 00000 n 
+0013502170 00000 n 
+0013502293 00000 n 
+0013502444 00000 n 
+0013502597 00000 n 
+0013502714 00000 n 
+0013502832 00000 n 
+0013502965 00000 n 
+0013503099 00000 n 
+0013503222 00000 n 
+0013503347 00000 n 
+0013503462 00000 n 
+0013503578 00000 n 
+0013503694 00000 n 
+0013503811 00000 n 
+0013503939 00000 n 
+0013504068 00000 n 
+0013504191 00000 n 
+0013504316 00000 n 
+0013504442 00000 n 
+0013504570 00000 n 
+0013504687 00000 n 
+0013504805 00000 n 
+0013504922 00000 n 
+0013505041 00000 n 
+0013505162 00000 n 
+0013505284 00000 n 
+0013505426 00000 n 
+0013505569 00000 n 
+0013505703 00000 n 
+0013505838 00000 n 
+0013505960 00000 n 
+0013506084 00000 n 
+0013506242 00000 n 
+0013506401 00000 n 
+0013506545 00000 n 
+0013506690 00000 n 
+0013506962 00000 n 
+0013507234 00000 n 
+0013507316 00000 n 
+0013507548 00000 n 
+0013507708 00000 n 
+0013507864 00000 n 
+0013508083 00000 n 
+0013508288 00000 n 
+0013508565 00000 n 
+0013508829 00000 n 
+0013509063 00000 n 
+0013509312 00000 n 
+0013509657 00000 n 
+0013509990 00000 n 
+0013510247 00000 n 
+0013510508 00000 n 
+0013510793 00000 n 
+0013511039 00000 n 
+0013511235 00000 n 
+0013511549 00000 n 
+0013511758 00000 n 
+0013511972 00000 n 
+0013512220 00000 n 
+0013512458 00000 n 
+0013512799 00000 n 
+0013513076 00000 n 
+0013513433 00000 n 
+0013513734 00000 n 
+0013514107 00000 n 
+0013514317 00000 n 
+0013514518 00000 n 
+0013514740 00000 n 
+0013514969 00000 n 
+0013515182 00000 n 
+0013515379 00000 n 
+0013515568 00000 n 
+0013515797 00000 n 
+0013515994 00000 n 
+0013516255 00000 n 
+0013516464 00000 n 
+0013516681 00000 n 
+0013516918 00000 n 
+0013517115 00000 n 
+0013517293 00000 n 
+0013517545 00000 n 
+0013517767 00000 n 
+0013518037 00000 n 
+0013518335 00000 n 
+0013518626 00000 n 
+0013518856 00000 n 
+0013519106 00000 n 
+0013519360 00000 n 
+0013519558 00000 n 
+0013519808 00000 n 
+0013520070 00000 n 
+0013520420 00000 n 
+0013520642 00000 n 
+0013520924 00000 n 
+0013521298 00000 n 
+0013521513 00000 n 
+0013521751 00000 n 
+0013522054 00000 n 
+0013522320 00000 n 
+0013522610 00000 n 
+0013522988 00000 n 
+0013523334 00000 n 
+0013523584 00000 n 
+0013523834 00000 n 
+0013524108 00000 n 
+0013524474 00000 n 
+0013524736 00000 n 
+0013524935 00000 n 
+0013525180 00000 n 
+0013525503 00000 n 
+0013525893 00000 n 
+0013526215 00000 n 
+0013526529 00000 n 
+0013526855 00000 n 
+0013527145 00000 n 
+0013527428 00000 n 
+0013527638 00000 n 
+0013527833 00000 n 
+0013528067 00000 n 
+0013528269 00000 n 
+0013528535 00000 n 
+0013528737 00000 n 
+0013528963 00000 n 
+0013529169 00000 n 
+0013529395 00000 n 
+0013529589 00000 n 
+0013529927 00000 n 
+0013530226 00000 n 
+0013530467 00000 n 
+0013530662 00000 n 
+0013530857 00000 n 
+0013531091 00000 n 
+0013531286 00000 n 
+0013531508 00000 n 
+0013531718 00000 n 
+0013532016 00000 n 
+0013532302 00000 n 
+0013532604 00000 n 
+0013532854 00000 n 
+0013533088 00000 n 
+0013533490 00000 n 
+0013533760 00000 n 
+0013534142 00000 n 
+0013534444 00000 n 
+0013534690 00000 n 
+0013535033 00000 n 
+0013535286 00000 n 
+0013535489 00000 n 
+0013535691 00000 n 
+0013535954 00000 n 
+0013536183 00000 n 
+0013536363 00000 n 
+0013536628 00000 n 
+0013536807 00000 n 
+0013537009 00000 n 
+0013537287 00000 n 
+0013537629 00000 n 
+0013537831 00000 n 
+0013538022 00000 n 
+0013538303 00000 n 
+0013538515 00000 n 
+0013538736 00000 n 
+0013538947 00000 n 
+0013539189 00000 n 
+0013539407 00000 n 
+0013539650 00000 n 
+0013539911 00000 n 
+0013540158 00000 n 
+0013540424 00000 n 
+0013540686 00000 n 
+0013540900 00000 n 
+0013541234 00000 n 
+0013541517 00000 n 
+0013541803 00000 n 
+0013542034 00000 n 
+0013542244 00000 n 
+0013542442 00000 n 
+0013542704 00000 n 
+0013542922 00000 n 
+0013543156 00000 n 
+0013543426 00000 n 
+0013543672 00000 n 
+0013543926 00000 n 
+0013544184 00000 n 
+0013544382 00000 n 
+0013544604 00000 n 
+0013544910 00000 n 
+0013545125 00000 n 
+0013545350 00000 n 
+0013545557 00000 n 
+0013545791 00000 n 
+0013545993 00000 n 
+0013546183 00000 n 
+0013546370 00000 n 
+0013546700 00000 n 
+0013546939 00000 n 
+0013547137 00000 n 
+0013547355 00000 n 
+0013547557 00000 n 
+0013547763 00000 n 
+0013547981 00000 n 
+0013548195 00000 n 
+0013548405 00000 n 
+0013548635 00000 n 
+0013548841 00000 n 
+0013549059 00000 n 
+0013549281 00000 n 
+0013549587 00000 n 
+0013549825 00000 n 
+0013550139 00000 n 
+0013550369 00000 n 
+0013550639 00000 n 
+0013550949 00000 n 
+0013551156 00000 n 
+0013551417 00000 n 
+0013551616 00000 n 
+0013551850 00000 n 
+0013552125 00000 n 
+0013552427 00000 n 
+0013552694 00000 n 
+0013552944 00000 n 
+0013553186 00000 n 
+0013553420 00000 n 
+0013553666 00000 n 
+0013553924 00000 n 
+0013554290 00000 n 
+0013554520 00000 n 
+0013554762 00000 n 
+0013555140 00000 n 
+0013555462 00000 n 
+0013555692 00000 n 
+0013555958 00000 n 
+0013556193 00000 n 
+0013556499 00000 n 
+0013556730 00000 n 
+0013557012 00000 n 
+0013557210 00000 n 
+0013557476 00000 n 
+0013557746 00000 n 
+0013558040 00000 n 
+0013558298 00000 n 
+0013558624 00000 n 
+0013558906 00000 n 
+0013559108 00000 n 
+0013559355 00000 n 
+0013559640 00000 n 
+0013559827 00000 n 
+0013560037 00000 n 
+0013560243 00000 n 
+0013560594 00000 n 
+0013560823 00000 n 
+0013561007 00000 n 
+0013561320 00000 n 
+0013561527 00000 n 
+0013561761 00000 n 
+0013562011 00000 n 
+0013562217 00000 n 
+0013562491 00000 n 
+0013562701 00000 n 
+0013562943 00000 n 
+0013563150 00000 n 
+0013563411 00000 n 
+0013563618 00000 n 
+0013563840 00000 n 
+0013564090 00000 n 
+0013564280 00000 n 
+0013564490 00000 n 
+0013564752 00000 n 
+0013564978 00000 n 
+0013565165 00000 n 
+0013565362 00000 n 
+0013565661 00000 n 
+0013565964 00000 n 
+0013566161 00000 n 
+0013566364 00000 n 
+0013566606 00000 n 
+0013566857 00000 n 
+0013567036 00000 n 
+0013567315 00000 n 
+0013567505 00000 n 
+0013567767 00000 n 
+0013568121 00000 n 
+0013568355 00000 n 
+0013568549 00000 n 
+0013568775 00000 n 
+0013569069 00000 n 
+0013569299 00000 n 
+0013569637 00000 n 
+0013569883 00000 n 
+0013570209 00000 n 
+0013570471 00000 n 
+0013570749 00000 n 
+0013571015 00000 n 
+0013571369 00000 n 
+0013571656 00000 n 
+0013586702 00000 n 
+0013597221 00000 n 
+0013597439 00000 n 
+0013598803 00000 n 
+0013599840 00000 n 
+0013609091 00000 n 
+0013609314 00000 n 
+0013610678 00000 n 
+0013611733 00000 n 
+0013620173 00000 n 
+0013620401 00000 n 
+0013621765 00000 n 
+0013622816 00000 n 
+0013629004 00000 n 
+0013629220 00000 n 
+0013630584 00000 n 
+0013631629 00000 n 
+0013633407 00000 n 
+0013633625 00000 n 
+0013633968 00000 n 
+0013635102 00000 n 
+0013636835 00000 n 
+0013637046 00000 n 
+0013637381 00000 n 
+0013638298 00000 n 
+0013641141 00000 n 
+0013641354 00000 n 
+0013642718 00000 n 
+0013643831 00000 n 
+0013645475 00000 n 
+0013645695 00000 n 
+0013647059 00000 n 
+0013648192 00000 n 
+0013649801 00000 n 
+0013650021 00000 n 
+0013650347 00000 n 
+0013651485 00000 n 
+0013654090 00000 n 
+0013654305 00000 n 
+0013655669 00000 n 
+0013656785 00000 n 
+0013661650 00000 n 
+0013661882 00000 n 
+0013663246 00000 n 
+0013664354 00000 n 
+0013665644 00000 n 
+0013665867 00000 n 
+0013666183 00000 n 
+0013667320 00000 n 
+0013668505 00000 n 
+0013668733 00000 n 
+0013669037 00000 n 
 trailer
 << /Size 5427
 /Root 2 0 R
 /Info 1 0 R
 >>
 startxref
-13669661
+13670175
 %%EOF
diff --git a/book.html b/book.html
index 1bff7a7..7bdac9f 100644
--- a/book.html
+++ b/book.html
@@ -32984,14 +32984,22 @@ It will put a snapshot up into the apache snapshot repository for you.</p>
 <div class="paragraph">
 <p>Everyone is encouraged to try and vote on HBase release candidates.
 Only the votes of PMC members are binding.
-PMC members, please read this WIP doc on policy voting for a release candidate, <a href="https://github.com/rectang/asfrelease/blob/master/release.md">Release
-                Policy</a>. [quote]_Before casting 1 binding votes, individuals are required to
-                download the signed source code package onto their own hardware, compile it as
-                provided, and test the resulting executable on their own platform, along with also
-                validating cryptographic signatures and verifying that the package meets the
-                requirements of the ASF policy on releases._ Regards the latter, run +mvn apache-rat:check to verify all files are suitably licensed.
-See <a href="http://search-hadoop.com/m/DHED4dhFaU">HBase, mail # dev - On
-                recent discussion clarifying ASF release policy</a>.
+PMC members, please read this WIP doc on policy voting for a release candidate, <a href="https://github.com/rectang/asfrelease/blob/master/release.md">Release Policy</a>.</p>
+</div>
+<div class="quoteblock">
+<blockquote>
+<div class="paragraph">
+<p>Before casting +1 binding votes, individuals are required to
+download the signed source code package onto their own hardware, compile it as
+provided, and test the resulting executable on their own platform, along with also
+validating cryptographic signatures and verifying that the package meets the
+requirements of the ASF policy on releases.</p>
+</div>
+</blockquote>
+</div>
+<div class="paragraph">
+<p>Regards the latter, run <code>mvn apache-rat:check</code> to verify all files are suitably licensed.
+See <a href="http://search-hadoop.com/m/DHED4dhFaU">HBase, mail # dev - On recent discussion clarifying ASF release policy</a>
 for how we arrived at this process.</p>
 </div>
 </div>
@@ -41693,7 +41701,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2019-05-08 14:29:35 UTC
+Last updated 2019-05-09 14:29:35 UTC
 </div>
 </div>
 </body>
diff --git a/bulk-loads.html b/bulk-loads.html
index aff76ff..2c8f7c0 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -162,7 +162,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index c75e82e..d99761c 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -156,7 +156,7 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3922</td>
+<td>3923</td>
 <td>0</td>
 <td>0</td>
 <td>13148</td></tr></table></div>
@@ -103355,7 +103355,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle.rss b/checkstyle.rss
index cb02a75..b4333e5 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,7 +25,7 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2019 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3922,
+      <title>File: 3923,
              Errors: 13148,
              Warnings: 0,
              Infos: 0
@@ -46484,6 +46484,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestMemStoreSegmentsIterator.java">org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSCPWithReplicas.java">org/apache/hadoop/hbase/master/procedure/TestSCPWithReplicas.java</a>
                 </td>
                 <td>
diff --git a/coc.html b/coc.html
index 01a411f..ed54b77 100644
--- a/coc.html
+++ b/coc.html
@@ -231,7 +231,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependencies.html b/dependencies.html
index f45224a..261a3ab 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -311,7 +311,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 250eee7..09f4f5a 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -505,7 +505,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-info.html b/dependency-info.html
index 351e9bb..19d463e 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -184,7 +184,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-management.html b/dependency-management.html
index 73398a1..393c318 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -894,7 +894,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index c3324d5..a5befea 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3927,7 +3927,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Wed May  8 14:34:25 UTC 2019"</code></td>
+<td class="colLast"><code>"Thu May  9 14:34:22 UTC 2019"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
@@ -3941,7 +3941,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"ea8fb3fa67b4d05db9322c7e5b9cb7b2"</code></td>
+<td class="colLast"><code>"c18fda633f54e3abe90058f4f17bf36d"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index f279d5b..b55741e 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="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<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/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/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>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index c881591..2e47f29 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -549,24 +549,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
+<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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index dc618a4..c51f7b2 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -201,8 +201,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index e65f57e..126073e 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -189,13 +189,13 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<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/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/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/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/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/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/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/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/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/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/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
 </ul>
 </li>
 </ul>
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 5dc6ad9..b29287a 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -283,12 +283,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
+<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/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/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/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/BlockCacheFactory.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockCacheFactory.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/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
index d288952..cb4ea86 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -353,8 +353,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<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/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/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>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index 00987d0..2ee114f 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -297,9 +297,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <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/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>
+<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>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index a6409d3..d63e14d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -355,8 +355,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<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/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/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.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>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index 11171cd..5ea7aac 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -216,10 +216,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index 452eaee..7524d90 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -127,8 +127,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<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>
+<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>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index f456ba2..e02ad06 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -433,19 +433,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</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/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/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/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/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/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</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/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</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/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/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/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/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/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/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/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/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</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>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 6d157bc..ffe5114 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -216,11 +216,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
+<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/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/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/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/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>
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index a0a9319..72a25b7 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -240,11 +240,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</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/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/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/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/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</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>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 902a6ce..48ffc5b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -716,19 +716,19 @@
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <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/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</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/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/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/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/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/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/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/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/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</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/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/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/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</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/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index 74ae4b0..03a894e 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,8 +130,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index ef06c00..dcee643 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -247,10 +247,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.RollRequestReason.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.RollRequestReason</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
index 818a04c..02505ac 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
@@ -162,8 +162,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
 </ul>
 </li>
 </ul>
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 9a2ed16..19d2ff4 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -208,8 +208,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<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>
+<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>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
index 3aa879d..7d70035 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -110,8 +110,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html b/devapidocs/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html
index bb7a6c8..4d0706b 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.403">AccessChecker.InputUser</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.406">AccessChecker.InputUser</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a></pre>
 <div class="block">A temporary user class to instantiate User instance based on the name and groups.</div>
 </li>
@@ -276,7 +276,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.404">name</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.407">name</a></pre>
 </li>
 </ul>
 <a name="shortName">
@@ -285,7 +285,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>shortName</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.405">shortName</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.408">shortName</a></pre>
 </li>
 </ul>
 <a name="groups">
@@ -294,7 +294,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>groups</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.406">groups</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.409">groups</a></pre>
 </li>
 </ul>
 </li>
@@ -311,7 +311,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>InputUser</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.408">InputUser</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.411">InputUser</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;groups)</pre>
 </li>
 </ul>
@@ -329,7 +329,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getShortName</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.414">getShortName</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.417">getShortName</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/security/User.html#getShortName--">User</a></code></span></div>
 <div class="block">Returns the shortened version of the user name -- the portion that maps
  to an operating system user name.</div>
@@ -347,7 +347,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getName</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.427">getName</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.430">getName</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/security/User.html#getName--">User</a></code></span></div>
 <div class="block">Returns the full user name.  For Kerberos principals this will include
  the host and realm portions of the principal name.</div>
@@ -365,7 +365,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getGroupNames</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.432">getGroupNames</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.435">getGroupNames</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/security/User.html#getGroupNames--">User</a></code></span></div>
 <div class="block">Returns the list of groups of which this user is a member.  On secure
  Hadoop this returns the group information for the user as resolved on the
@@ -382,7 +382,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>runAs</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.437">runAs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/security/PrivilegedAction.html?is-external=true" title="class or interface in java.security">PrivilegedAction</a>&lt;T&gt;&nbsp;action)</pre>
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.440">runAs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/security/PrivilegedAction.html?is-external=true" title="class or interface in java.security">PrivilegedAction</a>&lt;T&gt;&nbsp;action)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/security/User.html#runAs-java.security.PrivilegedAction-">User</a></code></span></div>
 <div class="block">Executes the given action within the context of this user.</div>
 <dl>
@@ -397,7 +397,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>runAs</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.443">runAs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/security/PrivilegedExceptionAction.html?is-external=true" title="class or interface in java.security">PrivilegedExceptionAction</a>&lt;T&gt;&nbsp;action)
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.446">runAs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/security/PrivilegedExceptionAction.html?is-external=true" title="class or interface in java.security">PrivilegedExceptionAction</a>&lt;T&gt;&nbsp;action)
             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/security/User.html#runAs-java.security.PrivilegedExceptionAction-">User</a></code></span></div>
@@ -417,7 +417,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.450">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html#line.453">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/security/User.html#toString--">toString</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a></code></dd>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/AccessChecker.html b/devapidocs/org/apache/hadoop/hbase/security/access/AccessChecker.html
index dc91619..d3d9f42 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/AccessChecker.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/AccessChecker.html
@@ -113,8 +113,9 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.55">AccessChecker</a>
+<pre>@InterfaceAudience.LimitedPrivate(value="Coprocesssor")
+ @InterfaceStability.Evolving
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.58">AccessChecker</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -396,7 +397,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.56">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.59">LOG</a></pre>
 </li>
 </ul>
 <a name="AUDITLOG">
@@ -405,7 +406,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>AUDITLOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.57">AUDITLOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.60">AUDITLOG</a></pre>
 </li>
 </ul>
 <a name="authManager">
@@ -414,7 +415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>authManager</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthManager.html" title="class in org.apache.hadoop.hbase.security.access">AuthManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.59">authManager</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthManager.html" title="class in org.apache.hadoop.hbase.security.access">AuthManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.62">authManager</a></pre>
 </li>
 </ul>
 <a name="groupService">
@@ -423,7 +424,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>groupService</h4>
-<pre>private static&nbsp;org.apache.hadoop.security.Groups <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.62">groupService</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.security.Groups <a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.65">groupService</a></pre>
 <div class="block">Group service to retrieve the user group information</div>
 </li>
 </ul>
@@ -441,7 +442,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AccessChecker</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.73">AccessChecker</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.76">AccessChecker</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Constructor with existing configuration</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -463,7 +464,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isAuthorizationSupported</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.64">isAuthorizationSupported</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.67">isAuthorizationSupported</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="getAuthManager--">
@@ -472,7 +473,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getAuthManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthManager.html" title="class in org.apache.hadoop.hbase.security.access">AuthManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.78">getAuthManager</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthManager.html" title="class in org.apache.hadoop.hbase.security.access">AuthManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.81">getAuthManager</a>()</pre>
 </li>
 </ul>
 <a name="requireAccess-org.apache.hadoop.hbase.security.User-java.lang.String-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.security.access.Permission.Action...-">
@@ -481,7 +482,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>requireAccess</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.92">requireAccess</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.95">requireAccess</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                           <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/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access">Permission.Action</a>...&nbsp;permissions)
@@ -505,7 +506,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>requirePermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.122">requirePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.125">requirePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filterUser,
                               <a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access">Permission.Action</a>&nbsp;perm)
@@ -529,7 +530,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>requireGlobalPermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.139">requireGlobalPermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.142">requireGlobalPermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                                     <a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access">Permission.Action</a>&nbsp;perm,
                                     <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -558,7 +559,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>requireGlobalPermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.168">requireGlobalPermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.171">requireGlobalPermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                                     <a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access">Permission.Action</a>&nbsp;perm,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)
@@ -583,7 +584,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>requireNamespacePermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.193">requireNamespacePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.196">requireNamespacePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filterUser,
@@ -608,7 +609,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>requireNamespacePermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.224">requireNamespacePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.227">requireNamespacePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
                                        <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -635,7 +636,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>requirePermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.261">requirePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.264">requirePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                               byte[]&nbsp;family,
@@ -666,7 +667,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>requireTablePermission</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.295">requireTablePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.298">requireTablePermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                                    <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                    byte[]&nbsp;family,
@@ -694,7 +695,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>performOnSuperuser</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.326">performOnSuperuser</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.329">performOnSuperuser</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                                <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;caller,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userToBeChecked)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -715,7 +716,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkLockPermissions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.349">checkLockPermissions</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.352">checkLockPermissions</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
                                  <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/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionInfos,
@@ -733,7 +734,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>logResult</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.364">logResult</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthResult.html" title="class in org.apache.hadoop.hbase.security.access">AuthResult</a>&nbsp;result)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.367">logResult</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthResult.html" title="class in org.apache.hadoop.hbase.security.access">AuthResult</a>&nbsp;result)</pre>
 </li>
 </ul>
 <a name="validateCallerWithFilterUser-org.apache.hadoop.hbase.security.User-org.apache.hadoop.hbase.security.access.TablePermission-java.lang.String-">
@@ -742,7 +743,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>validateCallerWithFilterUser</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.379">validateCallerWithFilterUser</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;caller,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.382">validateCallerWithFilterUser</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;caller,
                                          <a href="../../../../../../org/apache/hadoop/hbase/security/access/TablePermission.html" title="class in org.apache.hadoop.hbase.security.access">TablePermission</a>&nbsp;tPerm,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;inputUserName)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -758,7 +759,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>initGroupService</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.458">initGroupService</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.461">initGroupService</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="getUserGroups-java.lang.String-">
@@ -767,7 +768,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getUserGroups</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.474">getUserGroups</a>(<a href="https://docs.oracle.com/javase/8/docs/api/ja [...]
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.477">getUserGroups</a>(<a href="https://docs.oracle.com/javase/8/docs/api/ja [...]
 <div class="block">Retrieve the groups of the given user.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -783,7 +784,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>hasUserPermission</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.490">hasUserPermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.493">hasUserPermission</a>(<a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                                  <a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.html" title="class in org.apache.hadoop.hbase.security.access">Permission</a>&nbsp;permission)</pre>
 <div class="block">Authorizes that if the current user has the given permissions.</div>
@@ -803,7 +804,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>permissionGranted</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthResult.html" title="class in org.apache.hadoop.hbase.security.access">AuthResult</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.534">permissionGranted</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthResult.html" title="class in org.apache.hadoop.hbase.security.access">AuthResult</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.537">permissionGranted</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                                      <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                      <a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access">Permission.Action</a>&nbsp;permRequest,
                                      <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -817,7 +818,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>permissionGranted</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthResult.html" title="class in org.apache.hadoop.hbase.security.access">AuthResult</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.554">permissionGranted</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/security/access/AuthResult.html" title="class in org.apache.hadoop.hbase.security.access">AuthResult</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.557">permissionGranted</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;request,
                                     <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user,
                                     <a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access">Permission.Action</a>&nbsp;permRequest,
                                     <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -846,7 +847,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>makeFamilyMap</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],? extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;byte[]&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.624">makeFamilyMap</a>(byte[]&nbsp;family,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],? extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;byte[]&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html#line.627">makeFamilyMap</a>(byte[]&nbsp;family,
                                                                byte[]&nbsp;qualifier)</pre>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index db71036..2c1ff7e 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -144,9 +144,9 @@
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Scope.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Scope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Scope.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Scope</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 66d0a39..47e3265 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -207,9 +207,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <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/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ImplType</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/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index 87a4e9a..3981d8e 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -542,14 +542,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <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/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/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.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/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/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/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/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/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/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/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index 5a63e74..958de4c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <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 = "Unknown";<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 = "Wed May  8 14:34:25 UTC 2019";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Thu May  9 14:34:22 UTC 2019";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "file:///home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "ea8fb3fa67b4d05db9322c7e5b9cb7b2";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "c18fda633f54e3abe90058f4f17bf36d";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactorSegmentsIterator.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactorSegmentsIterator.html
index f65f30f..ab31ff6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactorSegmentsIterator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactorSegmentsIterator.html
@@ -64,7 +64,7 @@
 <span class="sourceLineNo">056</span>    super(compactionKVMax);<a name="line.56"></a>
 <span class="sourceLineNo">057</span><a name="line.57"></a>
 <span class="sourceLineNo">058</span>    List&lt;KeyValueScanner&gt; scanners = new ArrayList&lt;KeyValueScanner&gt;();<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    AbstractMemStore.addToScanners(segments, Integer.MAX_VALUE, scanners);<a name="line.59"></a>
+<span class="sourceLineNo">059</span>    AbstractMemStore.addToScanners(segments, Long.MAX_VALUE, scanners);<a name="line.59"></a>
 <span class="sourceLineNo">060</span>    // build the scanner based on Query Matcher<a name="line.60"></a>
 <span class="sourceLineNo">061</span>    // reinitialize the compacting scanner for each instance of iterator<a name="line.61"></a>
 <span class="sourceLineNo">062</span>    compactingScanner = createScanner(store, scanners);<a name="line.62"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MemStoreMergerSegmentsIterator.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MemStoreMergerSegmentsIterator.html
index ae5169e..4e86d97 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MemStoreMergerSegmentsIterator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MemStoreMergerSegmentsIterator.html
@@ -55,7 +55,7 @@
 <span class="sourceLineNo">047</span>    super(compactionKVMax);<a name="line.47"></a>
 <span class="sourceLineNo">048</span>    // create the list of scanners to traverse over all the data<a name="line.48"></a>
 <span class="sourceLineNo">049</span>    // no dirty reads here as these are immutable segments<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    AbstractMemStore.addToScanners(segments, Integer.MAX_VALUE, scanners);<a name="line.50"></a>
+<span class="sourceLineNo">050</span>    AbstractMemStore.addToScanners(segments, Long.MAX_VALUE, scanners);<a name="line.50"></a>
 <span class="sourceLineNo">051</span>    heap = new KeyValueHeap(scanners, comparator);<a name="line.51"></a>
 <span class="sourceLineNo">052</span>  }<a name="line.52"></a>
 <span class="sourceLineNo">053</span><a name="line.53"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/throttle/PressureAwareCompactionThroughputController.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/throttle/PressureAwareCompactionThroughputController.html
index c74ac6e..25011dd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/throttle/PressureAwareCompactionThroughputController.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/throttle/PressureAwareCompactionThroughputController.html
@@ -108,7 +108,7 @@
 <span class="sourceLineNo">100</span>              * compactionPressure;<a name="line.100"></a>
 <span class="sourceLineNo">101</span>    }<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    if (LOG.isDebugEnabled()) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      if (maxThroughputToSet != getMaxThroughput()) {<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      if (Math.abs(maxThroughputToSet - getMaxThroughput()) &lt; .0000001) {<a name="line.103"></a>
 <span class="sourceLineNo">104</span>        LOG.debug("CompactionPressure is " + compactionPressure + ", tune throughput to "<a name="line.104"></a>
 <span class="sourceLineNo">105</span>            + throughputDesc(maxThroughputToSet));<a name="line.105"></a>
 <span class="sourceLineNo">106</span>      } else if (LOG.isTraceEnabled()) {<a name="line.106"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html
index 8ae993c..f484c2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessChecker.InputUser.html
@@ -42,603 +42,606 @@
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.Cell;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.TableName;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.security.User;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.access.Permission.Action;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.security.Groups;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.security.HadoopKerberosName;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.slf4j.Logger;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.slf4j.LoggerFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>@InterfaceAudience.Private<a name="line.54"></a>
-<span class="sourceLineNo">055</span>public class AccessChecker {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private static final Logger LOG = LoggerFactory.getLogger(AccessChecker.class);<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private static final Logger AUDITLOG =<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      LoggerFactory.getLogger("SecurityLogger." + AccessChecker.class.getName());<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private final AuthManager authManager;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  /** Group service to retrieve the user group information */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static Groups groupService;<a name="line.62"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.RegionInfo;<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.security.AccessDeniedException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.security.Superusers;<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.security.UserProvider;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.access.Permission.Action;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.security.Groups;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.security.HadoopKerberosName;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.Logger;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.slf4j.LoggerFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.56"></a>
+<span class="sourceLineNo">057</span>@InterfaceStability.Evolving<a name="line.57"></a>
+<span class="sourceLineNo">058</span>public class AccessChecker {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static final Logger LOG = LoggerFactory.getLogger(AccessChecker.class);<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final Logger AUDITLOG =<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      LoggerFactory.getLogger("SecurityLogger." + AccessChecker.class.getName());<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private final AuthManager authManager;<a name="line.62"></a>
 <span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>  public static boolean isAuthorizationSupported(Configuration conf) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    return conf.getBoolean(User.HBASE_SECURITY_AUTHORIZATION_CONF_KEY, false);<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>  /**<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * Constructor with existing configuration<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   *<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   * @param conf Existing configuration to use<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  public AccessChecker(final Configuration conf) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    this.authManager = new AuthManager(conf);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    initGroupService(conf);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public AuthManager getAuthManager() {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    return authManager;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  }<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>   * Authorizes that the current user has any of the given permissions to access the table.<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   *<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * @param user Active user to which authorization checks should be applied<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * @param request Request type.<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * @param tableName   Table requested<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * @param permissions Actions being requested<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * @throws IOException if obtaining the current user fails<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * @throws AccessDeniedException if user has no authorization<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public void requireAccess(User user, String request, TableName tableName,<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      Action... permissions) throws IOException {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    AuthResult result = null;<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    for (Action permission : permissions) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      if (authManager.accessUserTable(user, tableName, permission)) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.98"></a>
-<span class="sourceLineNo">099</span>            user, permission, tableName, null, null);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        break;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      } else {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>        // rest of the world<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.103"></a>
-<span class="sourceLineNo">104</span>            user, permission, tableName, null, null);<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>    logResult(result);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    if (!result.isAllowed()) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<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><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * Authorizes that the current user has global privileges for the given action.<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * @param user Active user to which authorization checks should be applied<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * @param request Request type<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * @param perm The action being requested<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * @throws IOException if obtaining the current user fails<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * @throws AccessDeniedException if authorization is denied<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public void requirePermission(User user, String request, String filterUser, Action perm)<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      throws IOException {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    requireGlobalPermission(user, request, perm, null, null, filterUser);<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>   * Checks that the user has the given global permission. The generated<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * audit log message will contain context information for the operation<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * being authorized, based on the given parameters.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   *<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * @param user Active user to which authorization checks should be applied<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * @param request Request type<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * @param perm      Action being requested<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * @param tableName Affected table name.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * @param familyMap Affected column families.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void requireGlobalPermission(User user, String request,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      Action perm, TableName tableName,<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; familyMap, String filterUser) throws IOException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    AuthResult result;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    if (authManager.authorizeUserGlobal(user, perm)) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      result = AuthResult.allow(request, "Global check allowed", user, perm, tableName, familyMap);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      result = AuthResult.deny(request, "Global check failed", user, perm, tableName, familyMap);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    result.getParams().setTableName(tableName).setFamilies(familyMap);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    logResult(result);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    if (!result.isAllowed()) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      throw new AccessDeniedException(<a name="line.152"></a>
-<span class="sourceLineNo">153</span>          "Insufficient permissions for user '" + (user != null ? user.getShortName() : "null")<a name="line.153"></a>
-<span class="sourceLineNo">154</span>              + "' (global, action=" + perm.toString() + ")");<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><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   * Checks that the user has the given global permission. The generated<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * audit log message will contain context information for the operation<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * being authorized, based on the given parameters.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   *<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * @param user Active user to which authorization checks should be applied<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param request Request type<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param perm      Action being requested<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param namespace The given namespace<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public void requireGlobalPermission(User user, String request, Action perm,<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      String namespace) throws IOException {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    AuthResult authResult;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    if (authManager.authorizeUserGlobal(user, perm)) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      authResult = AuthResult.allow(request, "Global check allowed", user, perm, null);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      authResult.getParams().setNamespace(namespace);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      logResult(authResult);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    } else {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      authResult = AuthResult.deny(request, "Global check failed", user, perm, null);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      authResult.getParams().setNamespace(namespace);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      logResult(authResult);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      throw new AccessDeniedException(<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          "Insufficient permissions for user '" + (user != null ? user.getShortName() : "null")<a name="line.180"></a>
-<span class="sourceLineNo">181</span>              + "' (global, action=" + perm.toString() + ")");<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><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Checks that the user has the given global or namespace permission.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param user Active user to which authorization checks should be applied<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @param request Request type<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param namespace Name space as requested<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param permissions Actions being requested<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   */<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  public void requireNamespacePermission(User user, String request, String namespace,<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      String filterUser, Action... permissions) throws IOException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    AuthResult result = null;<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    for (Action permission : permissions) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (authManager.authorizeUserNamespace(user, namespace, permission)) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        result =<a name="line.199"></a>
-<span class="sourceLineNo">200</span>            AuthResult.allow(request, "Namespace permission granted", user, permission, namespace);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        break;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      } else {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        // rest of the world<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        result = AuthResult.deny(request, "Insufficient permissions", user, permission, namespace);<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>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    logResult(result);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    if (!result.isAllowed()) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * Checks that the user has the given global or namespace permission.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   *<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param user Active user to which authorization checks should be applied<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * @param request Request type<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param namespace  The given namespace<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @param tableName Table requested<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @param familyMap    Column family map requested<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param permissions Actions being requested<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  public void requireNamespacePermission(User user, String request, String namespace,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      TableName tableName, Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; familyMap,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Action... permissions) throws IOException {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    AuthResult result = null;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    for (Action permission : permissions) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (authManager.authorizeUserNamespace(user, namespace, permission)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        result =<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            AuthResult.allow(request, "Namespace permission granted", user, permission, namespace);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        result.getParams().setTableName(tableName).setFamilies(familyMap);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        break;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      } else {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        // rest of the world<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        result = AuthResult.deny(request, "Insufficient permissions", user, permission, namespace);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        result.getParams().setTableName(tableName).setFamilies(familyMap);<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>    logResult(result);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (!result.isAllowed()) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * Authorizes that the current user has any of the given permissions for the<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * given table, column family and column qualifier.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   *<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * @param user Active user to which authorization checks should be applied<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * @param request Request type<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param tableName Table requested<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param family    Column family requested<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @param qualifier Column qualifier requested<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @param permissions Actions being requested<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * @throws IOException if obtaining the current user fails<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * @throws AccessDeniedException if user has no authorization<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  public void requirePermission(User user, String request, TableName tableName, byte[] family,<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      byte[] qualifier, String filterUser, Action... permissions) throws IOException {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    AuthResult result = null;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>    for (Action permission : permissions) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      if (authManager.authorizeUserTable(user, tableName, family, qualifier, permission)) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.267"></a>
-<span class="sourceLineNo">268</span>            user, permission, tableName, family, qualifier);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        break;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      } else {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        // rest of the world<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          user, permission, tableName, family, qualifier);<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>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    logResult(result);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    if (!result.isAllowed()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  /**<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * Authorizes that the current user has any of the given permissions for the<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * given table, column family and column qualifier.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * @param user Active user to which authorization checks should be applied<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * @param request Request type<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * @param tableName Table requested<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * @param family    Column family param<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * @param qualifier Column qualifier param<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException           if obtaining the current user fails<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @throws AccessDeniedException if user has no authorization<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void requireTablePermission(User user, String request,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      TableName tableName,byte[] family, byte[] qualifier,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      Action... permissions) throws IOException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    AuthResult result = null;<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    for (Action permission : permissions) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      if (authManager.authorizeUserTable(user, tableName, permission)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.302"></a>
-<span class="sourceLineNo">303</span>            user, permission, tableName, null, null);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        result.getParams().setFamily(family).setQualifier(qualifier);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        break;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      } else {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        // rest of the world<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.308"></a>
-<span class="sourceLineNo">309</span>                user, permission, tableName, family, qualifier);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        result.getParams().setFamily(family).setQualifier(qualifier);<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>    logResult(result);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    if (!result.isAllowed()) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<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><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  /**<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * Check if caller is granting or revoking superusers's or supergroups's permissions.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param request request name<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @param caller caller<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   * @param userToBeChecked target user or group<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   * @throws IOException AccessDeniedException if target user is superuser<a name="line.324"></a>
-<span class="sourceLineNo">325</span>   */<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  public void performOnSuperuser(String request, User caller, String userToBeChecked)<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      throws IOException {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    List&lt;String&gt; userGroups = new ArrayList&lt;&gt;();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    userGroups.add(userToBeChecked);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    if (!AuthUtil.isGroupPrincipal(userToBeChecked)) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      for (String group : getUserGroups(userToBeChecked)) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        userGroups.add(AuthUtil.toGroupEntry(group));<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    for (String name : userGroups) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      if (Superusers.isSuperUser(name)) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        AuthResult result = AuthResult.deny(<a name="line.337"></a>
-<span class="sourceLineNo">338</span>          request,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          "Granting or revoking superusers's or supergroups's permissions is not allowed",<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          caller,<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          Action.ADMIN,<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        logResult(result);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        throw new AccessDeniedException(result.getReason());<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public void checkLockPermissions(User user, String namespace,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      throws IOException {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      requireNamespacePermission(user, reason, namespace, null, Action.ADMIN, Action.CREATE);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          Action.ADMIN, Action.CREATE);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    } else {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public static void logResult(AuthResult result) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    if (AUDITLOG.isTraceEnabled()) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      AUDITLOG.trace(<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        "Access {} for user {}; reason: {}; remote address: {}; request: {}; context: {}",<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        (result.isAllowed() ? "allowed" : "denied"),<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        (result.getUser() != null ? result.getUser().getShortName() : "UNKNOWN"),<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        result.getReason(), RpcServer.getRemoteAddress().map(InetAddress::toString).orElse(""),<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        result.getRequest(), result.toContextString());<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /*<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Validate the hasPermission operation caller with the filter user. Self check doesn't require<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * any privilege but for others caller must have ADMIN privilege.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  public User validateCallerWithFilterUser(User caller, TablePermission tPerm, String inputUserName)<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      throws IOException {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    User filterUser = null;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    if (!caller.getShortName().equals(inputUserName)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      // User should have admin privilege if checking permission for other users<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      requirePermission(caller, "hasPermission", tPerm.getTableName(), tPerm.getFamily(),<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        tPerm.getQualifier(), inputUserName, Action.ADMIN);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // Initialize user instance for the input user name<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      List&lt;String&gt; groups = getUserGroups(inputUserName);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      filterUser = new InputUser(inputUserName, groups.toArray(new String[groups.size()]));<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    } else {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      // User don't need ADMIN privilege for self check.<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      // Setting action as null in AuthResult to display empty action in audit log<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      AuthResult result = AuthResult.allow("hasPermission", "Self user validation allowed", caller,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        null, tPerm.getTableName(), tPerm.getFamily(), tPerm.getQualifier());<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      logResult(result);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      filterUser = caller;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    return filterUser;<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>  /**<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * A temporary user class to instantiate User instance based on the name and groups.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  public static class InputUser extends User {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    private String name;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String shortName = null;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    private String[] groups;<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>    public InputUser(String name, String[] groups) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      this.name = name;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      this.groups = groups;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>    @Override<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    public String getShortName() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      if (this.shortName == null) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        try {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          this.shortName = new HadoopKerberosName(this.name).getShortName();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        } catch (IOException ioe) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          throw new IllegalArgumentException(<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              "Illegal principal name " + this.name + ": " + ioe.toString(), ioe);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        }<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      return shortName;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>    @Override<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    public String getName() {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      return this.name;<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>    @Override<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    public String[] getGroupNames() {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      return this.groups;<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>    @Override<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    public &lt;T&gt; T runAs(PrivilegedAction&lt;T&gt; action) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      throw new UnsupportedOperationException(<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          "Method not supported, this class has limited implementation");<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    public &lt;T&gt; T runAs(PrivilegedExceptionAction&lt;T&gt; action)<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        throws IOException, InterruptedException {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      throw new UnsupportedOperationException(<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          "Method not supported, this class has limited implementation");<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>    @Override<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public String toString() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return this.name;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  }<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>   * Initialize the group service.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private void initGroupService(Configuration conf) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (groupService == null) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      if (conf.getBoolean(User.TestingGroups.TEST_CONF, false)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        UserProvider.setGroups(new User.TestingGroups(UserProvider.getGroups()));<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        groupService = UserProvider.getGroups();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      } else {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        groupService = Groups.getUserToGroupsMappingService(conf);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>  /**<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * Retrieve the groups of the given user.<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * @param user User name<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * @return Groups<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   */<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  public static List&lt;String&gt; getUserGroups(String user) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    try {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      return groupService.getGroups(user);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    } catch (IOException e) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      LOG.error("Error occurred while retrieving group for " + user, e);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      return new ArrayList&lt;&gt;();<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>  /**<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * Authorizes that if the current user has the given permissions.<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param user Active user to which authorization checks should be applied<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param request Request type<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param permission Actions being requested<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return True if the user has the specific permission<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  public boolean hasUserPermission(User user, String request, Permission permission) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    if (permission instanceof TablePermission) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      TablePermission tPerm = (TablePermission) permission;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      for (Permission.Action action : permission.getActions()) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        AuthResult authResult = permissionGranted(request, user, action, tPerm.getTableName(),<a name="line.494"></a>
-<span class="sourceLineNo">495</span>          tPerm.getFamily(), tPerm.getQualifier());<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        AccessChecker.logResult(authResult);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        if (!authResult.isAllowed()) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          return false;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        }<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    } else if (permission instanceof NamespacePermission) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      NamespacePermission nsPerm = (NamespacePermission) permission;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      AuthResult authResult;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      for (Action action : nsPerm.getActions()) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        if (getAuthManager().authorizeUserNamespace(user, nsPerm.getNamespace(), action)) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          authResult =<a name="line.506"></a>
-<span class="sourceLineNo">507</span>              AuthResult.allow(request, "Namespace action allowed", user, action, null, null);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        } else {<a name="line.508"></a>
+<span class="sourceLineNo">064</span>  /** Group service to retrieve the user group information */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static Groups groupService;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  public static boolean isAuthorizationSupported(Configuration conf) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    return conf.getBoolean(User.HBASE_SECURITY_AUTHORIZATION_CONF_KEY, false);<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>  /**<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   * Constructor with existing configuration<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   *<a name="line.73"></a>
+<span class="sourceLineNo">074</span>   * @param conf Existing configuration to use<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   */<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  public AccessChecker(final Configuration conf) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    this.authManager = new AuthManager(conf);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    initGroupService(conf);<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 AuthManager getAuthManager() {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    return authManager;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  /**<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * Authorizes that the current user has any of the given permissions to access the table.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   *<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * @param user Active user to which authorization checks should be applied<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * @param request Request type.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * @param tableName   Table requested<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @param permissions Actions being requested<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * @throws IOException if obtaining the current user fails<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * @throws AccessDeniedException if user has no authorization<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public void requireAccess(User user, String request, TableName tableName,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      Action... permissions) throws IOException {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    AuthResult result = null;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>    for (Action permission : permissions) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      if (authManager.accessUserTable(user, tableName, permission)) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.101"></a>
+<span class="sourceLineNo">102</span>            user, permission, tableName, null, null);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        break;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      } else {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        // rest of the world<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.106"></a>
+<span class="sourceLineNo">107</span>            user, permission, tableName, null, null);<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>    logResult(result);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    if (!result.isAllowed()) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<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><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  /**<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * Authorizes that the current user has global privileges for the given action.<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * @param user Active user to which authorization checks should be applied<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * @param request Request type<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * @param perm The action being requested<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * @throws IOException if obtaining the current user fails<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * @throws AccessDeniedException if authorization is denied<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   */<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public void requirePermission(User user, String request, String filterUser, Action perm)<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throws IOException {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    requireGlobalPermission(user, request, perm, null, null, filterUser);<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>  /**<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * Checks that the user has the given global permission. The generated<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * audit log message will contain context information for the operation<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * being authorized, based on the given parameters.<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   *<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * @param user Active user to which authorization checks should be applied<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * @param request Request type<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * @param perm      Action being requested<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * @param tableName Affected table name.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param familyMap Affected column families.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public void requireGlobalPermission(User user, String request,<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      Action perm, TableName tableName,<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; familyMap, String filterUser) throws IOException {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    AuthResult result;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (authManager.authorizeUserGlobal(user, perm)) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      result = AuthResult.allow(request, "Global check allowed", user, perm, tableName, familyMap);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    } else {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      result = AuthResult.deny(request, "Global check failed", user, perm, tableName, familyMap);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    result.getParams().setTableName(tableName).setFamilies(familyMap);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    logResult(result);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    if (!result.isAllowed()) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      throw new AccessDeniedException(<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          "Insufficient permissions for user '" + (user != null ? user.getShortName() : "null")<a name="line.156"></a>
+<span class="sourceLineNo">157</span>              + "' (global, action=" + perm.toString() + ")");<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>   * Checks that the user has the given global permission. The generated<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * audit log message will contain context information for the operation<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * being authorized, based on the given parameters.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   *<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param user Active user to which authorization checks should be applied<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param request Request type<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @param perm      Action being requested<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @param namespace The given namespace<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  public void requireGlobalPermission(User user, String request, Action perm,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      String namespace) throws IOException {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    AuthResult authResult;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    if (authManager.authorizeUserGlobal(user, perm)) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      authResult = AuthResult.allow(request, "Global check allowed", user, perm, null);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      authResult.getParams().setNamespace(namespace);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      logResult(authResult);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    } else {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      authResult = AuthResult.deny(request, "Global check failed", user, perm, null);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      authResult.getParams().setNamespace(namespace);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      logResult(authResult);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      throw new AccessDeniedException(<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          "Insufficient permissions for user '" + (user != null ? user.getShortName() : "null")<a name="line.183"></a>
+<span class="sourceLineNo">184</span>              + "' (global, action=" + perm.toString() + ")");<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><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  /**<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * Checks that the user has the given global or namespace permission.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * @param user Active user to which authorization checks should be applied<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * @param request Request type<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * @param namespace Name space as requested<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param permissions Actions being requested<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  public void requireNamespacePermission(User user, String request, String namespace,<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      String filterUser, Action... permissions) throws IOException {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    AuthResult result = null;<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    for (Action permission : permissions) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      if (authManager.authorizeUserNamespace(user, namespace, permission)) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        result =<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            AuthResult.allow(request, "Namespace permission granted", user, permission, namespace);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        break;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      } else {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        // rest of the world<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        result = AuthResult.deny(request, "Insufficient permissions", user, permission, namespace);<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>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    logResult(result);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    if (!result.isAllowed()) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  /**<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * Checks that the user has the given global or namespace permission.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   *<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @param user Active user to which authorization checks should be applied<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * @param request Request type<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @param namespace  The given namespace<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param tableName Table requested<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param familyMap    Column family map requested<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param permissions Actions being requested<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public void requireNamespacePermission(User user, String request, String namespace,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      TableName tableName, Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; familyMap,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      Action... permissions) throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    AuthResult result = null;<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>    for (Action permission : permissions) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (authManager.authorizeUserNamespace(user, namespace, permission)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        result =<a name="line.234"></a>
+<span class="sourceLineNo">235</span>            AuthResult.allow(request, "Namespace permission granted", user, permission, namespace);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        result.getParams().setTableName(tableName).setFamilies(familyMap);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        break;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      } else {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        // rest of the world<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        result = AuthResult.deny(request, "Insufficient permissions", user, permission, namespace);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        result.getParams().setTableName(tableName).setFamilies(familyMap);<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>    logResult(result);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (!result.isAllowed()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    }<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>  /**<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   * Authorizes that the current user has any of the given permissions for the<a name="line.251"></a>
+<span class="sourceLineNo">252</span>   * given table, column family and column qualifier.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   *<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @param user Active user to which authorization checks should be applied<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param request Request type<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param tableName Table requested<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @param family    Column family requested<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * @param qualifier Column qualifier requested<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * @param permissions Actions being requested<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   * @throws IOException if obtaining the current user fails<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * @throws AccessDeniedException if user has no authorization<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public void requirePermission(User user, String request, TableName tableName, byte[] family,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      byte[] qualifier, String filterUser, Action... permissions) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    AuthResult result = null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>    for (Action permission : permissions) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      if (authManager.authorizeUserTable(user, tableName, family, qualifier, permission)) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.270"></a>
+<span class="sourceLineNo">271</span>            user, permission, tableName, family, qualifier);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        break;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      } else {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        // rest of the world<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          user, permission, tableName, family, qualifier);<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>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    logResult(result);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (!result.isAllowed()) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<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>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Authorizes that the current user has any of the given permissions for the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * given table, column family and column qualifier.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   *<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * @param user Active user to which authorization checks should be applied<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * @param request Request type<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * @param tableName Table requested<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * @param family    Column family param<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @param qualifier Column qualifier param<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * @throws IOException           if obtaining the current user fails<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * @throws AccessDeniedException if user has no authorization<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public void requireTablePermission(User user, String request,<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      TableName tableName,byte[] family, byte[] qualifier,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      Action... permissions) throws IOException {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    AuthResult result = null;<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>    for (Action permission : permissions) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      if (authManager.authorizeUserTable(user, tableName, permission)) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.305"></a>
+<span class="sourceLineNo">306</span>            user, permission, tableName, null, null);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        result.getParams().setFamily(family).setQualifier(qualifier);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        break;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      } else {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        // rest of the world<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.311"></a>
+<span class="sourceLineNo">312</span>                user, permission, tableName, family, qualifier);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        result.getParams().setFamily(family).setQualifier(qualifier);<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>    logResult(result);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    if (!result.isAllowed()) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /**<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * Check if caller is granting or revoking superusers's or supergroups's permissions.<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   * @param request request name<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * @param caller caller<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * @param userToBeChecked target user or group<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * @throws IOException AccessDeniedException if target user is superuser<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   */<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  public void performOnSuperuser(String request, User caller, String userToBeChecked)<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      throws IOException {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    List&lt;String&gt; userGroups = new ArrayList&lt;&gt;();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    userGroups.add(userToBeChecked);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    if (!AuthUtil.isGroupPrincipal(userToBeChecked)) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      for (String group : getUserGroups(userToBeChecked)) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        userGroups.add(AuthUtil.toGroupEntry(group));<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    for (String name : userGroups) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (Superusers.isSuperUser(name)) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        AuthResult result = AuthResult.deny(<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          request,<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          "Granting or revoking superusers's or supergroups's permissions is not allowed",<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          caller,<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          Action.ADMIN,<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        logResult(result);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        throw new AccessDeniedException(result.getReason());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>  public void checkLockPermissions(User user, String namespace,<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      throws IOException {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      requireNamespacePermission(user, reason, namespace, null, Action.ADMIN, Action.CREATE);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          Action.ADMIN, Action.CREATE);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } else {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  public static void logResult(AuthResult result) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    if (AUDITLOG.isTraceEnabled()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      AUDITLOG.trace(<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        "Access {} for user {}; reason: {}; remote address: {}; request: {}; context: {}",<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        (result.isAllowed() ? "allowed" : "denied"),<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        (result.getUser() != null ? result.getUser().getShortName() : "UNKNOWN"),<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        result.getReason(), RpcServer.getRemoteAddress().map(InetAddress::toString).orElse(""),<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        result.getRequest(), result.toContextString());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    }<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>  /*<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * Validate the hasPermission operation caller with the filter user. Self check doesn't require<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * any privilege but for others caller must have ADMIN privilege.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   */<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public User validateCallerWithFilterUser(User caller, TablePermission tPerm, String inputUserName)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      throws IOException {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    User filterUser = null;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    if (!caller.getShortName().equals(inputUserName)) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      // User should have admin privilege if checking permission for other users<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      requirePermission(caller, "hasPermission", tPerm.getTableName(), tPerm.getFamily(),<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        tPerm.getQualifier(), inputUserName, Action.ADMIN);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // Initialize user instance for the input user name<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      List&lt;String&gt; groups = getUserGroups(inputUserName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      filterUser = new InputUser(inputUserName, groups.toArray(new String[groups.size()]));<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    } else {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      // User don't need ADMIN privilege for self check.<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      // Setting action as null in AuthResult to display empty action in audit log<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      AuthResult result = AuthResult.allow("hasPermission", "Self user validation allowed", caller,<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        null, tPerm.getTableName(), tPerm.getFamily(), tPerm.getQualifier());<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      logResult(result);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      filterUser = caller;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    return filterUser;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  /**<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * A temporary user class to instantiate User instance based on the name and groups.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public static class InputUser extends User {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    private String name;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    private String shortName = null;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    private String[] groups;<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    public InputUser(String name, String[] groups) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      this.name = name;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      this.groups = groups;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    @Override<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    public String getShortName() {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      if (this.shortName == null) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        try {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>          this.shortName = new HadoopKerberosName(this.name).getShortName();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        } catch (IOException ioe) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>          throw new IllegalArgumentException(<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              "Illegal principal name " + this.name + ": " + ioe.toString(), ioe);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      return shortName;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
+<span class="sourceLineNo">428</span><a name="line.428"></a>
+<span class="sourceLineNo">429</span>    @Override<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    public String getName() {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      return this.name;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    @Override<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    public String[] getGroupNames() {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return this.groups;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    @Override<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    public &lt;T&gt; T runAs(PrivilegedAction&lt;T&gt; action) {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      throw new UnsupportedOperationException(<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          "Method not supported, this class has limited implementation");<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>    @Override<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    public &lt;T&gt; T runAs(PrivilegedExceptionAction&lt;T&gt; action)<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        throws IOException, InterruptedException {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      throw new UnsupportedOperationException(<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          "Method not supported, this class has limited implementation");<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    @Override<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    public String toString() {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      return this.name;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  /*<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * Initialize the group service.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   */<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  private void initGroupService(Configuration conf) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    if (groupService == null) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      if (conf.getBoolean(User.TestingGroups.TEST_CONF, false)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>        UserProvider.setGroups(new User.TestingGroups(UserProvider.getGroups()));<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        groupService = UserProvider.getGroups();<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      } else {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        groupService = Groups.getUserToGroupsMappingService(conf);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      }<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Retrieve the groups of the given user.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * @param user User name<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @return Groups<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   */<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  public static List&lt;String&gt; getUserGroups(String user) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    try {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      return groupService.getGroups(user);<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    } catch (IOException e) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      LOG.error("Error occurred while retrieving group for " + user, e);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      return new ArrayList&lt;&gt;();<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    }<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>  /**<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   * Authorizes that if the current user has the given permissions.<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * @param user Active user to which authorization checks should be applied<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * @param request Request type<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * @param permission Actions being requested<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * @return True if the user has the specific permission<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   */<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  public boolean hasUserPermission(User user, String request, Permission permission) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    if (permission instanceof TablePermission) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      TablePermission tPerm = (TablePermission) permission;<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      for (Permission.Action action : permission.getActions()) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>        AuthResult authResult = permissionGranted(request, user, action, tPerm.getTableName(),<a name="line.497"></a>
+<span class="sourceLineNo">498</span>          tPerm.getFamily(), tPerm.getQualifier());<a name="line.498"></a>
+<span class="sourceLineNo">499</span>        AccessChecker.logResult(authResult);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        if (!authResult.isAllowed()) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>          return false;<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>    } else if (permission instanceof NamespacePermission) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      NamespacePermission nsPerm = (NamespacePermission) permission;<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      AuthResult authResult;<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      for (Action action : nsPerm.getActions()) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        if (getAuthManager().authorizeUserNamespace(user, nsPerm.getNamespace(), action)) {<a name="line.508"></a>
 <span class="sourceLineNo">509</span>          authResult =<a name="line.509"></a>
-<span class="sourceLineNo">510</span>              AuthResult.deny(request, "Namespace action denied", user, action, null, null);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        AccessChecker.logResult(authResult);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        if (!authResult.isAllowed()) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>          return false;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        }<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    } else {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      AuthResult authResult;<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      for (Permission.Action action : permission.getActions()) {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>        if (getAuthManager().authorizeUserGlobal(user, action)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          authResult = AuthResult.allow(request, "Global action allowed", user, action, null, null);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>        } else {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          authResult = AuthResult.deny(request, "Global action denied", user, action, null, null);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>        AccessChecker.logResult(authResult);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        if (!authResult.isAllowed()) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          return false;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        }<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      }<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    return true;<a name="line.531"></a>
-<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
-<span class="sourceLineNo">533</span><a name="line.533"></a>
-<span class="sourceLineNo">534</span>  private AuthResult permissionGranted(String request, User user, Action permRequest,<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      TableName tableName, byte[] family, byte[] qualifier) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; map = makeFamilyMap(family, qualifier);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    return permissionGranted(request, user, permRequest, tableName, map);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>  }<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>  /**<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * Check the current user for authorization to perform a specific action against the given set of<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * row data.<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * &lt;p&gt;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * Note: Ordering of the authorization checks has been carefully optimized to short-circuit the<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * most common requests and minimize the amount of processing required.<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * &lt;/p&gt;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * @param request User request<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * @param user User name<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @param permRequest the action being requested<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param tableName Table name<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param families the map of column families to qualifiers present in the request<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @return an authorization result<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public AuthResult permissionGranted(String request, User user, Action permRequest,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      TableName tableName, Map&lt;byte[], ? extends Collection&lt;?&gt;&gt; families) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    // 1. All users need read access to hbase:meta table.<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    // this is a very common operation, so deal with it quickly.<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    if (TableName.META_TABLE_NAME.equals(tableName)) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      if (permRequest == Action.READ) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>        return AuthResult.allow(request, "All users allowed", user, permRequest, tableName,<a name="line.560"></a>
-<span class="sourceLineNo">561</span>          families);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      }<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    }<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>    if (user == null) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      return AuthResult.deny(request, "No user associated with request!", null, permRequest,<a name="line.566"></a>
-<span class="sourceLineNo">567</span>        tableName, families);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>    // 2. check for the table-level, if successful we can short-circuit<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    if (getAuthManager().authorizeUserTable(user, tableName, permRequest)) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      return AuthResult.allow(request, "Table permission granted", user, permRequest, tableName,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        families);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>    // 3. check permissions against the requested families<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    if (families != null &amp;&amp; families.size() &gt; 0) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      // all families must pass<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      for (Map.Entry&lt;byte[], ? extends Collection&lt;?&gt;&gt; family : families.entrySet()) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>        // a) check for family level access<a name="line.580"></a>
-<span class="sourceLineNo">581</span>        if (getAuthManager().authorizeUserTable(user, tableName, family.getKey(), permRequest)) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          continue; // family-level permission overrides per-qualifier<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        }<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>        // b) qualifier level access can still succeed<a name="line.585"></a>
-<span class="sourceLineNo">586</span>        if ((family.getValue() != null) &amp;&amp; (family.getValue().size() &gt; 0)) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>          if (family.getValue() instanceof Set) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>            // for each qualifier of the family<a name="line.588"></a>
-<span class="sourceLineNo">589</span>            Set&lt;byte[]&gt; familySet = (Set&lt;byte[]&gt;) family.getValue();<a name="line.589"></a>
-<span class="sourceLineNo">590</span>            for (byte[] qualifier : familySet) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>              if (!getAuthManager().authorizeUserTable(user, tableName, family.getKey(), qualifier,<a name="line.591"></a>
-<span class="sourceLineNo">592</span>                permRequest)) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>                return AuthResult.deny(request, "Failed qualifier check", user, permRequest,<a name="line.593"></a>
-<span class="sourceLineNo">594</span>                  tableName, makeFamilyMap(family.getKey(), qualifier));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>              }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>            }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>          } else if (family.getValue() instanceof List) { // List&lt;Cell&gt;<a name="line.597"></a>
-<span class="sourceLineNo">598</span>            List&lt;Cell&gt; cellList = (List&lt;Cell&gt;) family.getValue();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>            for (Cell cell : cellList) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>              if (!getAuthManager().authorizeUserTable(user, tableName, family.getKey(),<a name="line.600"></a>
-<span class="sourceLineNo">601</span>                CellUtil.cloneQualifier(cell), permRequest)) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>                return AuthResult.deny(request, "Failed qualifier check", user, permRequest,<a name="line.602"></a>
-<span class="sourceLineNo">603</span>                  tableName, makeFamilyMap(family.getKey(), CellUtil.cloneQualifier(cell)));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>              }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>            }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>          }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        } else {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>          // no qualifiers and family-level check already failed<a name="line.608"></a>
-<span class="sourceLineNo">609</span>          return AuthResult.deny(request, "Failed family check", user, permRequest, tableName,<a name="line.609"></a>
-<span class="sourceLineNo">610</span>            makeFamilyMap(family.getKey(), null));<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        }<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      }<a name="line.612"></a>
-<span class="sourceLineNo">613</span><a name="line.613"></a>
-<span class="sourceLineNo">614</span>      // all family checks passed<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      return AuthResult.allow(request, "All family checks passed", user, permRequest, tableName,<a name="line.615"></a>
-<span class="sourceLineNo">616</span>        families);<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    }<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>    // 4. no families to check and table level access failed<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    return AuthResult.deny(request, "No families to check and table permission failed", user,<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      permRequest, tableName, families);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span>  private Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; makeFamilyMap(byte[] family, byte[] qualifier) {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    if (family == null) {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      return null;<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    }<a name="line.627"></a>
-<span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>    Map&lt;byte[], Collection&lt;byte[]&gt;&gt; familyMap = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    familyMap.put(family, qualifier != null ? ImmutableSet.of(qualifier) : null);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    return familyMap;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>}<a name="line.633"></a>
+<span class="sourceLineNo">510</span>              AuthResult.allow(request, "Namespace action allowed", user, action, null, null);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>        } else {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>          authResult =<a name="line.512"></a>
+<span class="sourceLineNo">513</span>              AuthResult.deny(request, "Namespace action denied", user, action, null, null);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>        }<a name="line.514"></a>
+<span class="sourceLineNo">515</span>        AccessChecker.logResult(authResult);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>        if (!authResult.isAllowed()) {<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>      }<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    } else {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      AuthResult authResult;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      for (Permission.Action action : permission.getActions()) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>        if (getAuthManager().authorizeUserGlobal(user, action)) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>          authResult = AuthResult.allow(request, "Global action allowed", user, action, null, null);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>        } else {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>          authResult = AuthResult.deny(request, "Global action denied", user, action, null, null);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>        }<a name="line.527"></a>
+<span class="sourceLineNo">528</span>        AccessChecker.logResult(authResult);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>        if (!authResult.isAllowed()) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          return false;<a name="line.530"></a>
+<span class="sourceLineNo">531</span>        }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      }<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    return true;<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>  private AuthResult permissionGranted(String request, User user, Action permRequest,<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      TableName tableName, byte[] family, byte[] qualifier) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; map = makeFamilyMap(family, qualifier);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    return permissionGranted(request, user, permRequest, tableName, map);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>  /**<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * Check the current user for authorization to perform a specific action against the given set of<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * row data.<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   * &lt;p&gt;<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * Note: Ordering of the authorization checks has been carefully optimized to short-circuit the<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * most common requests and minimize the amount of processing required.<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * &lt;/p&gt;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @param request User request<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param user User name<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @param permRequest the action being requested<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @param tableName Table name<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @param families the map of column families to qualifiers present in the request<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * @return an authorization result<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   */<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  public AuthResult permissionGranted(String request, User user, Action permRequest,<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      TableName tableName, Map&lt;byte[], ? extends Collection&lt;?&gt;&gt; families) {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    // 1. All users need read access to hbase:meta table.<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    // this is a very common operation, so deal with it quickly.<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    if (TableName.META_TABLE_NAME.equals(tableName)) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      if (permRequest == Action.READ) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        return AuthResult.allow(request, "All users allowed", user, permRequest, tableName,<a name="line.563"></a>
+<span class="sourceLineNo">564</span>          families);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      }<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    }<a name="line.566"></a>
+<span class="sourceLineNo">567</span><a name="line.567"></a>
+<span class="sourceLineNo">568</span>    if (user == null) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      return AuthResult.deny(request, "No user associated with request!", null, permRequest,<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        tableName, families);<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>    // 2. check for the table-level, if successful we can short-circuit<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    if (getAuthManager().authorizeUserTable(user, tableName, permRequest)) {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      return AuthResult.allow(request, "Table permission granted", user, permRequest, tableName,<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        families);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>    // 3. check permissions against the requested families<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    if (families != null &amp;&amp; families.size() &gt; 0) {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      // all families must pass<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      for (Map.Entry&lt;byte[], ? extends Collection&lt;?&gt;&gt; family : families.entrySet()) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        // a) check for family level access<a name="line.583"></a>
+<span class="sourceLineNo">584</span>        if (getAuthManager().authorizeUserTable(user, tableName, family.getKey(), permRequest)) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>          continue; // family-level permission overrides per-qualifier<a name="line.585"></a>
+<span class="sourceLineNo">586</span>        }<a name="line.586"></a>
+<span class="sourceLineNo">587</span><a name="line.587"></a>
+<span class="sourceLineNo">588</span>        // b) qualifier level access can still succeed<a name="line.588"></a>
+<span class="sourceLineNo">589</span>        if ((family.getValue() != null) &amp;&amp; (family.getValue().size() &gt; 0)) {<a name="line.589"></a>
+<span class="sourceLineNo">590</span>          if (family.getValue() instanceof Set) {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>            // for each qualifier of the family<a name="line.591"></a>
+<span class="sourceLineNo">592</span>            Set&lt;byte[]&gt; familySet = (Set&lt;byte[]&gt;) family.getValue();<a name="line.592"></a>
+<span class="sourceLineNo">593</span>            for (byte[] qualifier : familySet) {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>              if (!getAuthManager().authorizeUserTable(user, tableName, family.getKey(), qualifier,<a name="line.594"></a>
+<span class="sourceLineNo">595</span>                permRequest)) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>                return AuthResult.deny(request, "Failed qualifier check", user, permRequest,<a name="line.596"></a>
+<span class="sourceLineNo">597</span>                  tableName, makeFamilyMap(family.getKey(), qualifier));<a name="line.597"></a>
+<span class="sourceLineNo">598</span>              }<a name="line.598"></a>
+<span class="sourceLineNo">599</span>            }<a name="line.599"></a>
+<span class="sourceLineNo">600</span>          } else if (family.getValue() instanceof List) { // List&lt;Cell&gt;<a name="line.600"></a>
+<span class="sourceLineNo">601</span>            List&lt;Cell&gt; cellList = (List&lt;Cell&gt;) family.getValue();<a name="line.601"></a>
+<span class="sourceLineNo">602</span>            for (Cell cell : cellList) {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>              if (!getAuthManager().authorizeUserTable(user, tableName, family.getKey(),<a name="line.603"></a>
+<span class="sourceLineNo">604</span>                CellUtil.cloneQualifier(cell), permRequest)) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>                return AuthResult.deny(request, "Failed qualifier check", user, permRequest,<a name="line.605"></a>
+<span class="sourceLineNo">606</span>                  tableName, makeFamilyMap(family.getKey(), CellUtil.cloneQualifier(cell)));<a name="line.606"></a>
+<span class="sourceLineNo">607</span>              }<a name="line.607"></a>
+<span class="sourceLineNo">608</span>            }<a name="line.608"></a>
+<span class="sourceLineNo">609</span>          }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        } else {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>          // no qualifiers and family-level check already failed<a name="line.611"></a>
+<span class="sourceLineNo">612</span>          return AuthResult.deny(request, "Failed family check", user, permRequest, tableName,<a name="line.612"></a>
+<span class="sourceLineNo">613</span>            makeFamilyMap(family.getKey(), null));<a name="line.613"></a>
+<span class="sourceLineNo">614</span>        }<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      }<a name="line.615"></a>
+<span class="sourceLineNo">616</span><a name="line.616"></a>
+<span class="sourceLineNo">617</span>      // all family checks passed<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      return AuthResult.allow(request, "All family checks passed", user, permRequest, tableName,<a name="line.618"></a>
+<span class="sourceLineNo">619</span>        families);<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    }<a name="line.620"></a>
+<span class="sourceLineNo">621</span><a name="line.621"></a>
+<span class="sourceLineNo">622</span>    // 4. no families to check and table level access failed<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    return AuthResult.deny(request, "No families to check and table permission failed", user,<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      permRequest, tableName, families);<a name="line.624"></a>
+<span class="sourceLineNo">625</span>  }<a name="line.625"></a>
+<span class="sourceLineNo">626</span><a name="line.626"></a>
+<span class="sourceLineNo">627</span>  private Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; makeFamilyMap(byte[] family, byte[] qualifier) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (family == null) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return null;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    }<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span>    Map&lt;byte[], Collection&lt;byte[]&gt;&gt; familyMap = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    familyMap.put(family, qualifier != null ? ImmutableSet.of(qualifier) : null);<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    return familyMap;<a name="line.634"></a>
+<span class="sourceLineNo">635</span>  }<a name="line.635"></a>
+<span class="sourceLineNo">636</span>}<a name="line.636"></a>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html
index 8ae993c..f484c2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessChecker.html
@@ -42,603 +42,606 @@
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.Cell;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.TableName;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.security.User;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.access.Permission.Action;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.security.Groups;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.security.HadoopKerberosName;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.slf4j.Logger;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.slf4j.LoggerFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>@InterfaceAudience.Private<a name="line.54"></a>
-<span class="sourceLineNo">055</span>public class AccessChecker {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private static final Logger LOG = LoggerFactory.getLogger(AccessChecker.class);<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private static final Logger AUDITLOG =<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      LoggerFactory.getLogger("SecurityLogger." + AccessChecker.class.getName());<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private final AuthManager authManager;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  /** Group service to retrieve the user group information */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static Groups groupService;<a name="line.62"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.RegionInfo;<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.security.AccessDeniedException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.security.Superusers;<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.security.UserProvider;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.security.access.Permission.Action;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.security.Groups;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.security.HadoopKerberosName;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.Logger;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.slf4j.LoggerFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)<a name="line.56"></a>
+<span class="sourceLineNo">057</span>@InterfaceStability.Evolving<a name="line.57"></a>
+<span class="sourceLineNo">058</span>public class AccessChecker {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static final Logger LOG = LoggerFactory.getLogger(AccessChecker.class);<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final Logger AUDITLOG =<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      LoggerFactory.getLogger("SecurityLogger." + AccessChecker.class.getName());<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private final AuthManager authManager;<a name="line.62"></a>
 <span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>  public static boolean isAuthorizationSupported(Configuration conf) {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    return conf.getBoolean(User.HBASE_SECURITY_AUTHORIZATION_CONF_KEY, false);<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>  /**<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * Constructor with existing configuration<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   *<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   * @param conf Existing configuration to use<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  public AccessChecker(final Configuration conf) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    this.authManager = new AuthManager(conf);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    initGroupService(conf);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public AuthManager getAuthManager() {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    return authManager;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  }<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>   * Authorizes that the current user has any of the given permissions to access the table.<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   *<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * @param user Active user to which authorization checks should be applied<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * @param request Request type.<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * @param tableName   Table requested<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * @param permissions Actions being requested<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * @throws IOException if obtaining the current user fails<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * @throws AccessDeniedException if user has no authorization<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public void requireAccess(User user, String request, TableName tableName,<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      Action... permissions) throws IOException {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    AuthResult result = null;<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    for (Action permission : permissions) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      if (authManager.accessUserTable(user, tableName, permission)) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.98"></a>
-<span class="sourceLineNo">099</span>            user, permission, tableName, null, null);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        break;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      } else {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>        // rest of the world<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.103"></a>
-<span class="sourceLineNo">104</span>            user, permission, tableName, null, null);<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>    logResult(result);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    if (!result.isAllowed()) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<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><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * Authorizes that the current user has global privileges for the given action.<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * @param user Active user to which authorization checks should be applied<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * @param request Request type<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * @param perm The action being requested<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * @throws IOException if obtaining the current user fails<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * @throws AccessDeniedException if authorization is denied<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public void requirePermission(User user, String request, String filterUser, Action perm)<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      throws IOException {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    requireGlobalPermission(user, request, perm, null, null, filterUser);<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>   * Checks that the user has the given global permission. The generated<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * audit log message will contain context information for the operation<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * being authorized, based on the given parameters.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   *<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * @param user Active user to which authorization checks should be applied<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * @param request Request type<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * @param perm      Action being requested<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * @param tableName Affected table name.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * @param familyMap Affected column families.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void requireGlobalPermission(User user, String request,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      Action perm, TableName tableName,<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; familyMap, String filterUser) throws IOException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    AuthResult result;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    if (authManager.authorizeUserGlobal(user, perm)) {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      result = AuthResult.allow(request, "Global check allowed", user, perm, tableName, familyMap);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      result = AuthResult.deny(request, "Global check failed", user, perm, tableName, familyMap);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    result.getParams().setTableName(tableName).setFamilies(familyMap);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    logResult(result);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    if (!result.isAllowed()) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      throw new AccessDeniedException(<a name="line.152"></a>
-<span class="sourceLineNo">153</span>          "Insufficient permissions for user '" + (user != null ? user.getShortName() : "null")<a name="line.153"></a>
-<span class="sourceLineNo">154</span>              + "' (global, action=" + perm.toString() + ")");<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><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   * Checks that the user has the given global permission. The generated<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * audit log message will contain context information for the operation<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * being authorized, based on the given parameters.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   *<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * @param user Active user to which authorization checks should be applied<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param request Request type<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param perm      Action being requested<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param namespace The given namespace<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public void requireGlobalPermission(User user, String request, Action perm,<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      String namespace) throws IOException {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    AuthResult authResult;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    if (authManager.authorizeUserGlobal(user, perm)) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      authResult = AuthResult.allow(request, "Global check allowed", user, perm, null);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      authResult.getParams().setNamespace(namespace);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      logResult(authResult);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    } else {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      authResult = AuthResult.deny(request, "Global check failed", user, perm, null);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      authResult.getParams().setNamespace(namespace);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      logResult(authResult);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      throw new AccessDeniedException(<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          "Insufficient permissions for user '" + (user != null ? user.getShortName() : "null")<a name="line.180"></a>
-<span class="sourceLineNo">181</span>              + "' (global, action=" + perm.toString() + ")");<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><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Checks that the user has the given global or namespace permission.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param user Active user to which authorization checks should be applied<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @param request Request type<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @param namespace Name space as requested<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param permissions Actions being requested<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   */<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  public void requireNamespacePermission(User user, String request, String namespace,<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      String filterUser, Action... permissions) throws IOException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    AuthResult result = null;<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    for (Action permission : permissions) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (authManager.authorizeUserNamespace(user, namespace, permission)) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        result =<a name="line.199"></a>
-<span class="sourceLineNo">200</span>            AuthResult.allow(request, "Namespace permission granted", user, permission, namespace);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        break;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      } else {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        // rest of the world<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        result = AuthResult.deny(request, "Insufficient permissions", user, permission, namespace);<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>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    logResult(result);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    if (!result.isAllowed()) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * Checks that the user has the given global or namespace permission.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   *<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param user Active user to which authorization checks should be applied<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * @param request Request type<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param namespace  The given namespace<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @param tableName Table requested<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @param familyMap    Column family map requested<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param permissions Actions being requested<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  public void requireNamespacePermission(User user, String request, String namespace,<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      TableName tableName, Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; familyMap,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Action... permissions) throws IOException {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    AuthResult result = null;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    for (Action permission : permissions) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      if (authManager.authorizeUserNamespace(user, namespace, permission)) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        result =<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            AuthResult.allow(request, "Namespace permission granted", user, permission, namespace);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        result.getParams().setTableName(tableName).setFamilies(familyMap);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        break;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      } else {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        // rest of the world<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        result = AuthResult.deny(request, "Insufficient permissions", user, permission, namespace);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        result.getParams().setTableName(tableName).setFamilies(familyMap);<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>    logResult(result);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (!result.isAllowed()) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * Authorizes that the current user has any of the given permissions for the<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * given table, column family and column qualifier.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   *<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * @param user Active user to which authorization checks should be applied<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * @param request Request type<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param tableName Table requested<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param family    Column family requested<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @param qualifier Column qualifier requested<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @param permissions Actions being requested<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * @throws IOException if obtaining the current user fails<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * @throws AccessDeniedException if user has no authorization<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  public void requirePermission(User user, String request, TableName tableName, byte[] family,<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      byte[] qualifier, String filterUser, Action... permissions) throws IOException {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    AuthResult result = null;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>    for (Action permission : permissions) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      if (authManager.authorizeUserTable(user, tableName, family, qualifier, permission)) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.267"></a>
-<span class="sourceLineNo">268</span>            user, permission, tableName, family, qualifier);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        break;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      } else {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        // rest of the world<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          user, permission, tableName, family, qualifier);<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>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    logResult(result);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    if (!result.isAllowed()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  /**<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * Authorizes that the current user has any of the given permissions for the<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * given table, column family and column qualifier.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * @param user Active user to which authorization checks should be applied<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * @param request Request type<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * @param tableName Table requested<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * @param family    Column family param<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   * @param qualifier Column qualifier param<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @throws IOException           if obtaining the current user fails<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * @throws AccessDeniedException if user has no authorization<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public void requireTablePermission(User user, String request,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      TableName tableName,byte[] family, byte[] qualifier,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      Action... permissions) throws IOException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    AuthResult result = null;<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    for (Action permission : permissions) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      if (authManager.authorizeUserTable(user, tableName, permission)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.302"></a>
-<span class="sourceLineNo">303</span>            user, permission, tableName, null, null);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        result.getParams().setFamily(family).setQualifier(qualifier);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        break;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      } else {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        // rest of the world<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.308"></a>
-<span class="sourceLineNo">309</span>                user, permission, tableName, family, qualifier);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        result.getParams().setFamily(family).setQualifier(qualifier);<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>    logResult(result);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    if (!result.isAllowed()) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<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><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  /**<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * Check if caller is granting or revoking superusers's or supergroups's permissions.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param request request name<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @param caller caller<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   * @param userToBeChecked target user or group<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   * @throws IOException AccessDeniedException if target user is superuser<a name="line.324"></a>
-<span class="sourceLineNo">325</span>   */<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  public void performOnSuperuser(String request, User caller, String userToBeChecked)<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      throws IOException {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    List&lt;String&gt; userGroups = new ArrayList&lt;&gt;();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    userGroups.add(userToBeChecked);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    if (!AuthUtil.isGroupPrincipal(userToBeChecked)) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      for (String group : getUserGroups(userToBeChecked)) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        userGroups.add(AuthUtil.toGroupEntry(group));<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    for (String name : userGroups) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      if (Superusers.isSuperUser(name)) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        AuthResult result = AuthResult.deny(<a name="line.337"></a>
-<span class="sourceLineNo">338</span>          request,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          "Granting or revoking superusers's or supergroups's permissions is not allowed",<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          caller,<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          Action.ADMIN,<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        logResult(result);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        throw new AccessDeniedException(result.getReason());<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public void checkLockPermissions(User user, String namespace,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      throws IOException {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      requireNamespacePermission(user, reason, namespace, null, Action.ADMIN, Action.CREATE);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          Action.ADMIN, Action.CREATE);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    } else {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public static void logResult(AuthResult result) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    if (AUDITLOG.isTraceEnabled()) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      AUDITLOG.trace(<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        "Access {} for user {}; reason: {}; remote address: {}; request: {}; context: {}",<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        (result.isAllowed() ? "allowed" : "denied"),<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        (result.getUser() != null ? result.getUser().getShortName() : "UNKNOWN"),<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        result.getReason(), RpcServer.getRemoteAddress().map(InetAddress::toString).orElse(""),<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        result.getRequest(), result.toContextString());<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /*<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Validate the hasPermission operation caller with the filter user. Self check doesn't require<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * any privilege but for others caller must have ADMIN privilege.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  public User validateCallerWithFilterUser(User caller, TablePermission tPerm, String inputUserName)<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      throws IOException {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    User filterUser = null;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    if (!caller.getShortName().equals(inputUserName)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      // User should have admin privilege if checking permission for other users<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      requirePermission(caller, "hasPermission", tPerm.getTableName(), tPerm.getFamily(),<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        tPerm.getQualifier(), inputUserName, Action.ADMIN);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // Initialize user instance for the input user name<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      List&lt;String&gt; groups = getUserGroups(inputUserName);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      filterUser = new InputUser(inputUserName, groups.toArray(new String[groups.size()]));<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    } else {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      // User don't need ADMIN privilege for self check.<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      // Setting action as null in AuthResult to display empty action in audit log<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      AuthResult result = AuthResult.allow("hasPermission", "Self user validation allowed", caller,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        null, tPerm.getTableName(), tPerm.getFamily(), tPerm.getQualifier());<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      logResult(result);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      filterUser = caller;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    return filterUser;<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>  /**<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * A temporary user class to instantiate User instance based on the name and groups.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  public static class InputUser extends User {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    private String name;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String shortName = null;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    private String[] groups;<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>    public InputUser(String name, String[] groups) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      this.name = name;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      this.groups = groups;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>    @Override<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    public String getShortName() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      if (this.shortName == null) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        try {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          this.shortName = new HadoopKerberosName(this.name).getShortName();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        } catch (IOException ioe) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          throw new IllegalArgumentException(<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              "Illegal principal name " + this.name + ": " + ioe.toString(), ioe);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        }<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      return shortName;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>    @Override<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    public String getName() {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      return this.name;<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>    @Override<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    public String[] getGroupNames() {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      return this.groups;<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>    @Override<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    public &lt;T&gt; T runAs(PrivilegedAction&lt;T&gt; action) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      throw new UnsupportedOperationException(<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          "Method not supported, this class has limited implementation");<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    public &lt;T&gt; T runAs(PrivilegedExceptionAction&lt;T&gt; action)<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        throws IOException, InterruptedException {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      throw new UnsupportedOperationException(<a name="line.445"></a>
-<span class="sourceLineNo">446</span>          "Method not supported, this class has limited implementation");<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>    @Override<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public String toString() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return this.name;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  }<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>   * Initialize the group service.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  private void initGroupService(Configuration conf) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (groupService == null) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      if (conf.getBoolean(User.TestingGroups.TEST_CONF, false)) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        UserProvider.setGroups(new User.TestingGroups(UserProvider.getGroups()));<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        groupService = UserProvider.getGroups();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      } else {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        groupService = Groups.getUserToGroupsMappingService(conf);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>  /**<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * Retrieve the groups of the given user.<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * @param user User name<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * @return Groups<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   */<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  public static List&lt;String&gt; getUserGroups(String user) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    try {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      return groupService.getGroups(user);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    } catch (IOException e) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      LOG.error("Error occurred while retrieving group for " + user, e);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      return new ArrayList&lt;&gt;();<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>  /**<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * Authorizes that if the current user has the given permissions.<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param user Active user to which authorization checks should be applied<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param request Request type<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param permission Actions being requested<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return True if the user has the specific permission<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  public boolean hasUserPermission(User user, String request, Permission permission) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    if (permission instanceof TablePermission) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      TablePermission tPerm = (TablePermission) permission;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      for (Permission.Action action : permission.getActions()) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        AuthResult authResult = permissionGranted(request, user, action, tPerm.getTableName(),<a name="line.494"></a>
-<span class="sourceLineNo">495</span>          tPerm.getFamily(), tPerm.getQualifier());<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        AccessChecker.logResult(authResult);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        if (!authResult.isAllowed()) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          return false;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        }<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    } else if (permission instanceof NamespacePermission) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      NamespacePermission nsPerm = (NamespacePermission) permission;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      AuthResult authResult;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      for (Action action : nsPerm.getActions()) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        if (getAuthManager().authorizeUserNamespace(user, nsPerm.getNamespace(), action)) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          authResult =<a name="line.506"></a>
-<span class="sourceLineNo">507</span>              AuthResult.allow(request, "Namespace action allowed", user, action, null, null);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        } else {<a name="line.508"></a>
+<span class="sourceLineNo">064</span>  /** Group service to retrieve the user group information */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static Groups groupService;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  public static boolean isAuthorizationSupported(Configuration conf) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    return conf.getBoolean(User.HBASE_SECURITY_AUTHORIZATION_CONF_KEY, false);<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>  /**<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   * Constructor with existing configuration<a name="line.72"></a>
+<span class="sourceLineNo">073</span>   *<a name="line.73"></a>
+<span class="sourceLineNo">074</span>   * @param conf Existing configuration to use<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   */<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  public AccessChecker(final Configuration conf) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    this.authManager = new AuthManager(conf);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    initGroupService(conf);<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 AuthManager getAuthManager() {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    return authManager;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  /**<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * Authorizes that the current user has any of the given permissions to access the table.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   *<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * @param user Active user to which authorization checks should be applied<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * @param request Request type.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * @param tableName   Table requested<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @param permissions Actions being requested<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * @throws IOException if obtaining the current user fails<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * @throws AccessDeniedException if user has no authorization<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public void requireAccess(User user, String request, TableName tableName,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      Action... permissions) throws IOException {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    AuthResult result = null;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>    for (Action permission : permissions) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      if (authManager.accessUserTable(user, tableName, permission)) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.101"></a>
+<span class="sourceLineNo">102</span>            user, permission, tableName, null, null);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        break;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      } else {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        // rest of the world<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.106"></a>
+<span class="sourceLineNo">107</span>            user, permission, tableName, null, null);<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>    logResult(result);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    if (!result.isAllowed()) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<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><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  /**<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * Authorizes that the current user has global privileges for the given action.<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * @param user Active user to which authorization checks should be applied<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * @param request Request type<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * @param perm The action being requested<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * @throws IOException if obtaining the current user fails<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * @throws AccessDeniedException if authorization is denied<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   */<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  public void requirePermission(User user, String request, String filterUser, Action perm)<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      throws IOException {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    requireGlobalPermission(user, request, perm, null, null, filterUser);<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>  /**<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * Checks that the user has the given global permission. The generated<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * audit log message will contain context information for the operation<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * being authorized, based on the given parameters.<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   *<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * @param user Active user to which authorization checks should be applied<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * @param request Request type<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * @param perm      Action being requested<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * @param tableName Affected table name.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param familyMap Affected column families.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public void requireGlobalPermission(User user, String request,<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      Action perm, TableName tableName,<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; familyMap, String filterUser) throws IOException {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    AuthResult result;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (authManager.authorizeUserGlobal(user, perm)) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      result = AuthResult.allow(request, "Global check allowed", user, perm, tableName, familyMap);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    } else {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      result = AuthResult.deny(request, "Global check failed", user, perm, tableName, familyMap);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    result.getParams().setTableName(tableName).setFamilies(familyMap);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    logResult(result);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    if (!result.isAllowed()) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      throw new AccessDeniedException(<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          "Insufficient permissions for user '" + (user != null ? user.getShortName() : "null")<a name="line.156"></a>
+<span class="sourceLineNo">157</span>              + "' (global, action=" + perm.toString() + ")");<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>   * Checks that the user has the given global permission. The generated<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * audit log message will contain context information for the operation<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * being authorized, based on the given parameters.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   *<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param user Active user to which authorization checks should be applied<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param request Request type<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @param perm      Action being requested<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @param namespace The given namespace<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  public void requireGlobalPermission(User user, String request, Action perm,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      String namespace) throws IOException {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    AuthResult authResult;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    if (authManager.authorizeUserGlobal(user, perm)) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      authResult = AuthResult.allow(request, "Global check allowed", user, perm, null);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      authResult.getParams().setNamespace(namespace);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      logResult(authResult);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    } else {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      authResult = AuthResult.deny(request, "Global check failed", user, perm, null);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      authResult.getParams().setNamespace(namespace);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      logResult(authResult);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      throw new AccessDeniedException(<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          "Insufficient permissions for user '" + (user != null ? user.getShortName() : "null")<a name="line.183"></a>
+<span class="sourceLineNo">184</span>              + "' (global, action=" + perm.toString() + ")");<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><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  /**<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * Checks that the user has the given global or namespace permission.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * @param user Active user to which authorization checks should be applied<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * @param request Request type<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * @param namespace Name space as requested<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param permissions Actions being requested<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  public void requireNamespacePermission(User user, String request, String namespace,<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      String filterUser, Action... permissions) throws IOException {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    AuthResult result = null;<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>    for (Action permission : permissions) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      if (authManager.authorizeUserNamespace(user, namespace, permission)) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        result =<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            AuthResult.allow(request, "Namespace permission granted", user, permission, namespace);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        break;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      } else {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        // rest of the world<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        result = AuthResult.deny(request, "Insufficient permissions", user, permission, namespace);<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>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    logResult(result);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    if (!result.isAllowed()) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>  /**<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * Checks that the user has the given global or namespace permission.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   *<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @param user Active user to which authorization checks should be applied<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * @param request Request type<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @param namespace  The given namespace<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param tableName Table requested<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param familyMap    Column family map requested<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param permissions Actions being requested<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public void requireNamespacePermission(User user, String request, String namespace,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      TableName tableName, Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; familyMap,<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      Action... permissions) throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    AuthResult result = null;<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>    for (Action permission : permissions) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      if (authManager.authorizeUserNamespace(user, namespace, permission)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        result =<a name="line.234"></a>
+<span class="sourceLineNo">235</span>            AuthResult.allow(request, "Namespace permission granted", user, permission, namespace);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        result.getParams().setTableName(tableName).setFamilies(familyMap);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        break;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      } else {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        // rest of the world<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        result = AuthResult.deny(request, "Insufficient permissions", user, permission, namespace);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        result.getParams().setTableName(tableName).setFamilies(familyMap);<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>    logResult(result);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (!result.isAllowed()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    }<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>  /**<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   * Authorizes that the current user has any of the given permissions for the<a name="line.251"></a>
+<span class="sourceLineNo">252</span>   * given table, column family and column qualifier.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   *<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @param user Active user to which authorization checks should be applied<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param request Request type<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param tableName Table requested<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @param family    Column family requested<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * @param qualifier Column qualifier requested<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * @param filterUser User name to be filtered from permission as requested<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * @param permissions Actions being requested<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   * @throws IOException if obtaining the current user fails<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * @throws AccessDeniedException if user has no authorization<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public void requirePermission(User user, String request, TableName tableName, byte[] family,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      byte[] qualifier, String filterUser, Action... permissions) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    AuthResult result = null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>    for (Action permission : permissions) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      if (authManager.authorizeUserTable(user, tableName, family, qualifier, permission)) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.270"></a>
+<span class="sourceLineNo">271</span>            user, permission, tableName, family, qualifier);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        break;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      } else {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        // rest of the world<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          user, permission, tableName, family, qualifier);<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>    result.getParams().addExtraParam("filterUser", filterUser);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    logResult(result);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (!result.isAllowed()) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<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>  /**<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Authorizes that the current user has any of the given permissions for the<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * given table, column family and column qualifier.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   *<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * @param user Active user to which authorization checks should be applied<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * @param request Request type<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * @param tableName Table requested<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * @param family    Column family param<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   * @param qualifier Column qualifier param<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * @throws IOException           if obtaining the current user fails<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * @throws AccessDeniedException if user has no authorization<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public void requireTablePermission(User user, String request,<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      TableName tableName,byte[] family, byte[] qualifier,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      Action... permissions) throws IOException {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    AuthResult result = null;<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>    for (Action permission : permissions) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      if (authManager.authorizeUserTable(user, tableName, permission)) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        result = AuthResult.allow(request, "Table permission granted",<a name="line.305"></a>
+<span class="sourceLineNo">306</span>            user, permission, tableName, null, null);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        result.getParams().setFamily(family).setQualifier(qualifier);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        break;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      } else {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        // rest of the world<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        result = AuthResult.deny(request, "Insufficient permissions",<a name="line.311"></a>
+<span class="sourceLineNo">312</span>                user, permission, tableName, family, qualifier);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        result.getParams().setFamily(family).setQualifier(qualifier);<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>    logResult(result);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    if (!result.isAllowed()) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /**<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * Check if caller is granting or revoking superusers's or supergroups's permissions.<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   * @param request request name<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * @param caller caller<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * @param userToBeChecked target user or group<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * @throws IOException AccessDeniedException if target user is superuser<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   */<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  public void performOnSuperuser(String request, User caller, String userToBeChecked)<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      throws IOException {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    List&lt;String&gt; userGroups = new ArrayList&lt;&gt;();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    userGroups.add(userToBeChecked);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    if (!AuthUtil.isGroupPrincipal(userToBeChecked)) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      for (String group : getUserGroups(userToBeChecked)) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        userGroups.add(AuthUtil.toGroupEntry(group));<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    for (String name : userGroups) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (Superusers.isSuperUser(name)) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        AuthResult result = AuthResult.deny(<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          request,<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          "Granting or revoking superusers's or supergroups's permissions is not allowed",<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          caller,<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          Action.ADMIN,<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        logResult(result);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        throw new AccessDeniedException(result.getReason());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>  public void checkLockPermissions(User user, String namespace,<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      throws IOException {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      requireNamespacePermission(user, reason, namespace, null, Action.ADMIN, Action.CREATE);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          Action.ADMIN, Action.CREATE);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    } else {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  public static void logResult(AuthResult result) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    if (AUDITLOG.isTraceEnabled()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      AUDITLOG.trace(<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        "Access {} for user {}; reason: {}; remote address: {}; request: {}; context: {}",<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        (result.isAllowed() ? "allowed" : "denied"),<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        (result.getUser() != null ? result.getUser().getShortName() : "UNKNOWN"),<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        result.getReason(), RpcServer.getRemoteAddress().map(InetAddress::toString).orElse(""),<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        result.getRequest(), result.toContextString());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    }<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>  /*<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * Validate the hasPermission operation caller with the filter user. Self check doesn't require<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * any privilege but for others caller must have ADMIN privilege.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   */<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public User validateCallerWithFilterUser(User caller, TablePermission tPerm, String inputUserName)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      throws IOException {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    User filterUser = null;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    if (!caller.getShortName().equals(inputUserName)) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      // User should have admin privilege if checking permission for other users<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      requirePermission(caller, "hasPermission", tPerm.getTableName(), tPerm.getFamily(),<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        tPerm.getQualifier(), inputUserName, Action.ADMIN);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // Initialize user instance for the input user name<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      List&lt;String&gt; groups = getUserGroups(inputUserName);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      filterUser = new InputUser(inputUserName, groups.toArray(new String[groups.size()]));<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    } else {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      // User don't need ADMIN privilege for self check.<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      // Setting action as null in AuthResult to display empty action in audit log<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      AuthResult result = AuthResult.allow("hasPermission", "Self user validation allowed", caller,<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        null, tPerm.getTableName(), tPerm.getFamily(), tPerm.getQualifier());<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      logResult(result);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      filterUser = caller;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    return filterUser;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  /**<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * A temporary user class to instantiate User instance based on the name and groups.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public static class InputUser extends User {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    private String name;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    private String shortName = null;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    private String[] groups;<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    public InputUser(String name, String[] groups) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      this.name = name;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      this.groups = groups;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    @Override<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    public String getShortName() {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      if (this.shortName == null) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        try {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>          this.shortName = new HadoopKerberosName(this.name).getShortName();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        } catch (IOException ioe) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>          throw new IllegalArgumentException(<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              "Illegal principal name " + this.name + ": " + ioe.toString(), ioe);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      return shortName;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
+<span class="sourceLineNo">428</span><a name="line.428"></a>
+<span class="sourceLineNo">429</span>    @Override<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    public String getName() {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      return this.name;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    @Override<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    public String[] getGroupNames() {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return this.groups;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    @Override<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    public &lt;T&gt; T runAs(PrivilegedAction&lt;T&gt; action) {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      throw new UnsupportedOperationException(<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          "Method not supported, this class has limited implementation");<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>    @Override<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    public &lt;T&gt; T runAs(PrivilegedExceptionAction&lt;T&gt; action)<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        throws IOException, InterruptedException {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      throw new UnsupportedOperationException(<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          "Method not supported, this class has limited implementation");<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    @Override<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    public String toString() {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      return this.name;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  /*<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * Initialize the group service.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   */<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  private void initGroupService(Configuration conf) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    if (groupService == null) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      if (conf.getBoolean(User.TestingGroups.TEST_CONF, false)) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>        UserProvider.setGroups(new User.TestingGroups(UserProvider.getGroups()));<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        groupService = UserProvider.getGroups();<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      } else {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        groupService = Groups.getUserToGroupsMappingService(conf);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      }<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Retrieve the groups of the given user.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * @param user User name<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @return Groups<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   */<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  public static List&lt;String&gt; getUserGroups(String user) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    try {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      return groupService.getGroups(user);<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    } catch (IOException e) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      LOG.error("Error occurred while retrieving group for " + user, e);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      return new ArrayList&lt;&gt;();<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    }<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>  /**<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   * Authorizes that if the current user has the given permissions.<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * @param user Active user to which authorization checks should be applied<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * @param request Request type<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * @param permission Actions being requested<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * @return True if the user has the specific permission<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   */<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  public boolean hasUserPermission(User user, String request, Permission permission) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    if (permission instanceof TablePermission) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      TablePermission tPerm = (TablePermission) permission;<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      for (Permission.Action action : permission.getActions()) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>        AuthResult authResult = permissionGranted(request, user, action, tPerm.getTableName(),<a name="line.497"></a>
+<span class="sourceLineNo">498</span>          tPerm.getFamily(), tPerm.getQualifier());<a name="line.498"></a>
+<span class="sourceLineNo">499</span>        AccessChecker.logResult(authResult);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        if (!authResult.isAllowed()) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>          return false;<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>    } else if (permission instanceof NamespacePermission) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      NamespacePermission nsPerm = (NamespacePermission) permission;<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      AuthResult authResult;<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      for (Action action : nsPerm.getActions()) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        if (getAuthManager().authorizeUserNamespace(user, nsPerm.getNamespace(), action)) {<a name="line.508"></a>
 <span class="sourceLineNo">509</span>          authResult =<a name="line.509"></a>
-<span class="sourceLineNo">510</span>              AuthResult.deny(request, "Namespace action denied", user, action, null, null);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        AccessChecker.logResult(authResult);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        if (!authResult.isAllowed()) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>          return false;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        }<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    } else {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      AuthResult authResult;<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      for (Permission.Action action : permission.getActions()) {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>        if (getAuthManager().authorizeUserGlobal(user, action)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          authResult = AuthResult.allow(request, "Global action allowed", user, action, null, null);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>        } else {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          authResult = AuthResult.deny(request, "Global action denied", user, action, null, null);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>        AccessChecker.logResult(authResult);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>        if (!authResult.isAllowed()) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          return false;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        }<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      }<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    return true;<a name="line.531"></a>
-<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
-<span class="sourceLineNo">533</span><a name="line.533"></a>
-<span class="sourceLineNo">534</span>  private AuthResult permissionGranted(String request, User user, Action permRequest,<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      TableName tableName, byte[] family, byte[] qualifier) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; map = makeFamilyMap(family, qualifier);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    return permissionGranted(request, user, permRequest, tableName, map);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>  }<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>  /**<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * Check the current user for authorization to perform a specific action against the given set of<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * row data.<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * &lt;p&gt;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * Note: Ordering of the authorization checks has been carefully optimized to short-circuit the<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * most common requests and minimize the amount of processing required.<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * &lt;/p&gt;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * @param request User request<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * @param user User name<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @param permRequest the action being requested<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param tableName Table name<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param families the map of column families to qualifiers present in the request<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @return an authorization result<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public AuthResult permissionGranted(String request, User user, Action permRequest,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      TableName tableName, Map&lt;byte[], ? extends Collection&lt;?&gt;&gt; families) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    // 1. All users need read access to hbase:meta table.<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    // this is a very common operation, so deal with it quickly.<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    if (TableName.META_TABLE_NAME.equals(tableName)) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      if (permRequest == Action.READ) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>        return AuthResult.allow(request, "All users allowed", user, permRequest, tableName,<a name="line.560"></a>
-<span class="sourceLineNo">561</span>          families);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      }<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    }<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>    if (user == null) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      return AuthResult.deny(request, "No user associated with request!", null, permRequest,<a name="line.566"></a>
-<span class="sourceLineNo">567</span>        tableName, families);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>    // 2. check for the table-level, if successful we can short-circuit<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    if (getAuthManager().authorizeUserTable(user, tableName, permRequest)) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      return AuthResult.allow(request, "Table permission granted", user, permRequest, tableName,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        families);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>    // 3. check permissions against the requested families<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    if (families != null &amp;&amp; families.size() &gt; 0) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      // all families must pass<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      for (Map.Entry&lt;byte[], ? extends Collection&lt;?&gt;&gt; family : families.entrySet()) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>        // a) check for family level access<a name="line.580"></a>
-<span class="sourceLineNo">581</span>        if (getAuthManager().authorizeUserTable(user, tableName, family.getKey(), permRequest)) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          continue; // family-level permission overrides per-qualifier<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        }<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>        // b) qualifier level access can still succeed<a name="line.585"></a>
-<span class="sourceLineNo">586</span>        if ((family.getValue() != null) &amp;&amp; (family.getValue().size() &gt; 0)) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>          if (family.getValue() instanceof Set) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>            // for each qualifier of the family<a name="line.588"></a>
-<span class="sourceLineNo">589</span>            Set&lt;byte[]&gt; familySet = (Set&lt;byte[]&gt;) family.getValue();<a name="line.589"></a>
-<span class="sourceLineNo">590</span>            for (byte[] qualifier : familySet) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>              if (!getAuthManager().authorizeUserTable(user, tableName, family.getKey(), qualifier,<a name="line.591"></a>
-<span class="sourceLineNo">592</span>                permRequest)) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>                return AuthResult.deny(request, "Failed qualifier check", user, permRequest,<a name="line.593"></a>
-<span class="sourceLineNo">594</span>                  tableName, makeFamilyMap(family.getKey(), qualifier));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>              }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>            }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>          } else if (family.getValue() instanceof List) { // List&lt;Cell&gt;<a name="line.597"></a>
-<span class="sourceLineNo">598</span>            List&lt;Cell&gt; cellList = (List&lt;Cell&gt;) family.getValue();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>            for (Cell cell : cellList) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>              if (!getAuthManager().authorizeUserTable(user, tableName, family.getKey(),<a name="line.600"></a>
-<span class="sourceLineNo">601</span>                CellUtil.cloneQualifier(cell), permRequest)) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>                return AuthResult.deny(request, "Failed qualifier check", user, permRequest,<a name="line.602"></a>
-<span class="sourceLineNo">603</span>                  tableName, makeFamilyMap(family.getKey(), CellUtil.cloneQualifier(cell)));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>              }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>            }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>          }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>        } else {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>          // no qualifiers and family-level check already failed<a name="line.608"></a>
-<span class="sourceLineNo">609</span>          return AuthResult.deny(request, "Failed family check", user, permRequest, tableName,<a name="line.609"></a>
-<span class="sourceLineNo">610</span>            makeFamilyMap(family.getKey(), null));<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        }<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      }<a name="line.612"></a>
-<span class="sourceLineNo">613</span><a name="line.613"></a>
-<span class="sourceLineNo">614</span>      // all family checks passed<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      return AuthResult.allow(request, "All family checks passed", user, permRequest, tableName,<a name="line.615"></a>
-<span class="sourceLineNo">616</span>        families);<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    }<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>    // 4. no families to check and table level access failed<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    return AuthResult.deny(request, "No families to check and table permission failed", user,<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      permRequest, tableName, families);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span>  private Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; makeFamilyMap(byte[] family, byte[] qualifier) {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    if (family == null) {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      return null;<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    }<a name="line.627"></a>
-<span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>    Map&lt;byte[], Collection&lt;byte[]&gt;&gt; familyMap = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    familyMap.put(family, qualifier != null ? ImmutableSet.of(qualifier) : null);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    return familyMap;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>}<a name="line.633"></a>
+<span class="sourceLineNo">510</span>              AuthResult.allow(request, "Namespace action allowed", user, action, null, null);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>        } else {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>          authResult =<a name="line.512"></a>
+<span class="sourceLineNo">513</span>              AuthResult.deny(request, "Namespace action denied", user, action, null, null);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>        }<a name="line.514"></a>
+<span class="sourceLineNo">515</span>        AccessChecker.logResult(authResult);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>        if (!authResult.isAllowed()) {<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>      }<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    } else {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      AuthResult authResult;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      for (Permission.Action action : permission.getActions()) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>        if (getAuthManager().authorizeUserGlobal(user, action)) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>          authResult = AuthResult.allow(request, "Global action allowed", user, action, null, null);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>        } else {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>          authResult = AuthResult.deny(request, "Global action denied", user, action, null, null);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>        }<a name="line.527"></a>
+<span class="sourceLineNo">528</span>        AccessChecker.logResult(authResult);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>        if (!authResult.isAllowed()) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          return false;<a name="line.530"></a>
+<span class="sourceLineNo">531</span>        }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      }<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    return true;<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>  private AuthResult permissionGranted(String request, User user, Action permRequest,<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      TableName tableName, byte[] family, byte[] qualifier) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; map = makeFamilyMap(family, qualifier);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    return permissionGranted(request, user, permRequest, tableName, map);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>  /**<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * Check the current user for authorization to perform a specific action against the given set of<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * row data.<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   * &lt;p&gt;<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * Note: Ordering of the authorization checks has been carefully optimized to short-circuit the<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * most common requests and minimize the amount of processing required.<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * &lt;/p&gt;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @param request User request<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param user User name<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @param permRequest the action being requested<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @param tableName Table name<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @param families the map of column families to qualifiers present in the request<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * @return an authorization result<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   */<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  public AuthResult permissionGranted(String request, User user, Action permRequest,<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      TableName tableName, Map&lt;byte[], ? extends Collection&lt;?&gt;&gt; families) {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    // 1. All users need read access to hbase:meta table.<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    // this is a very common operation, so deal with it quickly.<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    if (TableName.META_TABLE_NAME.equals(tableName)) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      if (permRequest == Action.READ) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        return AuthResult.allow(request, "All users allowed", user, permRequest, tableName,<a name="line.563"></a>
+<span class="sourceLineNo">564</span>          families);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      }<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    }<a name="line.566"></a>
+<span class="sourceLineNo">567</span><a name="line.567"></a>
+<span class="sourceLineNo">568</span>    if (user == null) {<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      return AuthResult.deny(request, "No user associated with request!", null, permRequest,<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        tableName, families);<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>    // 2. check for the table-level, if successful we can short-circuit<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    if (getAuthManager().authorizeUserTable(user, tableName, permRequest)) {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      return AuthResult.allow(request, "Table permission granted", user, permRequest, tableName,<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        families);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>    // 3. check permissions against the requested families<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    if (families != null &amp;&amp; families.size() &gt; 0) {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      // all families must pass<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      for (Map.Entry&lt;byte[], ? extends Collection&lt;?&gt;&gt; family : families.entrySet()) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        // a) check for family level access<a name="line.583"></a>
+<span class="sourceLineNo">584</span>        if (getAuthManager().authorizeUserTable(user, tableName, family.getKey(), permRequest)) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>          continue; // family-level permission overrides per-qualifier<a name="line.585"></a>
+<span class="sourceLineNo">586</span>        }<a name="line.586"></a>
+<span class="sourceLineNo">587</span><a name="line.587"></a>
+<span class="sourceLineNo">588</span>        // b) qualifier level access can still succeed<a name="line.588"></a>
+<span class="sourceLineNo">589</span>        if ((family.getValue() != null) &amp;&amp; (family.getValue().size() &gt; 0)) {<a name="line.589"></a>
+<span class="sourceLineNo">590</span>          if (family.getValue() instanceof Set) {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>            // for each qualifier of the family<a name="line.591"></a>
+<span class="sourceLineNo">592</span>            Set&lt;byte[]&gt; familySet = (Set&lt;byte[]&gt;) family.getValue();<a name="line.592"></a>
+<span class="sourceLineNo">593</span>            for (byte[] qualifier : familySet) {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>              if (!getAuthManager().authorizeUserTable(user, tableName, family.getKey(), qualifier,<a name="line.594"></a>
+<span class="sourceLineNo">595</span>                permRequest)) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>                return AuthResult.deny(request, "Failed qualifier check", user, permRequest,<a name="line.596"></a>
+<span class="sourceLineNo">597</span>                  tableName, makeFamilyMap(family.getKey(), qualifier));<a name="line.597"></a>
+<span class="sourceLineNo">598</span>              }<a name="line.598"></a>
+<span class="sourceLineNo">599</span>            }<a name="line.599"></a>
+<span class="sourceLineNo">600</span>          } else if (family.getValue() instanceof List) { // List&lt;Cell&gt;<a name="line.600"></a>
+<span class="sourceLineNo">601</span>            List&lt;Cell&gt; cellList = (List&lt;Cell&gt;) family.getValue();<a name="line.601"></a>
+<span class="sourceLineNo">602</span>            for (Cell cell : cellList) {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>              if (!getAuthManager().authorizeUserTable(user, tableName, family.getKey(),<a name="line.603"></a>
+<span class="sourceLineNo">604</span>                CellUtil.cloneQualifier(cell), permRequest)) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>                return AuthResult.deny(request, "Failed qualifier check", user, permRequest,<a name="line.605"></a>
+<span class="sourceLineNo">606</span>                  tableName, makeFamilyMap(family.getKey(), CellUtil.cloneQualifier(cell)));<a name="line.606"></a>
+<span class="sourceLineNo">607</span>              }<a name="line.607"></a>
+<span class="sourceLineNo">608</span>            }<a name="line.608"></a>
+<span class="sourceLineNo">609</span>          }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        } else {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>          // no qualifiers and family-level check already failed<a name="line.611"></a>
+<span class="sourceLineNo">612</span>          return AuthResult.deny(request, "Failed family check", user, permRequest, tableName,<a name="line.612"></a>
+<span class="sourceLineNo">613</span>            makeFamilyMap(family.getKey(), null));<a name="line.613"></a>
+<span class="sourceLineNo">614</span>        }<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      }<a name="line.615"></a>
+<span class="sourceLineNo">616</span><a name="line.616"></a>
+<span class="sourceLineNo">617</span>      // all family checks passed<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      return AuthResult.allow(request, "All family checks passed", user, permRequest, tableName,<a name="line.618"></a>
+<span class="sourceLineNo">619</span>        families);<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    }<a name="line.620"></a>
+<span class="sourceLineNo">621</span><a name="line.621"></a>
+<span class="sourceLineNo">622</span>    // 4. no families to check and table level access failed<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    return AuthResult.deny(request, "No families to check and table permission failed", user,<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      permRequest, tableName, families);<a name="line.624"></a>
+<span class="sourceLineNo">625</span>  }<a name="line.625"></a>
+<span class="sourceLineNo">626</span><a name="line.626"></a>
+<span class="sourceLineNo">627</span>  private Map&lt;byte[], ? extends Collection&lt;byte[]&gt;&gt; makeFamilyMap(byte[] family, byte[] qualifier) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    if (family == null) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      return null;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    }<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span>    Map&lt;byte[], Collection&lt;byte[]&gt;&gt; familyMap = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    familyMap.put(family, qualifier != null ? ImmutableSet.of(qualifier) : null);<a name="line.633"></a>
+<span class="sourceLineNo">634</span>    return familyMap;<a name="line.634"></a>
+<span class="sourceLineNo">635</span>  }<a name="line.635"></a>
+<span class="sourceLineNo">636</span>}<a name="line.636"></a>
 
 
 
diff --git a/downloads.html b/downloads.html
index c78a53c..6b2bc08 100644
--- a/downloads.html
+++ b/downloads.html
@@ -331,7 +331,60 @@
     </tr>
   </table>
   </div>
-
+  
+<div class="section">
+<h2><a name="Connectors"></a>Connectors</h2>
+    
+<table border="0" class="table table-striped">
+    
+<tr class="a">
+      
+<th>Version</th>
+      
+<th>Release Date</th>
+      
+<th>Compatiblity Report</th>
+      
+<th>Changes</th>
+      
+<th>Release Notes</th>
+      
+<th>Download</th>
+      
+<th>Notices</th>
+    </tr>
+    
+<tr class="b">
+      
+<td style="test-align: left">
+        1.0.0
+      </td>
+      
+<td style="test-align: left">
+        2019/05/03
+      </td>
+      
+<td style="test-align: left">
+      </td>
+      
+<td style="test-align: left">
+        <a class="externalLink" href="https://github.com/apache/hbase-connectors/blob/rel/1.0.0/CHANGELOG.md">Changes</a>
+      </td>
+      
+<td style="test-align: left">
+        <a class="externalLink" href="https://github.com/apache/hbase-connectors/blob/rel/1.0.0/RELEASENOTES.md">Release Notes</a>
+      </td>
+      
+<td style="test-align: left">
+        <a class="externalLink" href="https://www.apache.org/dyn/closer.lua/hbase/hbase-connectors-1.0.0/hbase-connectors-1.0.0-src.tar.gz">src</a> (<a class="externalLink" href="https://www.apache.org/dist/hbase/hbase-connectors-1.0.0/hbase-connectors-1.0.0-src.tar.gz.sha512">sha512</a> <a class="externalLink" href="https://www.apache.org/dist/hbase/hbase-connectors-1.0.0/hbase-connectors-1.0.0-src.tar.gz.asc">asc</a>) <br />
+        <a class="externalLink" href="https://www.apache.org/dyn/closer.lua/hbase/hbase-connectors-1.0.0/hbase-connectors-1.0.0-bin.tar.gz">bin</a> (<a class="externalLink" href="https://www.apache.org/dist/hbase/hbase-connectors-1.0.0/hbase-connectors-1.0.0-bin.tar.gz.sha512">sha512</a> <a class="externalLink" href="https://www.apache.org/dist/hbase/hbase-connectors-1.0.0/hbase-connectors-1.0.0-bin.tar.gz.asc">asc</a>) <br />
+      </td>
+      
+<td>
+      </td>
+    </tr>
+    </table>
+  </div>
 
   
 <p>If you are looking for an old release that is not present here or on the
@@ -348,7 +401,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/export_control.html b/export_control.html
index b6c6846..b1467d5 100644
--- a/export_control.html
+++ b/export_control.html
@@ -187,7 +187,7 @@ for more details.</p>
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/index.html b/index.html
index 0d75098..187a8e1 100644
--- a/index.html
+++ b/index.html
@@ -269,7 +269,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/issue-management.html b/issue-management.html
index 37d697b..36cc971 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -159,7 +159,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/licenses.html b/licenses.html
index 25fbe8d..de172b5 100644
--- a/licenses.html
+++ b/licenses.html
@@ -362,7 +362,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/mailing-lists.html b/mailing-lists.html
index ad4c79d..03b5149 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -212,7 +212,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/metrics.html b/metrics.html
index 753b4df..f0c5eb9 100644
--- a/metrics.html
+++ b/metrics.html
@@ -315,7 +315,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/old_news.html b/old_news.html
index 94d62aa..5772407 100644
--- a/old_news.html
+++ b/old_news.html
@@ -296,7 +296,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugin-management.html b/plugin-management.html
index 3c86428..ad6a5c1 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -311,7 +311,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugins.html b/plugins.html
index 6a4735b..0274126 100644
--- a/plugins.html
+++ b/plugins.html
@@ -238,7 +238,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 8c2f00e..117b387 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -625,7 +625,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-info.html b/project-info.html
index 559dcb3..ed0d84b 100644
--- a/project-info.html
+++ b/project-info.html
@@ -203,7 +203,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-reports.html b/project-reports.html
index e1f8fda..f09bf75 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -176,7 +176,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 9b22af5..083dbd0 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -164,7 +164,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/replication.html b/replication.html
index b04154d..3206e83 100644
--- a/replication.html
+++ b/replication.html
@@ -159,7 +159,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/resources.html b/resources.html
index 7565b82..13c8e16 100644
--- a/resources.html
+++ b/resources.html
@@ -187,7 +187,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/scm.html b/scm.html
index 46133dd..33ac0f2 100644
--- a/scm.html
+++ b/scm.html
@@ -170,7 +170,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/sponsors.html b/sponsors.html
index 960fddd..a4ea6ae 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -189,7 +189,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/summary.html b/summary.html
index 667e406..21e2413 100644
--- a/summary.html
+++ b/summary.html
@@ -202,7 +202,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/supportingprojects.html b/supportingprojects.html
index d01c4f9..4d63d8b 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -376,7 +376,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/team.html b/team.html
index 8866396..74d600c 100644
--- a/team.html
+++ b/team.html
@@ -643,7 +643,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2019
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-08</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-09</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index e58d992..dbaa184 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1527,6 +1527,7 @@
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMemStoreLAB</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.AllocRecord.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMemStoreLAB.AllocRecord</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMemstoreLABWithoutPool</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMemStoreSegmentsIterator</a></li>
 <li><a href="org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment" target="classFrame">TestMergeTableRegionsProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestMergeTableRegionsWhileRSCrash.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestMergeTableRegionsWhileRSCrash</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestMetaAssignmentWithStopMaster.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestMetaAssignmentWithStopMaster</a></li>
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 82c09de..34501f5 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1527,6 +1527,7 @@
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreLAB</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.AllocRecord.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreLAB.AllocRecord</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemstoreLABWithoutPool</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></li>
 <li><a href="org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TestMergeTableRegionsProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestMergeTableRegionsWhileRSCrash.html" title="class in org.apache.hadoop.hbase.master">TestMergeTableRegionsWhileRSCrash</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestMetaAssignmentWithStopMaster.html" title="class in org.apache.hadoop.hbase.master">TestMetaAssignmentWithStopMaster</a></li>
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 3cdeaf6..fbb172f 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -6065,6 +6065,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemstoreLABWithoutPool</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsHeapMemoryManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegion</a></dt>
@@ -7683,6 +7685,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/MultiThreadedReaderWithACL.HBaseReaderThreadWithACL.html#closeTable--">closeTable()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/MultiThreadedReaderWithACL.HBaseReaderThreadWithACL.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedReaderWithACL.HBaseReaderThreadWithACL</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#closeTestSegments-java.util.List-">closeTestSegments(List&lt;ImmutableSegment&gt;)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/TestBackupManager.html#cluster">cluster</a></span> - Static variable in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/TestBackupManager.html" title="class in org.apache.hadoop.hbase.backup">TestBackupManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#cluster">cluster</a></span> - Static variable in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/TestBackupSystemTable.html" title="class in org.apache.hadoop.hbase.backup">TestBackupSystemTable</a></dt>
@@ -8005,6 +8009,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestWarmupRegion.html#COLUMN">COLUMN</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestWarmupRegion.html" title="class in org.apache.hadoop.hbase.master">TestWarmupRegion</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#COLUMN">COLUMN</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestSecureBulkLoadManager.html#COLUMN">COLUMN</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestSecureBulkLoadManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestSecureBulkLoadManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/TestCellModel.html#COLUMN">COLUMN</a></span> - Static variable in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/TestCellModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestCellModel</a></dt>
@@ -8324,6 +8330,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.CompactionCompletionNotifyingRegion.html#CompactionCompletionNotifyingRegion-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.wal.WAL-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.regionserver.RegionServerServices-">CompactionCompletionNotifyi [...]
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#compactionKVMax">compactionKVMax</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html#compactionLatch">compactionLatch</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.CompactionObserver.html#CompactionObserver--">CompactionObserver()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.CompactionObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionLifeCycleTracker.CompactionObserver</a></dt>
@@ -8392,6 +8400,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#comparator">comparator</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">TestNewVersionBehaviorTracker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#comparator">comparator</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellComparator.html#comparator">comparator</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellComparator.html" title="class in org.apache.hadoop.hbase">TestCellComparator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/trace/TraceTree.SpansByParent.html#COMPARATOR">COMPARATOR</a></span> - Static variable in class org.apache.hadoop.hbase.trace.<a href="org/apache/hadoop/hbase/trace/TraceTree.SpansByParent.html" title="class in org.apache.hadoop.hbase.trace">TraceTree.SpansByParent</a></dt>
@@ -11455,6 +11465,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/TestNettyIPC.html#createTestFailingRpcServer-org.apache.hadoop.hbase.Server-java.lang.String-java.util.List-java.net.InetSocketAddress-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.ipc.RpcScheduler-">createTestFailingRpcServer(Server, String, List&lt;RpcServer.BlockingServiceAndInterface&gt;, InetSocketAddress, Configuration, RpcScheduler)</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href= [...]
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#createTestImmutableSegment--">createTestImmutableSegment()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestVerifyReplicationCrossDiffHdfs.html#createTestingTable-org.apache.hadoop.hbase.client.Admin-">createTestingTable(Admin)</a></span> - Static method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestVerifyReplicationCrossDiffHdfs.html" title="class in org.apache.hadoop.hbase.replication">TestVerifyReplicationCrossDiffHdfs</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestWALMethods.html#createTestLogEntry-int-">createTestLogEntry(int)</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALMethods.html" title="class in org.apache.hadoop.hbase.wal">TestWALMethods</a></dt>
@@ -15162,6 +15174,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStore.html#family">family</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html#family">family</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiColumnScanner</a></dt>
@@ -20735,6 +20749,8 @@
 <dd>
 <div class="block">Grant permissions on a table to the given user using AccessControlClient.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#GREATER_THAN_INTEGER_MAX_VALUE_SEQ_ID">GREATER_THAN_INTEGER_MAX_VALUE_SEQ_ID</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/asyncfs/TestLocalAsyncOutput.html#GROUP">GROUP</a></span> - Static variable in class org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/TestLocalAsyncOutput.html" title="class in org.apache.hadoop.hbase.io.asyncfs">TestLocalAsyncOutput</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html#GROUP">GROUP</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></dt>
@@ -24306,6 +24322,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#length">length</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#LESS_THAN_INTEGER_MAX_VALUE_SEQ_ID">LESS_THAN_INTEGER_MAX_VALUE_SEQ_ID</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ColumnCountOnRowFilter.html#limit">limit</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnCountOnRowFilter.html" title="class in org.apache.hadoop.hbase.client">ColumnCountOnRowFilter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestOperation.html#LIMIT">LIMIT</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></dt>
@@ -34629,6 +34647,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStore.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreCompaction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut.Putter</a></dt>
@@ -36014,6 +36034,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStoreScannerClosure.html#ROOT_DIR">ROOT_DIR</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStoreScannerClosure.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScannerClosure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#ROOT_SUB_PATH">ROOT_SUB_PATH</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html#rootDir">rootDir</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotCloneIndependence</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSnapshotMetadata.html#rootDir">rootDir</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSnapshotMetadata.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotMetadata</a></dt>
@@ -39534,6 +39556,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMajorCompaction</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsHeapMemoryManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionServer</a></dt>
@@ -43086,6 +43110,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStore.html#store">store</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#store">store</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/crypto/TestKeyStoreKeyProvider.html#storeFile">storeFile</a></span> - Static variable in class org.apache.hadoop.hbase.io.crypto.<a href="org/apache/hadoop/hbase/io/crypto/TestKeyStoreKeyProvider.html" title="class in org.apache.hadoop.hbase.io.crypto">TestKeyStoreKeyProvider</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/compactions/StoreFileListGenerator.html" title="class in org.apache.hadoop.hbase.regionserver.compactions"><span class="typeNameLink">StoreFileListGenerator</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/compactions/package-summary.html">org.apache.hadoop.hbase.regionserver.compactions</a></dt>
@@ -43708,6 +43734,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStore.html#table">table</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#TABLE">TABLE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html#table">table</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestNotCleanupCompactedFileWhenRegionWarmup.html#table">table</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestNotCleanupCompactedFileWhenRegionWarmup.html" title="class in org.apache.hadoop.hbase.regionserver">TestNotCleanupCompactedFileWhenRegionWarmup</a></dt>
@@ -45194,6 +45222,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreChunkPool</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMinorCompaction.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMinorCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMinorCompaction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreCompaction</a></dt>
@@ -58057,6 +58087,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html#TestMemStoreChunkPool--">TestMemStoreChunkPool()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreChunkPool</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#testMemStoreCompactorSegmentsIteratorNext--">testMemStoreCompactorSegmentsIteratorNext()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#testMemstoreConcurrentControl--">testMemstoreConcurrentControl()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultMemStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#testMemstoreDeletesVisibilityWithSameKey--">testMemstoreDeletesVisibilityWithSameKey()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultMemStore</a></dt>
@@ -58079,6 +58111,15 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html#TestMemstoreLABWithoutPool--">TestMemstoreLABWithoutPool()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemstoreLABWithoutPool</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#testMemStoreMergerSegmentsIteratorNext--">testMemStoreMergerSegmentsIteratorNext()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMemStoreSegmentsIterator</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>
+<div class="block">Test the <code>MemStoreCompactorSegmentsIterator</code> and <code>MemStoreMergerSegmentsIterator</code>
+ class, Test for bug : HBASE-22324</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#TestMemStoreSegmentsIterator--">TestMemStoreSegmentsIterator()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.RegionServerAccountingStub.html#testMemstoreSize">testMemstoreSize</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.RegionServerAccountingStub.html" title="class in org.apache.hadoop.hbase.regionserver">TestHeapMemoryManager.RegionServerAccountingStub</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html#testMemstoreSizeAccountingWithFailedPostBatchMutate--">testMemstoreSizeAccountingWithFailedPostBatchMutate()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></dt>
@@ -72904,6 +72945,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#verifyNamespaces--">verifyNamespaces()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html" title="class in org.apache.hadoop.hbase">IntegrationTestDDLMasterFailover</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#verifyNext-org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator-">verifyNext(MemStoreSegmentsIterator)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestSyncReplicationActive.html#verifyNoClusterIdInRemoteLog-org.apache.hadoop.hbase.HBaseTestingUtility-org.apache.hadoop.fs.Path-java.lang.String-">verifyNoClusterIdInRemoteLog(HBaseTestingUtility, Path, String)</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestSyncReplicationActive.html" title="class in org.apache.hadoop.hbase.replication">TestSy [...]
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/TestStripeCompactionPolicy.html#verifyNoCompaction-org.apache.hadoop.hbase.regionserver.compactions.StripeCompactionPolicy-org.apache.hadoop.hbase.regionserver.compactions.StripeCompactionPolicy.StripeInformationProvider-">verifyNoCompaction(StripeCompactionPolicy, StripeCompactionPolicy.StripeInformationProvider)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href [...]
@@ -73809,6 +73852,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure/TestZKProcedure.html#WAKE_FREQUENCY">WAKE_FREQUENCY</a></span> - Static variable in class org.apache.hadoop.hbase.procedure.<a href="org/apache/hadoop/hbase/procedure/TestZKProcedure.html" title="class in org.apache.hadoop.hbase.procedure">TestZKProcedure</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#wal">wal</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.Appender.html#wal">wal</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.Appender.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestLogRollingNoCluster.Appender</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestForceUpdateProcedure.html#WAL_COUNT">WAL_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestForceUpdateProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestForceUpdateProcedure</a></dt>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index 00725a2..b124e8c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -5065,338 +5065,342 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMemStoreSegmentsIterator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestDefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerNoMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRowPrefixBloomFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerNoMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannerWithBulkload.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRowPrefixBloomFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestDefaultStoreEngine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerWithBulkload.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDefaultStoreEngine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSplitTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSplitTransactionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMiniBatchOperationInProgress.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestStoreFileScannerWithTagCompression.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMiniBatchOperationInProgress.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannerWithCorruptHFile.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStoreFileScannerWithTagCompression.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestNotCleanupCompactedFileWhenRegionWarmup.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestNotCleanupCompactedFileWhenRegionWarmup.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerWithCorruptHFile.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestNotCleanupCompactedFileWhenRegionWarmup.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestNotCleanupCompactedFileWhenRegionWarmup.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestEndToEndSplitTransaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannerHeartbeatMessages.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEndToEndSplitTransaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIsDeleteFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerHeartbeatMessages.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestStoreFileRefresherChore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIsDeleteFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionMove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStoreFileRefresherChore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionMove.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSwitchToStreamRead.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestKeepDeletes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeepDeletes.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSwitchToStreamRead.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestResettingCounters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestKeepDeletes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeepDeletes.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCacheOnWriteInSchema.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResettingCounters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCleanupCompactedFileAfterFailover.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileAfterFailover.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCacheOnWriteInSchema.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFSErrorsExposed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCleanupCompactedFileAfterFailover.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileAfterFailover.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsTableLatencies.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableLatencies.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFSErrorsExposed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCellFlatSet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsTableLatencies.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableLatencies.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSettingTimeoutOnBlockingPoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCellFlatSet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHRegionReplayEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSettingTimeoutOnBlockingPoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsTableAggregate.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionReplayEvents.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestParallelPut.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsTableAggregate.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithModifyTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestParallelPut.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestStoreScannerClosure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScannerClosure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithModifyTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStoreScannerClosure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScannerClosure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionReplicasAreDistributed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRemoveRegionMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionReplicasAreDistributed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactingToCellFlatMapMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRemoveRegionMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRecoveredEdits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactingToCellFlatMapMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHRegionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRecoveredEdits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionOnCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSplitLogWorker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsHeapMemoryManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSplitLogWorker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsHeapMemoryManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestServerNonceManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSyncTimeRangeTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestServerNonceManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestEncryptionRandomKeying.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSyncTimeRangeTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestPerColumnFamilyFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEncryptionRandomKeying.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSeekOptimizations.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestPerColumnFamilyFlush.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReversibleScanners.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSeekOptimizations.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerOnlineConfigChange.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReversibleScanners.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMasterAddressTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerOnlineConfigChange.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestGetClosestAtOrBefore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterAddressTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMinVersions.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinVersions.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestGetClosestAtOrBefore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMemStoreChunkPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMinVersions.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinVersions.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAtomicOperation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMemStoreChunkPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactionArchiveIOException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAtomicOperation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHdfsSnapshotHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionArchiveIOException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactionLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHdfsSnapshotHRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestClearRegionBlockCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionSplitPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClearRegionBlockCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSecureBulkLoadManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSecureBulkLoadManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionSplitPolicy.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicyOverflow.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSecureBulkLoadManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSecureBulkLoadManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRSKilledWhenInitializing.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestDateTieredCompactionPolicyOverflow.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerAccounting.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRSKilledWhenInitializing.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactionWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerAccounting.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactionInDeadRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannerRetriableFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionInDeadRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerReadRequestMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerRetriableFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTimestampFilterSeekHint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerReadRequestMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCleanupCompactedFileOnRegionClose.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTimestampFilterSeekHint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMemstoreLABWithoutPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCleanupCompactedFileOnRegionClose.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMultiVersionConcurrencyControl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMemstoreLABWithoutPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScanWithBloomError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultiVersionConcurrencyControl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRSStatusServlet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScanWithBloomError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestClusterId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRSStatusServlet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestStripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClusterId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetricsRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithRestartScenarios.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestWideScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithRestartScenarios.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestEncryptionKeyRotation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestWideScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompactionTool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionTool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEncryptionKeyRotation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestCompactionTool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionTool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestServerCustomProtocol.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index a48d918..2e20656 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -579,15 +579,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<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/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/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/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/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>
+<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/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/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/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/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/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/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
index b2cf5a6..8e8d54b 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="https://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.procedure.Procedure (implements java.util.concurrent.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;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.procedure2.Procedure&lt;TEnvironment&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)
+<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="https://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.ProcedureManager
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 2877c60..e82df6d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -241,10 +241,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureBypass.StuckStateMachineState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureBypass.StuckStateMachineState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureBypass.StuckStateMachineState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureBypass.StuckStateMachineState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html
new file mode 100644
index 0000000..eec4b4a
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html
@@ -0,0 +1,551 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestMemStoreSegmentsIterator (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestMemStoreSegmentsIterator (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestMemStoreSegmentsIterator.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" target="_top">Frames</a></li>
+<li><a href="TestMemStoreSegmentsIterator.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.regionserver</div>
+<h2 title="Class TestMemStoreSegmentsIterator" class="title">Class TestMemStoreSegmentsIterator</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.TestMemStoreSegmentsIterator</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.55">TestMemStoreSegmentsIterator</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<div class="block">Test the <code>MemStoreCompactorSegmentsIterator</code> and <code>MemStoreMergerSegmentsIterator</code>
+ class, Test for bug : HBASE-22324</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#COLUMN">COLUMN</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#compactionKVMax">compactionKVMax</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.CellComparator</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#comparator">comparator</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#FAMILY">FAMILY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected static long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#GREATER_THAN_INTEGER_MAX_VALUE_SEQ_ID">GREATER_THAN_INTEGER_MAX_VALUE_SEQ_ID</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected static long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#LESS_THAN_INTEGER_MAX_VALUE_SEQ_ID">LESS_THAN_INTEGER_MAX_VALUE_SEQ_ID</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.regionserver.HRegion</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#region">region</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#ROOT_SUB_PATH">ROOT_SUB_PATH</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.regionserver.HStore</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#store">store</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#TABLE">TABLE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.wal.WAL</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#wal">wal</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#TestMemStoreSegmentsIterator--">TestMemStoreSegmentsIterator</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#closeTestSegments-java.util.List-">closeTestSegments</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.ImmutableSegment&gt;&nbsp;segments)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.regionserver.ImmutableSegment</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#createTestImmutableSegment--">createTestImmutableSegment</a></span>()</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/regionserver/TestMemStoreSegmentsIterator.html#setup--">setup</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#tearDown--">tearDown</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#testMemStoreCompactorSegmentsIteratorNext--">testMemStoreCompactorSegmentsIteratorNext</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#testMemStoreMergerSegmentsIteratorNext--">testMemStoreMergerSegmentsIteratorNext</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#verifyNext-org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator-">verifyNext</a></span>(org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator&nbsp;iterator)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="htt [...]
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.58">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="TABLE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TABLE</h4>
+<pre>protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.61">TABLE</a></pre>
+</li>
+</ul>
+<a name="FAMILY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FAMILY</h4>
+<pre>protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.62">FAMILY</a></pre>
+</li>
+</ul>
+<a name="COLUMN">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COLUMN</h4>
+<pre>protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.63">COLUMN</a></pre>
+</li>
+</ul>
+<a name="ROOT_SUB_PATH">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ROOT_SUB_PATH</h4>
+<pre>protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.64">ROOT_SUB_PATH</a></pre>
+</li>
+</ul>
+<a name="LESS_THAN_INTEGER_MAX_VALUE_SEQ_ID">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LESS_THAN_INTEGER_MAX_VALUE_SEQ_ID</h4>
+<pre>protected static&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.65">LESS_THAN_INTEGER_MAX_VALUE_SEQ_ID</a></pre>
+</li>
+</ul>
+<a name="GREATER_THAN_INTEGER_MAX_VALUE_SEQ_ID">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>GREATER_THAN_INTEGER_MAX_VALUE_SEQ_ID</h4>
+<pre>protected static&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.66">GREATER_THAN_INTEGER_MAX_VALUE_SEQ_ID</a></pre>
+</li>
+</ul>
+<a name="comparator">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>comparator</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.CellComparator <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.68">comparator</a></pre>
+</li>
+</ul>
+<a name="compactionKVMax">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>compactionKVMax</h4>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.69">compactionKVMax</a></pre>
+</li>
+</ul>
+<a name="wal">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>wal</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.wal.WAL <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.70">wal</a></pre>
+</li>
+</ul>
+<a name="region">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>region</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.71">region</a></pre>
+</li>
+</ul>
+<a name="store">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>store</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.HStore <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.72">store</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestMemStoreSegmentsIterator--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestMemStoreSegmentsIterator</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.55">TestMemStoreSegmentsIterator</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setup--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setup</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.75">setup</a>()
+           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testMemStoreCompactorSegmentsIteratorNext--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testMemStoreCompactorSegmentsIteratorNext</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.91">testMemStoreCompactorSegmentsIteratorNext</a>()
+                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testMemStoreMergerSegmentsIteratorNext--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testMemStoreMergerSegmentsIteratorNext</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.100">testMemStoreMergerSegmentsIteratorNext</a>()
+                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="createTestImmutableSegment--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createTestImmutableSegment</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.ImmutableSegment&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.108">createTestImmutableSegment</a>()</pre>
+</li>
+</ul>
+<a name="closeTestSegments-java.util.List-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>closeTestSegments</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.126">closeTestSegments</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.regionserver.ImmutableSegment&gt;&nbsp;segments)</pre>
+</li>
+</ul>
+<a name="verifyNext-org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>verifyNext</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.132">verifyNext</a>(org.apache.hadoop.hbase.regionserver.MemStoreSegmentsIterator&nbsp;iterator)</pre>
+</li>
+</ul>
+<a name="tearDown--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>tearDown</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html#line.145">tearDown</a>()
+              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestMemStoreSegmentsIterator.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" target="_top">Frames</a></li>
+<li><a href="TestMemStoreSegmentsIterator.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html
index 1ac95a3..08136ec 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.AllocRecord.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" target="_top">Frames</a></li>
@@ -376,7 +376,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.AllocRecord.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" target="_top">Frames</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html
index ed59e36..1a02666 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -341,7 +341,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestMemStoreSegmentsIterator.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestMemStoreSegmentsIterator.html
new file mode 100644
index 0000000..1b1b0dd
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestMemStoreSegmentsIterator.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.regionserver.TestMemStoreSegmentsIterator (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.regionserver.TestMemStoreSegmentsIterator (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/class-use/TestMemStoreSegmentsIterator.html" target="_top">Frames</a></li>
+<li><a href="TestMemStoreSegmentsIterator.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.regionserver.TestMemStoreSegmentsIterator" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.TestMemStoreSegmentsIterator</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.regionserver.TestMemStoreSegmentsIterator</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/class-use/TestMemStoreSegmentsIterator.html" target="_top">Frames</a></li>
+<li><a href="TestMemStoreSegmentsIterator.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
index 62df237..2a41bd8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -150,6 +150,7 @@
 <li><a href="TestMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMemStoreLAB</a></li>
 <li><a href="TestMemStoreLAB.AllocRecord.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMemStoreLAB.AllocRecord</a></li>
 <li><a href="TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMemstoreLABWithoutPool</a></li>
+<li><a href="TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMemStoreSegmentsIterator</a></li>
 <li><a href="TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMetricsHeapMemoryManager</a></li>
 <li><a href="TestMetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMetricsRegion</a></li>
 <li><a href="TestMetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMetricsRegionServer</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
index d08ee93..529f60d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -764,197 +764,204 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreSegmentsIterator</a></td>
+<td class="colLast">
+<div class="block">Test the <code>MemStoreCompactorSegmentsIterator</code> and <code>MemStoreMergerSegmentsIterator</code>
+ class, Test for bug : HBASE-22324</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsHeapMemoryManager</a></td>
 <td class="colLast">
 <div class="block">Unit test version of rs metrics tests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionServer</a></td>
 <td class="colLast">
 <div class="block">Unit test version of rs metrics tests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServerSourceFactory.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionServerSourceFactory</a></td>
 <td class="colLast">
 <div class="block">Test for the CompatibilitySingletonFactory and building MetricsRegionServerSource</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServerSourceImpl.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionServerSourceImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionSourceImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.RegionWrapperStub.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionSourceImpl.RegionWrapperStub</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsTableAggregate</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableLatencies.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsTableLatencies</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsTableSourceImpl</a></td>
 <td class="colLast">
 <div class="block">Test for MetricsTableSourceImpl</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">TestMiniBatchOperationInProgress</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinorCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMinorCompaction</a></td>
 <td class="colLast">
 <div class="block">Test minor compactions</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinVersions.html" title="class in org.apache.hadoop.hbase.regionserver">TestMinVersions</a></td>
 <td class="colLast">
 <div class="block">Test Minimum Versions feature (HBASE-4071).</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreCompaction</a></td>
 <td class="colLast">
 <div class="block">Test mob store compaction</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiColumnScanner</a></td>
 <td class="colLast">
 <div class="block">Tests optimized scanning of multiple columns.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithAlgoGZAndNoDataEncoding.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiColumnScannerWithAlgoGZAndNoDataEncoding</a></td>
 <td class="colLast">
 <div class="block">Test case for Compression.Algorithm.GZ and no use data block encoding.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithAlgoGZAndUseDataEncoding.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiColumnScannerWithAlgoGZAndUseDataEncoding</a></td>
 <td class="colLast">
 <div class="block">Test case for Compression.Algorithm.GZ and use data block encoding.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithNoneAndNoDataEncoding.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiColumnScannerWithNoneAndNoDataEncoding</a></td>
 <td class="colLast">
 <div class="block">Test case for Compression.Algorithm.NONE and no use data block encoding.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScannerWithNoneAndUseDataEncoding.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiColumnScannerWithNoneAndUseDataEncoding</a></td>
 <td class="colLast">
 <div class="block">Test case for Compression.Algorithm.NONE and no use data block encoding.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiLogThreshold</a></td>
 <td class="colLast">
 <div class="block">Tests logging of large batch commands via Multi.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiVersionConcurrencyControl</a></td>
 <td class="colLast">
 <div class="block">This is a hammer test that verifies MultiVersionConcurrencyControl in a
  multiple writer single reader scenario.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.Writer.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiVersionConcurrencyControl.Writer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControlBasic.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiVersionConcurrencyControlBasic</a></td>
 <td class="colLast">
 <div class="block">Very basic tests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMutateRowsRecovery.html" title="class in org.apache.hadoop.hbase.regionserver">TestMutateRowsRecovery</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestNewVersionBehaviorFromClientSide.html" title="class in org.apache.hadoop.hbase.regionserver">TestNewVersionBehaviorFromClientSide</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestNotCleanupCompactedFileWhenRegionWarmup.html" title="class in org.apache.hadoop.hbase.regionserver">TestNotCleanupCompactedFileWhenRegionWarmup</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html" title="class in org.apache.hadoop.hbase.regionserver">TestObservedExceptionsInBatch</a></td>
 <td class="colLast">
 <div class="block">Test class for <code>HRegion.ObservedExceptionsInBatch</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html" title="class in org.apache.hadoop.hbase.regionserver">TestOpenSeqNumUnexpectedIncrease</a></td>
 <td class="colLast">
 <div class="block">Testcase for HBASE-20242</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestOpenSeqNumUnexpectedIncrease.MockHRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut</a></td>
 <td class="colLast">
 <div class="block">Testing of multiPut in parallel.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut.Putter</a></td>
 <td class="colLast">
 <div class="block">A thread that makes a few put calls</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestPerColumnFamilyFlush</a></td>
 <td class="colLast">
 <div class="block">This test verifies the correctness of the Per Column Family flushing strategy</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html" title="class in org.apache.hadoop.hbase.regionserver">TestPriorityRpc</a></td>
 <td class="colLast">
 <div class="block">Tests that verify certain RPCs get a higher QoS.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestQosFunction.html" title="class in org.apache.hadoop.hbase.regionserver">TestQosFunction</a></td>
 <td class="colLast">
 <div class="block">Basic test that qos function is sort of working; i.e.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEdits</a></td>
 <td class="colLast">
 <div class="block">Tests around replay of recovered.edits content.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></td>
 <td class="colLast">
 <div class="block">HBASE-21031
@@ -962,466 +969,466 @@
  And if MSLAB is used, all chunk is released too.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionFavoredNodes</a></td>
 <td class="colLast">
 <div class="block">Tests the ability to specify favored nodes for a region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></td>
 <td class="colLast">
 <div class="block">Increments with some concurrency against a region to ensure we get the right answer.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></td>
 <td class="colLast">
 <div class="block">Increments a random row's Cell <code>count</code> times.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></td>
 <td class="colLast">
 <div class="block">Increments a single cell a bunch of times.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfoBuilder.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionInfoBuilder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster.MyMaster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMove</a></td>
 <td class="colLast">
 <div class="block">Test move fails when table disabled</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionOpen.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionOpen</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicaFailover</a></td>
 <td class="colLast">
 <div class="block">Tests failover of secondary region replicas.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicas.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicas</a></td>
 <td class="colLast">
 <div class="block">Tests for region replicas.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicasAreDistributed</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithModifyTable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithRestartScenarios</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbort</a></td>
 <td class="colLast">
 <div class="block">Tests around regionserver shutdown and abort</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.ErrorThrowingHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbort.ErrorThrowingHRegion</a></td>
 <td class="colLast">
 <div class="block">Throws an exception during store file refresh in order to trigger a regionserver abort.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.StopBlockingRegionObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbort.StopBlockingRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbortTimeout.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbortTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbortTimeout.SleepWhenCloseCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbortTimeout.SleepWhenCloseCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbortTimeout.TestAbortTimeoutTask.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbortTimeout.TestAbortTimeoutTask</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAccounting</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerCrashDisableWAL</a></td>
 <td class="colLast">
 <div class="block">Testcase for HBASE-20742</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerHostname</a></td>
 <td class="colLast">
 <div class="block">Tests for the hostname specification by region server</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerNoMaster</a></td>
 <td class="colLast">
 <div class="block">Tests on the region server, without the master.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerOnlineConfigChange</a></td>
 <td class="colLast">
 <div class="block">Verify that the Online config Changes on the HRegionServer side are actually
  happening.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReadRequestMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.ScanRegionCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReadRequestMetrics.ScanRegionCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerRegionSpaceUseReport.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerRegionSpaceUseReport</a></td>
 <td class="colLast">
 <div class="block">Test class for isolated (non-cluster) tests surrounding the report
  of Region space use to the Master by RegionServers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.LogCapturer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty.LogCapturer</a></td>
 <td class="colLast">
 <div class="block">LogCapturer is similar to <code>GenericTestUtils.LogCapturer</code>
  except that this implementation has a default appender to the root logger.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty.MyRegionServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.NeverInitializedMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty.NeverInitializedMaster</a></td>
 <td class="colLast">
 <div class="block">This test HMaster class will always throw ServerNotRunningYetException if checked.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionSplitPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRemoveRegionMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class in org.apache.hadoop.hbase.regionserver">TestResettingCounters</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></td>
 <td class="colLast">
 <div class="block">Test cases against ReversibleKeyValueScanner</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowPrefixBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowPrefixBloomFilter</a></td>
 <td class="colLast">
 <div class="block">Test TestRowPrefixBloomFilter</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowTooBig</a></td>
 <td class="colLast">
 <div class="block">Test case to check HRS throws <code>RowTooBigException</code>
  when row size exceeds configured limits.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver">TestRpcSchedulerFactory</a></td>
 <td class="colLast">
 <div class="block">A silly test that does nothing but make sure an rpcscheduler factory makes what it says
  it is going to make.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing</a></td>
 <td class="colLast">
 <div class="block">Tests that a regionserver that dies after reporting for duty gets removed
  from list of online regions.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.RegisterAndDieRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing.RegisterAndDieRegionServer</a></td>
 <td class="colLast">
 <div class="block">A RegionServer that reports for duty and then immediately dies if it is the first to receive
  the response to a reportForDuty.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSStatusServlet</a></td>
 <td class="colLast">
 <div class="block">Tests for the region server status page and its template.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></td>
 <td class="colLast">
 <div class="block">Test of a long-lived scanner validating as we go.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages</a></td>
 <td class="colLast">
 <div class="block">Here we test to make sure that scans return the expected Results when the server is sending the
  Client heartbeat messages.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatHRegion</a></td>
 <td class="colLast">
 <div class="block">Custom HRegion class that instantiates <code>RegionScanner</code>s with configurable sleep times
  between fetches of row Results and/or column family cells.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatHRegionServer</a></td>
 <td class="colLast">
 <div class="block">Custom HRegionServer instance that instantiates <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRPCServices.html" title="class in org.apache.hadoop.hbase.regionserver"><code>TestScannerHeartbeatMessages.HeartbeatRPCServices</code></a> in place of
  <code>RSRpcServices</code> to allow us to toggle support for heartbeat messages</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatKVHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatKVHeap</a></td>
 <td class="colLast">
 <div class="block">Custom KV Heap that can be configured to sleep/wait in between retrievals of column family
  cells.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRegionScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatRegionScanner</a></td>
 <td class="colLast">
 <div class="block">Custom RegionScanner that can be configured to sleep between retrievals of row Results and/or
  column family cells</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatReversedKVHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatReversedKVHeap</a></td>
 <td class="colLast">
 <div class="block">Custom reversed KV Heap that can be configured to sleep in between retrievals of column family
  cells.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatReversedRegionScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatReversedRegionScanner</a></td>
 <td class="colLast">
 <div class="block">Custom ReversedRegionScanner that can be configured to sleep between retrievals of row Results
  and/or column family cells</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRPCServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatRPCServices</a></td>
 <td class="colLast">
 <div class="block">Custom RSRpcServices instance that allows heartbeat support to be toggled</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.SparseCellFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.SparseCellFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.SparseRowFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.SparseRowFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.FaultyScannerObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure.FaultyScannerObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithBulkload</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithCorruptHFile</a></td>
 <td class="colLast">
 <div class="block">Tests a scanner on a corrupt hfile.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.CorruptHFileCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithCorruptHFile.CorruptHFileCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></td>
 <td class="colLast">
 <div class="block">Test a multi-column scanner when there is a Bloom filter false-positive.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSCVFWithMiniCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSCVFWithMiniCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSecureBulkLoadManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestSecureBulkLoadManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html" title="class in org.apache.hadoop.hbase.regionserver">TestSeekOptimizations</a></td>
 <td class="colLast">
 <div class="block">Test various seek optimizations for correctness and check if they are
  actually saving I/O operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.PingHandler.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol.PingHandler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.TestRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager.TestRunnable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html" title="class in org.apache.hadoop.hbase.regionserver">TestSettingTimeoutOnBlockingPoint</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestSettingTimeoutOnBlockingPoint.SleepCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html" title="class in org.apache.hadoop.hbase.regionserver">TestShutdownWhileWALBroken</a></td>
 <td class="colLast">
 <div class="block">See HBASE-19929 for more details.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.MyRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestShutdownWhileWALBroken.MyRegionServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSimpleTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSimpleTimeRangeTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitLogWorker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.DummyServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitLogWorker.DummyServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster</a></td>
 <td class="colLast">
 <div class="block">The below tests are testing split region against a running cluster</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.CustomSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.CustomSplitPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.FailingSplitMasterObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.FailingSplitMasterObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMaster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMasterRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitWalDataLoss.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitWalDataLoss</a></td>
 <td class="colLast">
 <div class="block">Testcase for https://issues.apache.org/jira/browse/HBASE-13811</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileInfo</a></td>
 <td class="colLast">
 <div class="block">Test HStoreFile</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.FailingHRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.FailingHRegionFileSystem</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.StaleStorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.StaleStorefileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileScannerWithTagCompression</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellGridStoreScanner</a></td>
 <td class="colLast">
 <div class="block">A StoreScanner for our CELL_GRID above.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellWithVersionsStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.KeyValueHeapWithCount.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.KeyValueHeapWithCount</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScannerClosure.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScannerClosure</a></td>
 <td class="colLast">
 <div class="block">This test tests whether parallel <code>StoreScanner.close()</code> and
@@ -1429,100 +1436,100 @@
  that there are no references on the existing Storescanner readers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScannerClosure.ExtendedStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScannerClosure.ExtendedStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.TestStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine.TestStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreFileManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowCellNextColFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowCellNextColFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowCellNextRowFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowCellNextRowFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowFilterRowFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowFilterRowFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowKeyFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowKeyFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.RandomTestData.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker.RandomTestData</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.TrtUpdateRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker.TrtUpdateRunnable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags</a></td>
 <td class="colLast">
 <div class="block">Class that test tags</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags.TestCoprocessorForTags</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html" title="class in org.apache.hadoop.hbase.regionserver">TestTimestampFilterSeekHint</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestWalAndCompactingMemStoreFlush</a></td>
 <td class="colLast">
 <div class="block">This test verifies the correctness of the Per Column Family flushing strategy
  when part of the memstores are compacted memstores</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup</a></td>
 <td class="colLast">
 <div class="block">Testing for lock up of FSHLog.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DodgyFSLog.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DodgyFSLog</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DummyServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DummyWALActionsListener</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALMonotonicallyIncreasingSeqId</a></td>
 <td class="colLast">
 <div class="block">Test for HBASE-17471.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestWideScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 2570a62..f7ae50b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -508,6 +508,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMemStoreLAB</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.AllocRecord.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMemStoreLAB.AllocRecord</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMemstoreLABWithoutPool</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMemStoreSegmentsIterator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMetricsHeapMemoryManager</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMetricsRegion</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMetricsRegionServer</span></a></li>
@@ -707,10 +708,10 @@
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <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/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/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/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/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/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/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index b22b911..bc90752 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,10 +253,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<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/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.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/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/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 1917265..05f489b 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -3279,6 +3279,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMemStoreLAB</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.AllocRecord.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMemStoreLAB.AllocRecord</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMemstoreLABWithoutPool</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMemStoreSegmentsIterator</span></a></li>
 <li type="circle">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"><span class="typeNameLink">TestMergeTableRegionsProcedure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMergeTableRegionsWhileRSCrash.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestMergeTableRegionsWhileRSCrash</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMetaAssignmentWithStopMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestMetaAssignmentWithStopMaster</span></a></li>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestMemStoreSegmentsIterator.html
new file mode 100644
... 240 lines suppressed ...