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 <[email protected]>
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 ©2007–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 ©2007–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 ©2007–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:[email protected]">the priv
<div class="row">
<p>Copyright ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 static final <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 static final <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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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="$HBASE_JMX_OPTS
-Dcom.sun.management.jmxrem
<div class="row">
<p>Copyright ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 ©2007–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 <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 <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 <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 <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 <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.166">TestEventHandler</a>(org.apache.hadoop.hbase.Server server,
+<pre>public <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.167">TestEventHandler</a>(org.apache.hadoop.hbase.Server server,
org.apache.hadoop.hbase.executor.EventType 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> 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> 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 void <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html#line.174">process</a>()
+<pre>public void <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 <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 <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 org.slf4j.Logger <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.59">LOG</a></pre>
+<pre>private static final 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 <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.53">TestExecutorService</a>()</pre>
+<pre>public <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 void <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.62">testExecutorService</a>()
+<pre>public void <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 void <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.153">checkStatusDump</a>(org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus status)
+<pre>private void <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.154">checkStatusDump</a>(org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus 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 void <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.192">testAborting</a>()
+<pre>public void <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 void <a
href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.225">testSnapshotHandlers</a>()
+<pre>public void <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 < 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() < maxThreads
&& tries < 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 < 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() < maxThreads
&& tries < 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() < (maxThreads
* 2) && tries < 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 < (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() < (maxThreads
* 2) && tries < 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 < (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<Exception>() {<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, () ->
{<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<Exception>() {<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, () ->
{<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 < 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() < maxThreads
&& tries < 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 < 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() < maxThreads
&& tries < 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() < (maxThreads
* 2) && tries < 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 < (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() < (maxThreads
* 2) && tries < 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 < (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<Exception>() {<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, () ->
{<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<Exception>() {<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, () ->
{<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>