hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From git-site-r...@apache.org
Subject [hbase-site] branch asf-site updated: Published site at 90007b7e803e4d96207cdf228cd7a8afc9e62238.
Date Mon, 04 Nov 2019 14:44:47 GMT
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 d323e3e  Published site at 90007b7e803e4d96207cdf228cd7a8afc9e62238.
d323e3e is described below

commit d323e3e479a762a224132396ccf8347d20e50683
Author: jenkins <builds@apache.org>
AuthorDate: Mon Nov 4 14:44:37 2019 +0000

    Published site at 90007b7e803e4d96207cdf228cd7a8afc9e62238.
---
 acid-semantics.html                                |   2 +-
 apache_hbase_reference_guide.pdf                   |   4 +-
 book.html                                          |   2 +-
 bulk-loads.html                                    |   2 +-
 checkstyle-aggregate.html                          |   2 +-
 coc.html                                           |   2 +-
 dependencies.html                                  |   2 +-
 dependency-convergence.html                        |   2 +-
 dependency-info.html                               |   2 +-
 dependency-management.html                         |   2 +-
 devapidocs/constant-values.html                    |   4 +-
 .../src-html/org/apache/hadoop/hbase/Version.html  |   4 +-
 downloads.html                                     |   2 +-
 export_control.html                                |   2 +-
 index.html                                         |   2 +-
 issue-tracking.html                                |   2 +-
 mail-lists.html                                    |   2 +-
 metrics.html                                       |   2 +-
 old_news.html                                      |   2 +-
 plugin-management.html                             |   2 +-
 plugins.html                                       |   2 +-
 poweredbyhbase.html                                |   2 +-
 project-info.html                                  |   2 +-
 project-reports.html                               |   2 +-
 project-summary.html                               |   2 +-
 pseudo-distributed.html                            |   2 +-
 replication.html                                   |   2 +-
 resources.html                                     |   2 +-
 source-repository.html                             |   2 +-
 sponsors.html                                      |   2 +-
 supportingprojects.html                            |   2 +-
 team-list.html                                     |   2 +-
 .../TestExecutorService.TestEventHandler.html      |  10 +-
 .../hadoop/hbase/executor/TestExecutorService.html |  16 +-
 .../TestExecutorService.TestEventHandler.html      | 449 +++++++++++----------
 .../hadoop/hbase/executor/TestExecutorService.html | 449 +++++++++++----------
 36 files changed, 502 insertions(+), 492 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 4077bbd..2365f2d 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -443,7 +443,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 4eda8d7..5eb91d5 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:20191103144148+00'00')
-/CreationDate (D:20191103144148+00'00')
+/ModDate (D:20191104144131+00'00')
+/CreationDate (D:20191104144131+00'00')
 >>
 endobj
 2 0 obj
diff --git a/book.html b/book.html
index 955382d..64178f4 100644
--- a/book.html
+++ b/book.html
@@ -43890,7 +43890,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-11-03 14:31:55 UTC
+Last updated 2019-11-04 14:30:03 UTC
 </div>
 </div>
 </body>
diff --git a/bulk-loads.html b/bulk-loads.html
index 72b1b9b..93ef804 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -148,7 +148,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 df01513..5617be5 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -92276,7 +92276,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/coc.html b/coc.html
index bfd09cd..4d2b2e2 100644
--- a/coc.html
+++ b/coc.html
@@ -217,7 +217,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 c14a1e8..57ecd67 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -289,7 +289,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 b060210..4216f07 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -534,7 +534,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 a385a75..107e09d 100644
--- a/dependency-info.html
+++ b/dependency-info.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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 d8b6c53..8e3521a 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -898,7 +898,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 38a7b83..f767776 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -4053,14 +4053,14 @@
 <!--   -->
 </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>"Sun Nov  3 14:37:41 UTC 2019"</code></td>
+<td class="colLast"><code>"Mon Nov  4 14:37:14 UTC 2019"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="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#revision">revision</a></code></td>
-<td class="colLast"><code>"3ccfd50bd937571aeed3033561b7ca52c967f105"</code></td>
+<td class="colLast"><code>"90007b7e803e4d96207cdf228cd7a8afc9e62238"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index 1268dbd..facf01e 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>  justification="Intentional; to be modified in test")<a name="line.10"></a>
 <span class="sourceLineNo">011</span>public class Version {<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String version = new String("3.0.0-SNAPSHOT");<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String revision = "3ccfd50bd937571aeed3033561b7ca52c967f105";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String revision = "90007b7e803e4d96207cdf228cd7a8afc9e62238";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String user = "jenkins";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String date = "Sun Nov  3 14:37:41 UTC 2019";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String date = "Mon Nov  4 14:37:14 UTC 2019";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>  public static final String url = "git://jenkins-websites-he-de.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.16"></a>
 <span class="sourceLineNo">017</span>  public static final String srcChecksum = "(stdin)=";<a name="line.17"></a>
 <span class="sourceLineNo">018</span>}<a name="line.18"></a>
diff --git a/downloads.html b/downloads.html
index 4a176964..49d4630 100644
--- a/downloads.html
+++ b/downloads.html
@@ -411,7 +411,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 64fd9b8..8dddd4a 100644
--- a/export_control.html
+++ b/export_control.html
@@ -173,7 +173,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 2fad925..17a0770 100644
--- a/index.html
+++ b/index.html
@@ -251,7 +251,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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-tracking.html b/issue-tracking.html
index 0fc4c6f..cd78adf 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -145,7 +145,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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/mail-lists.html b/mail-lists.html
index 7adbfa7..4185cb4 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -198,7 +198,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 ed4ed56..5c7c601 100644
--- a/metrics.html
+++ b/metrics.html
@@ -301,7 +301,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 ceaf94e..af0e0ab 100644
--- a/old_news.html
+++ b/old_news.html
@@ -292,7 +292,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 63b328a..d96cd0c 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -297,7 +297,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 933a19b..df09dae 100644
--- a/plugins.html
+++ b/plugins.html
@@ -224,7 +224,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 fc9edf5..852ceb9 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -611,7 +611,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 879fb66..4548d3d 100644
--- a/project-info.html
+++ b/project-info.html
@@ -186,7 +186,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 595c665..acdc434 100644
--- a/project-reports.html
+++ b/project-reports.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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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-summary.html b/project-summary.html
index 0ad04d5..8cb8503 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -188,7 +188,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 2d35594..6ec17af 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -150,7 +150,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 3dc24c5..2e9244b 100644
--- a/replication.html
+++ b/replication.html
@@ -145,7 +145,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 509c38a..d44d4a5 100644
--- a/resources.html
+++ b/resources.html
@@ -173,7 +173,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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/source-repository.html b/source-repository.html
index 0e7bade..4834fd1 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -156,7 +156,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 fe5f148..b8cee86 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -175,7 +175,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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 c2bf8ba..de7149b 100644
--- a/supportingprojects.html
+++ b/supportingprojects.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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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-list.html b/team-list.html
index e4f89b4..c91384a 100644
--- a/team-list.html
+++ b/team-list.html
@@ -659,7 +659,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-11-03</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-11-04</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/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html b/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
index 90d00fd..919d260 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.162">TestExecutorService.TestEventHandler</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.163">TestExecutorService.TestEventHandler</a>
 extends org.apache.hadoop.hbase.executor.EventHandler</pre>
 </li>
 </ul>
@@ -231,7 +231,7 @@ extends org.apache.hadoop.hbase.executor.EventHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>lock</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.163">lock</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.164">lock</a></pre>
 </li>
 </ul>
 <a name="counter">
@@ -240,7 +240,7 @@ extends org.apache.hadoop.hbase.executor.EventHandler</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>counter</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.164">counter</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.165">counter</a></pre>
 </li>
 </ul>
 </li>
@@ -257,7 +257,7 @@ extends org.apache.hadoop.hbase.executor.EventHandler</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestEventHandler</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.166">TestEventHandler</a>(org.apache.hadoop.hbase.Server&nbsp;server,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.167">TestEventHandler</a>(org.apache.hadoop.hbase.Server&nbsp;server,
                         org.apache.hadoop.hbase.executor.EventType&nbsp;eventType,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a>&nbsp;lock,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&nbsp;counter)</pre>
@@ -277,7 +277,7 @@ extends org.apache.hadoop.hbase.executor.EventHandler</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>process</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.174">process</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.175">process</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="overrideSpecifyLabel">Specified by:</span></dt>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.html b/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.html
index 709a953..cfb832d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.53">TestExecutorService</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.54">TestExecutorService</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>
@@ -232,7 +232,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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/executor/TestExecutorService.html#line.56">CLASS_RULE</a></pre>
+<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/executor/TestExecutorService.html#line.57">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -241,7 +241,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.59">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.60">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -258,7 +258,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestExecutorService</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.53">TestExecutorService</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.54">TestExecutorService</a>()</pre>
 </li>
 </ul>
 </li>
@@ -275,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testExecutorService</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.62">testExecutorService</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.63">testExecutorService</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>
@@ -289,7 +289,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkStatusDump</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.153">checkStatusDump</a>(org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus&nbsp;status)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.154">checkStatusDump</a>(org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus&nbsp;status)
                       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>
@@ -303,7 +303,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAborting</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.192">testAborting</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.193">testAborting</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>
@@ -317,7 +317,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testSnapshotHandlers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.225">testSnapshotHandlers</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.226">testSnapshotHandlers</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>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
index c9cface..ec13519 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
@@ -38,230 +38,235 @@
 <span class="sourceLineNo">030</span>import java.io.StringWriter;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import java.util.concurrent.CountDownLatch;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.conf.Configuration;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.Server;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.Waiter;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.Waiter.Predicate;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.executor.ExecutorService.Executor;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.junit.Assert;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.junit.ClassRule;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.junit.Test;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.junit.experimental.categories.Category;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.Logger;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.slf4j.LoggerFactory;<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>@Category({MiscTests.class, SmallTests.class})<a name="line.52"></a>
-<span class="sourceLineNo">053</span>public class TestExecutorService {<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  @ClassRule<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      HBaseClassTestRule.forClass(TestExecutorService.class);<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final Logger LOG = LoggerFactory.getLogger(TestExecutorService.class);<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  @Test<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public void testExecutorService() throws Exception {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    int maxThreads = 5;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    int maxTries = 10;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    int sleepInterval = 10;<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>    Server mockedServer = mock(Server.class);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    when(mockedServer.getConfiguration()).thenReturn(HBaseConfiguration.create());<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>    // Start an executor service pool with max 5 threads<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    executorService.startExecutorService(<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      ExecutorType.MASTER_SERVER_OPERATIONS, maxThreads);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>    Executor executor =<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      executorService.getExecutor(ExecutorType.MASTER_SERVER_OPERATIONS);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    ThreadPoolExecutor pool = executor.threadPoolExecutor;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>    // Assert no threads yet<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    assertEquals(0, pool.getPoolSize());<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    AtomicBoolean lock = new AtomicBoolean(true);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    AtomicInteger counter = new AtomicInteger(0);<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // Submit maxThreads executors.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    for (int i = 0; i &lt; maxThreads; i++) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      executorService.submit(<a name="line.87"></a>
-<span class="sourceLineNo">088</span>        new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.88"></a>
-<span class="sourceLineNo">089</span>            lock, counter));<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    // The TestEventHandler will increment counter when it starts.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    int tries = 0;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    while (counter.get() &lt; maxThreads &amp;&amp; tries &lt; maxTries) {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      LOG.info("Waiting for all event handlers to start...");<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      Thread.sleep(sleepInterval);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      tries++;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    // Assert that pool is at max threads.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    assertEquals(maxThreads, counter.get());<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>    ExecutorStatus status = executor.getStatus();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    assertTrue(status.queuedEvents.isEmpty());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    assertEquals(5, status.running.size());<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    checkStatusDump(status);<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.TimeUnit;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.conf.Configuration;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.Server;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.Waiter;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Waiter.Predicate;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.executor.ExecutorService.Executor;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.junit.Assert;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.junit.ClassRule;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.Test;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.experimental.categories.Category;<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><a name="line.52"></a>
+<span class="sourceLineNo">053</span>@Category({MiscTests.class, SmallTests.class})<a name="line.53"></a>
+<span class="sourceLineNo">054</span>public class TestExecutorService {<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  @ClassRule<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      HBaseClassTestRule.forClass(TestExecutorService.class);<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final Logger LOG = LoggerFactory.getLogger(TestExecutorService.class);<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  @Test<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  public void testExecutorService() throws Exception {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    int maxThreads = 5;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    int maxTries = 10;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    int sleepInterval = 10;<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>    Server mockedServer = mock(Server.class);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    when(mockedServer.getConfiguration()).thenReturn(HBaseConfiguration.create());<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>    // Start an executor service pool with max 5 threads<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    executorService.startExecutorService(<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      ExecutorType.MASTER_SERVER_OPERATIONS, maxThreads);<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>    Executor executor =<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      executorService.getExecutor(ExecutorType.MASTER_SERVER_OPERATIONS);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    ThreadPoolExecutor pool = executor.threadPoolExecutor;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>    // Assert no threads yet<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    assertEquals(0, pool.getPoolSize());<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>    AtomicBoolean lock = new AtomicBoolean(true);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    AtomicInteger counter = new AtomicInteger(0);<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    // Submit maxThreads executors.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    for (int i = 0; i &lt; maxThreads; i++) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      executorService.submit(<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.89"></a>
+<span class="sourceLineNo">090</span>            lock, counter));<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>    // The TestEventHandler will increment counter when it starts.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    int tries = 0;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    while (counter.get() &lt; maxThreads &amp;&amp; tries &lt; maxTries) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      LOG.info("Waiting for all event handlers to start...");<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      Thread.sleep(sleepInterval);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      tries++;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    }<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>    // Assert that pool is at max threads.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    assertEquals(maxThreads, counter.get());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>    ExecutorStatus status = executor.getStatus();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    assertTrue(status.queuedEvents.isEmpty());<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    assertEquals(5, status.running.size());<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    checkStatusDump(status);<a name="line.108"></a>
 <span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    // Now interrupt the running Executor<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    synchronized (lock) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      lock.set(false);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      lock.notifyAll();<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>    // Executor increments counter again on way out so.... test that happened.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    while (counter.get() &lt; (maxThreads * 2) &amp;&amp; tries &lt; maxTries) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      System.out.println("Waiting for all event handlers to finish...");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Thread.sleep(sleepInterval);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      tries++;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>    assertEquals(maxThreads * 2, counter.get());<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    // Add more than the number of threads items.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    // Make sure we don't get RejectedExecutionException.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    for (int i = 0; i &lt; (2 * maxThreads); i++) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      executorService.submit(<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>            lock, counter));<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    // Now interrupt the running Executor<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    synchronized (lock) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      lock.set(false);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      lock.notifyAll();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    // Make sure threads are still around even after their timetolive expires.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    Thread.sleep(ExecutorService.Executor.keepAliveTimeInMillis * 2);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    executorService.shutdown();<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    assertEquals(0, executorService.getAllExecutorStatuses().size());<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // Test that submit doesn't throw NPEs<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    executorService.submit(<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>            lock, counter));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  private void checkStatusDump(ExecutorStatus status) throws IOException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    StringWriter sw = new StringWriter();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    status.dumpTo(sw, "");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    String dump = sw.toString();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    LOG.info("Got status dump:\n" + dump);<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>    assertTrue(dump.contains("Waiting on java.util.concurrent.atomic.AtomicBoolean"));<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  public static class TestEventHandler extends EventHandler {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    private final AtomicBoolean lock;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    private AtomicInteger counter;<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>    public TestEventHandler(Server server, EventType eventType,<a name="line.166"></a>
-<span class="sourceLineNo">167</span>                            AtomicBoolean lock, AtomicInteger counter) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      super(server, eventType);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      this.lock = lock;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      this.counter = counter;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>    @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public void process() throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      int num = counter.incrementAndGet();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      LOG.info("Running process #" + num + ", threadName=" +<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        Thread.currentThread().getName());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      synchronized (lock) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        while (lock.get()) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          try {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            lock.wait();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          } catch (InterruptedException e) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            // do nothing<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>      }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      counter.incrementAndGet();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @Test<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public void testAborting() throws Exception {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    final Server server = mock(Server.class);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    executorService.startExecutorService(<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      ExecutorType.MASTER_SERVER_OPERATIONS, 1);<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>    // Now interrupt the running Executor<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    synchronized (lock) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      lock.set(false);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      lock.notifyAll();<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>    // Executor increments counter again on way out so.... test that happened.<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    while (counter.get() &lt; (maxThreads * 2) &amp;&amp; tries &lt; maxTries) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      System.out.println("Waiting for all event handlers to finish...");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      Thread.sleep(sleepInterval);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      tries++;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    assertEquals(maxThreads * 2, counter.get());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>    // Add more than the number of threads items.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    // Make sure we don't get RejectedExecutionException.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    for (int i = 0; i &lt; (2 * maxThreads); i++) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      executorService.submit(<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.131"></a>
+<span class="sourceLineNo">132</span>            lock, counter));<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    // Now interrupt the running Executor<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    synchronized (lock) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      lock.set(false);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      lock.notifyAll();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    // Make sure threads are still around even after their timetolive expires.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    Thread.sleep(ExecutorService.Executor.keepAliveTimeInMillis * 2);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    executorService.shutdown();<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    assertEquals(0, executorService.getAllExecutorStatuses().size());<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Test that submit doesn't throw NPEs<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    executorService.submit(<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>            lock, counter));<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>  private void checkStatusDump(ExecutorStatus status) throws IOException {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    StringWriter sw = new StringWriter();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    status.dumpTo(sw, "");<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    String dump = sw.toString();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    LOG.info("Got status dump:\n" + dump);<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>    assertTrue(dump.contains("Waiting on java.util.concurrent.atomic.AtomicBoolean"));<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  public static class TestEventHandler extends EventHandler {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    private final AtomicBoolean lock;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    private AtomicInteger counter;<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>    public TestEventHandler(Server server, EventType eventType,<a name="line.167"></a>
+<span class="sourceLineNo">168</span>                            AtomicBoolean lock, AtomicInteger counter) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      super(server, eventType);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      this.lock = lock;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      this.counter = counter;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>    @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    public void process() throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      int num = counter.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      LOG.info("Running process #" + num + ", threadName=" +<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        Thread.currentThread().getName());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      synchronized (lock) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        while (lock.get()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          try {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            lock.wait();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          } catch (InterruptedException e) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            // do nothing<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>      counter.incrementAndGet();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  }<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Test<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public void testAborting() throws Exception {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    final Server server = mock(Server.class);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    executorService.startExecutorService(<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      ExecutorType.MASTER_SERVER_OPERATIONS, 1);<a name="line.200"></a>
 <span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    executorService.submit(new EventHandler(server, EventType.M_SERVER_SHUTDOWN) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      @Override<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      public void process() throws IOException {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        throw new RuntimeException("Should cause abort");<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    });<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    Waiter.waitFor(conf, 30000, new Predicate&lt;Exception&gt;() {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      @Override<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      public boolean evaluate() throws Exception {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        try {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          verify(server, times(1)).abort(anyString(), (Throwable) anyObject());<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          return true;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        } catch (Throwable t) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>          return false;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    });<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>    executorService.shutdown();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Test<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public void testSnapshotHandlers() throws Exception {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    final Server server = mock(Server.class);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>    ExecutorService executorService = new ExecutorService("testSnapshotHandlers");<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    executorService.startExecutorService(ExecutorType.MASTER_SNAPSHOT_OPERATIONS, 1);<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    CountDownLatch latch = new CountDownLatch(1);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    executorService.submit(new EventHandler(server, EventType.C_M_SNAPSHOT_TABLE) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      public void process() throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        try {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          latch.await();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        } catch (InterruptedException e) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          Thread.currentThread().interrupt();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        }<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    });<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int activeCount = executorService.getExecutor(ExecutorType.MASTER_SNAPSHOT_OPERATIONS)<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        .getThreadPoolExecutor().getActiveCount();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    Assert.assertEquals(activeCount, 1);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    latch.countDown();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    Waiter.waitFor(conf, 3000, () -&gt; {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      int count = executorService.getExecutor(ExecutorType.MASTER_SNAPSHOT_OPERATIONS)<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          .getThreadPoolExecutor().getActiveCount();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      return count == 0;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    });<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>}<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    executorService.submit(new EventHandler(server, EventType.M_SERVER_SHUTDOWN) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      public void process() throws IOException {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        throw new RuntimeException("Should cause abort");<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    });<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Waiter.waitFor(conf, 30000, new Predicate&lt;Exception&gt;() {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      @Override<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      public boolean evaluate() throws Exception {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        try {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          verify(server, times(1)).abort(anyString(), (Throwable) anyObject());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          return true;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        } catch (Throwable t) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          return false;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    });<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    executorService.shutdown();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  @Test<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  public void testSnapshotHandlers() throws Exception {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    final Server server = mock(Server.class);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>    ExecutorService executorService = new ExecutorService("testSnapshotHandlers");<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    executorService.startExecutorService(ExecutorType.MASTER_SNAPSHOT_OPERATIONS, 1);<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>    CountDownLatch latch = new CountDownLatch(1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    CountDownLatch waitForEventToStart = new CountDownLatch(1);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    executorService.submit(new EventHandler(server, EventType.C_M_SNAPSHOT_TABLE) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      public void process() throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        waitForEventToStart.countDown();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        try {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          latch.await();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        } catch (InterruptedException e) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          Thread.currentThread().interrupt();<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>    //Wait EventHandler to start<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    waitForEventToStart.await(10, TimeUnit.SECONDS);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int activeCount = executorService.getExecutor(ExecutorType.MASTER_SNAPSHOT_OPERATIONS)<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        .getThreadPoolExecutor().getActiveCount();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    Assert.assertEquals(1, activeCount);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    latch.countDown();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    Waiter.waitFor(conf, 3000, () -&gt; {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      int count = executorService.getExecutor(ExecutorType.MASTER_SNAPSHOT_OPERATIONS)<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          .getThreadPoolExecutor().getActiveCount();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      return count == 0;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    });<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>}<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
 
 
 
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html
index c9cface..ec13519 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html
@@ -38,230 +38,235 @@
 <span class="sourceLineNo">030</span>import java.io.StringWriter;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import java.util.concurrent.CountDownLatch;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.conf.Configuration;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.Server;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.Waiter;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.Waiter.Predicate;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.executor.ExecutorService.Executor;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.junit.Assert;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.junit.ClassRule;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.junit.Test;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.junit.experimental.categories.Category;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.Logger;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.slf4j.LoggerFactory;<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>@Category({MiscTests.class, SmallTests.class})<a name="line.52"></a>
-<span class="sourceLineNo">053</span>public class TestExecutorService {<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  @ClassRule<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      HBaseClassTestRule.forClass(TestExecutorService.class);<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final Logger LOG = LoggerFactory.getLogger(TestExecutorService.class);<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  @Test<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public void testExecutorService() throws Exception {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    int maxThreads = 5;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    int maxTries = 10;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    int sleepInterval = 10;<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>    Server mockedServer = mock(Server.class);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    when(mockedServer.getConfiguration()).thenReturn(HBaseConfiguration.create());<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>    // Start an executor service pool with max 5 threads<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    executorService.startExecutorService(<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      ExecutorType.MASTER_SERVER_OPERATIONS, maxThreads);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>    Executor executor =<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      executorService.getExecutor(ExecutorType.MASTER_SERVER_OPERATIONS);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    ThreadPoolExecutor pool = executor.threadPoolExecutor;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>    // Assert no threads yet<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    assertEquals(0, pool.getPoolSize());<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    AtomicBoolean lock = new AtomicBoolean(true);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    AtomicInteger counter = new AtomicInteger(0);<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // Submit maxThreads executors.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    for (int i = 0; i &lt; maxThreads; i++) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      executorService.submit(<a name="line.87"></a>
-<span class="sourceLineNo">088</span>        new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.88"></a>
-<span class="sourceLineNo">089</span>            lock, counter));<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    // The TestEventHandler will increment counter when it starts.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    int tries = 0;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    while (counter.get() &lt; maxThreads &amp;&amp; tries &lt; maxTries) {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      LOG.info("Waiting for all event handlers to start...");<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      Thread.sleep(sleepInterval);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      tries++;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    // Assert that pool is at max threads.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    assertEquals(maxThreads, counter.get());<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>    ExecutorStatus status = executor.getStatus();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    assertTrue(status.queuedEvents.isEmpty());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    assertEquals(5, status.running.size());<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    checkStatusDump(status);<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.TimeUnit;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.conf.Configuration;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.Server;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.Waiter;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Waiter.Predicate;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.executor.ExecutorService.Executor;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.junit.Assert;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.junit.ClassRule;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.Test;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.experimental.categories.Category;<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><a name="line.52"></a>
+<span class="sourceLineNo">053</span>@Category({MiscTests.class, SmallTests.class})<a name="line.53"></a>
+<span class="sourceLineNo">054</span>public class TestExecutorService {<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  @ClassRule<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      HBaseClassTestRule.forClass(TestExecutorService.class);<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final Logger LOG = LoggerFactory.getLogger(TestExecutorService.class);<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  @Test<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  public void testExecutorService() throws Exception {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    int maxThreads = 5;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    int maxTries = 10;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    int sleepInterval = 10;<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>    Server mockedServer = mock(Server.class);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    when(mockedServer.getConfiguration()).thenReturn(HBaseConfiguration.create());<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>    // Start an executor service pool with max 5 threads<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    executorService.startExecutorService(<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      ExecutorType.MASTER_SERVER_OPERATIONS, maxThreads);<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>    Executor executor =<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      executorService.getExecutor(ExecutorType.MASTER_SERVER_OPERATIONS);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    ThreadPoolExecutor pool = executor.threadPoolExecutor;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>    // Assert no threads yet<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    assertEquals(0, pool.getPoolSize());<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>    AtomicBoolean lock = new AtomicBoolean(true);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    AtomicInteger counter = new AtomicInteger(0);<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    // Submit maxThreads executors.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    for (int i = 0; i &lt; maxThreads; i++) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      executorService.submit(<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.89"></a>
+<span class="sourceLineNo">090</span>            lock, counter));<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>    // The TestEventHandler will increment counter when it starts.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    int tries = 0;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    while (counter.get() &lt; maxThreads &amp;&amp; tries &lt; maxTries) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      LOG.info("Waiting for all event handlers to start...");<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      Thread.sleep(sleepInterval);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      tries++;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    }<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>    // Assert that pool is at max threads.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    assertEquals(maxThreads, counter.get());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>    ExecutorStatus status = executor.getStatus();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    assertTrue(status.queuedEvents.isEmpty());<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    assertEquals(5, status.running.size());<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    checkStatusDump(status);<a name="line.108"></a>
 <span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    // Now interrupt the running Executor<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    synchronized (lock) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      lock.set(false);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      lock.notifyAll();<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>    // Executor increments counter again on way out so.... test that happened.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    while (counter.get() &lt; (maxThreads * 2) &amp;&amp; tries &lt; maxTries) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      System.out.println("Waiting for all event handlers to finish...");<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      Thread.sleep(sleepInterval);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      tries++;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>    assertEquals(maxThreads * 2, counter.get());<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    // Add more than the number of threads items.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    // Make sure we don't get RejectedExecutionException.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    for (int i = 0; i &lt; (2 * maxThreads); i++) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      executorService.submit(<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>            lock, counter));<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    // Now interrupt the running Executor<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    synchronized (lock) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      lock.set(false);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      lock.notifyAll();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    // Make sure threads are still around even after their timetolive expires.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    Thread.sleep(ExecutorService.Executor.keepAliveTimeInMillis * 2);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    executorService.shutdown();<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    assertEquals(0, executorService.getAllExecutorStatuses().size());<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // Test that submit doesn't throw NPEs<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    executorService.submit(<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>            lock, counter));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  private void checkStatusDump(ExecutorStatus status) throws IOException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    StringWriter sw = new StringWriter();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    status.dumpTo(sw, "");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    String dump = sw.toString();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    LOG.info("Got status dump:\n" + dump);<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>    assertTrue(dump.contains("Waiting on java.util.concurrent.atomic.AtomicBoolean"));<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  public static class TestEventHandler extends EventHandler {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    private final AtomicBoolean lock;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    private AtomicInteger counter;<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>    public TestEventHandler(Server server, EventType eventType,<a name="line.166"></a>
-<span class="sourceLineNo">167</span>                            AtomicBoolean lock, AtomicInteger counter) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      super(server, eventType);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      this.lock = lock;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      this.counter = counter;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>    @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public void process() throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      int num = counter.incrementAndGet();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      LOG.info("Running process #" + num + ", threadName=" +<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        Thread.currentThread().getName());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      synchronized (lock) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        while (lock.get()) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          try {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            lock.wait();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          } catch (InterruptedException e) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            // do nothing<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>      }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      counter.incrementAndGet();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @Test<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public void testAborting() throws Exception {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    final Server server = mock(Server.class);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    executorService.startExecutorService(<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      ExecutorType.MASTER_SERVER_OPERATIONS, 1);<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>    // Now interrupt the running Executor<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    synchronized (lock) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      lock.set(false);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      lock.notifyAll();<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>    // Executor increments counter again on way out so.... test that happened.<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    while (counter.get() &lt; (maxThreads * 2) &amp;&amp; tries &lt; maxTries) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      System.out.println("Waiting for all event handlers to finish...");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      Thread.sleep(sleepInterval);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      tries++;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    assertEquals(maxThreads * 2, counter.get());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>    // Add more than the number of threads items.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    // Make sure we don't get RejectedExecutionException.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    for (int i = 0; i &lt; (2 * maxThreads); i++) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      executorService.submit(<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.131"></a>
+<span class="sourceLineNo">132</span>            lock, counter));<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    // Now interrupt the running Executor<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    synchronized (lock) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      lock.set(false);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      lock.notifyAll();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    // Make sure threads are still around even after their timetolive expires.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    Thread.sleep(ExecutorService.Executor.keepAliveTimeInMillis * 2);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    assertEquals(maxThreads, pool.getPoolSize());<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    executorService.shutdown();<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    assertEquals(0, executorService.getAllExecutorStatuses().size());<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Test that submit doesn't throw NPEs<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    executorService.submit(<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      new TestEventHandler(mockedServer, EventType.M_SERVER_SHUTDOWN,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>            lock, counter));<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>  private void checkStatusDump(ExecutorStatus status) throws IOException {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    StringWriter sw = new StringWriter();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    status.dumpTo(sw, "");<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    String dump = sw.toString();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    LOG.info("Got status dump:\n" + dump);<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>    assertTrue(dump.contains("Waiting on java.util.concurrent.atomic.AtomicBoolean"));<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  public static class TestEventHandler extends EventHandler {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    private final AtomicBoolean lock;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    private AtomicInteger counter;<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>    public TestEventHandler(Server server, EventType eventType,<a name="line.167"></a>
+<span class="sourceLineNo">168</span>                            AtomicBoolean lock, AtomicInteger counter) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      super(server, eventType);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      this.lock = lock;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      this.counter = counter;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>    @Override<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    public void process() throws IOException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      int num = counter.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      LOG.info("Running process #" + num + ", threadName=" +<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        Thread.currentThread().getName());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      synchronized (lock) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        while (lock.get()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          try {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            lock.wait();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          } catch (InterruptedException e) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            // do nothing<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>      counter.incrementAndGet();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  }<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Test<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public void testAborting() throws Exception {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    final Server server = mock(Server.class);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    executorService.startExecutorService(<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      ExecutorType.MASTER_SERVER_OPERATIONS, 1);<a name="line.200"></a>
 <span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    executorService.submit(new EventHandler(server, EventType.M_SERVER_SHUTDOWN) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      @Override<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      public void process() throws IOException {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        throw new RuntimeException("Should cause abort");<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    });<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    Waiter.waitFor(conf, 30000, new Predicate&lt;Exception&gt;() {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      @Override<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      public boolean evaluate() throws Exception {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        try {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          verify(server, times(1)).abort(anyString(), (Throwable) anyObject());<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          return true;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        } catch (Throwable t) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>          return false;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    });<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>    executorService.shutdown();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Test<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public void testSnapshotHandlers() throws Exception {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    final Server server = mock(Server.class);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>    ExecutorService executorService = new ExecutorService("testSnapshotHandlers");<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    executorService.startExecutorService(ExecutorType.MASTER_SNAPSHOT_OPERATIONS, 1);<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    CountDownLatch latch = new CountDownLatch(1);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    executorService.submit(new EventHandler(server, EventType.C_M_SNAPSHOT_TABLE) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      public void process() throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        try {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          latch.await();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        } catch (InterruptedException e) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          Thread.currentThread().interrupt();<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        }<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    });<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int activeCount = executorService.getExecutor(ExecutorType.MASTER_SNAPSHOT_OPERATIONS)<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        .getThreadPoolExecutor().getActiveCount();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    Assert.assertEquals(activeCount, 1);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    latch.countDown();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    Waiter.waitFor(conf, 3000, () -&gt; {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      int count = executorService.getExecutor(ExecutorType.MASTER_SNAPSHOT_OPERATIONS)<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          .getThreadPoolExecutor().getActiveCount();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      return count == 0;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    });<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>}<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    executorService.submit(new EventHandler(server, EventType.M_SERVER_SHUTDOWN) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      public void process() throws IOException {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        throw new RuntimeException("Should cause abort");<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    });<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Waiter.waitFor(conf, 30000, new Predicate&lt;Exception&gt;() {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      @Override<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      public boolean evaluate() throws Exception {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        try {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          verify(server, times(1)).abort(anyString(), (Throwable) anyObject());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          return true;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        } catch (Throwable t) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          return false;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    });<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    executorService.shutdown();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>  @Test<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  public void testSnapshotHandlers() throws Exception {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    final Server server = mock(Server.class);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>    ExecutorService executorService = new ExecutorService("testSnapshotHandlers");<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    executorService.startExecutorService(ExecutorType.MASTER_SNAPSHOT_OPERATIONS, 1);<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>    CountDownLatch latch = new CountDownLatch(1);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    CountDownLatch waitForEventToStart = new CountDownLatch(1);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    executorService.submit(new EventHandler(server, EventType.C_M_SNAPSHOT_TABLE) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      public void process() throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        waitForEventToStart.countDown();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        try {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          latch.await();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        } catch (InterruptedException e) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          Thread.currentThread().interrupt();<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>    //Wait EventHandler to start<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    waitForEventToStart.await(10, TimeUnit.SECONDS);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int activeCount = executorService.getExecutor(ExecutorType.MASTER_SNAPSHOT_OPERATIONS)<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        .getThreadPoolExecutor().getActiveCount();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    Assert.assertEquals(1, activeCount);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    latch.countDown();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    Waiter.waitFor(conf, 3000, () -&gt; {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      int count = executorService.getExecutor(ExecutorType.MASTER_SNAPSHOT_OPERATIONS)<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          .getThreadPoolExecutor().getActiveCount();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      return count == 0;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    });<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>}<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
 
 
 


Mime
View raw message