You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2017/12/01 15:18:29 UTC

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/a5c4dca3/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html
index 81e76e9..cf2f511 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.OpType.html
@@ -2698,85 +2698,91 @@
 <span class="sourceLineNo">2690</span>  }<a name="line.2690"></a>
 <span class="sourceLineNo">2691</span><a name="line.2691"></a>
 <span class="sourceLineNo">2692</span>  @Override<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2695"></a>
+<span class="sourceLineNo">2693</span>  public void preRemoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>      Set&lt;Address&gt; servers) throws IOException {<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>    requirePermission(getActiveUser(ctx), "removeServers", Action.ADMIN);<a name="line.2695"></a>
 <span class="sourceLineNo">2696</span>  }<a name="line.2696"></a>
 <span class="sourceLineNo">2697</span><a name="line.2697"></a>
 <span class="sourceLineNo">2698</span>  @Override<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>      String peerId) throws IOException {<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2701"></a>
+<span class="sourceLineNo">2699</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2701"></a>
 <span class="sourceLineNo">2702</span>  }<a name="line.2702"></a>
 <span class="sourceLineNo">2703</span><a name="line.2703"></a>
 <span class="sourceLineNo">2704</span>  @Override<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2705"></a>
+<span class="sourceLineNo">2705</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2705"></a>
 <span class="sourceLineNo">2706</span>      String peerId) throws IOException {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2707"></a>
+<span class="sourceLineNo">2707</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2707"></a>
 <span class="sourceLineNo">2708</span>  }<a name="line.2708"></a>
 <span class="sourceLineNo">2709</span><a name="line.2709"></a>
 <span class="sourceLineNo">2710</span>  @Override<a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2711"></a>
+<span class="sourceLineNo">2711</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2711"></a>
 <span class="sourceLineNo">2712</span>      String peerId) throws IOException {<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2713"></a>
+<span class="sourceLineNo">2713</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2713"></a>
 <span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
 <span class="sourceLineNo">2715</span><a name="line.2715"></a>
 <span class="sourceLineNo">2716</span>  @Override<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2717"></a>
+<span class="sourceLineNo">2717</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2717"></a>
 <span class="sourceLineNo">2718</span>      String peerId) throws IOException {<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2719"></a>
+<span class="sourceLineNo">2719</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2719"></a>
 <span class="sourceLineNo">2720</span>  }<a name="line.2720"></a>
 <span class="sourceLineNo">2721</span><a name="line.2721"></a>
 <span class="sourceLineNo">2722</span>  @Override<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>  public void preUpdateReplicationPeerConfig(<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span>  }<a name="line.2727"></a>
-<span class="sourceLineNo">2728</span><a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  @Override<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span>      String regex) throws IOException {<a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2732"></a>
+<span class="sourceLineNo">2723</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>      String peerId) throws IOException {<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
+<span class="sourceLineNo">2727</span><a name="line.2727"></a>
+<span class="sourceLineNo">2728</span>  @Override<a name="line.2728"></a>
+<span class="sourceLineNo">2729</span>  public void preUpdateReplicationPeerConfig(<a name="line.2729"></a>
+<span class="sourceLineNo">2730</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2732"></a>
 <span class="sourceLineNo">2733</span>  }<a name="line.2733"></a>
 <span class="sourceLineNo">2734</span><a name="line.2734"></a>
 <span class="sourceLineNo">2735</span>  @Override<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>      TableName tableName, RegionInfo[] regionInfos, String description)<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  throws IOException {<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>    String reason = String.format("Description=%s", description);<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  }<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span><a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>  @Override<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      TableName tableName, String description) throws IOException {<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>    checkLockPermissions(getActiveUser(ctx), null, tableName, null, description);<a name="line.2748"></a>
+<span class="sourceLineNo">2736</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2736"></a>
+<span class="sourceLineNo">2737</span>      String regex) throws IOException {<a name="line.2737"></a>
+<span class="sourceLineNo">2738</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2738"></a>
+<span class="sourceLineNo">2739</span>  }<a name="line.2739"></a>
+<span class="sourceLineNo">2740</span><a name="line.2740"></a>
+<span class="sourceLineNo">2741</span>  @Override<a name="line.2741"></a>
+<span class="sourceLineNo">2742</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2742"></a>
+<span class="sourceLineNo">2743</span>      TableName tableName, RegionInfo[] regionInfos, String description)<a name="line.2743"></a>
+<span class="sourceLineNo">2744</span>  throws IOException {<a name="line.2744"></a>
+<span class="sourceLineNo">2745</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2745"></a>
+<span class="sourceLineNo">2746</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2746"></a>
+<span class="sourceLineNo">2747</span>    String reason = String.format("Description=%s", description);<a name="line.2747"></a>
+<span class="sourceLineNo">2748</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2748"></a>
 <span class="sourceLineNo">2749</span>  }<a name="line.2749"></a>
 <span class="sourceLineNo">2750</span><a name="line.2750"></a>
 <span class="sourceLineNo">2751</span>  @Override<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>  public void preGetClusterStatus(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx)<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      throws IOException {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>    requirePermission(getActiveUser(ctx), "getClusterStatus", Action.ADMIN);<a name="line.2754"></a>
+<span class="sourceLineNo">2752</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2752"></a>
+<span class="sourceLineNo">2753</span>      TableName tableName, String description) throws IOException {<a name="line.2753"></a>
+<span class="sourceLineNo">2754</span>    checkLockPermissions(getActiveUser(ctx), null, tableName, null, description);<a name="line.2754"></a>
 <span class="sourceLineNo">2755</span>  }<a name="line.2755"></a>
 <span class="sourceLineNo">2756</span><a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>  throws IOException {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>          Action.ADMIN, Action.CREATE);<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>    } else {<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span>    }<a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  }<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>}<a name="line.2771"></a>
+<span class="sourceLineNo">2757</span>  @Override<a name="line.2757"></a>
+<span class="sourceLineNo">2758</span>  public void preGetClusterStatus(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx)<a name="line.2758"></a>
+<span class="sourceLineNo">2759</span>      throws IOException {<a name="line.2759"></a>
+<span class="sourceLineNo">2760</span>    requirePermission(getActiveUser(ctx), "getClusterStatus", Action.ADMIN);<a name="line.2760"></a>
+<span class="sourceLineNo">2761</span>  }<a name="line.2761"></a>
+<span class="sourceLineNo">2762</span><a name="line.2762"></a>
+<span class="sourceLineNo">2763</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2763"></a>
+<span class="sourceLineNo">2764</span>      TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.2764"></a>
+<span class="sourceLineNo">2765</span>  throws IOException {<a name="line.2765"></a>
+<span class="sourceLineNo">2766</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2766"></a>
+<span class="sourceLineNo">2767</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2767"></a>
+<span class="sourceLineNo">2768</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2768"></a>
+<span class="sourceLineNo">2769</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2769"></a>
+<span class="sourceLineNo">2770</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2770"></a>
+<span class="sourceLineNo">2771</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2771"></a>
+<span class="sourceLineNo">2772</span>          Action.ADMIN, Action.CREATE);<a name="line.2772"></a>
+<span class="sourceLineNo">2773</span>    } else {<a name="line.2773"></a>
+<span class="sourceLineNo">2774</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2774"></a>
+<span class="sourceLineNo">2775</span>    }<a name="line.2775"></a>
+<span class="sourceLineNo">2776</span>  }<a name="line.2776"></a>
+<span class="sourceLineNo">2777</span>}<a name="line.2777"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/a5c4dca3/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html
index 81e76e9..cf2f511 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/access/AccessController.html
@@ -2698,85 +2698,91 @@
 <span class="sourceLineNo">2690</span>  }<a name="line.2690"></a>
 <span class="sourceLineNo">2691</span><a name="line.2691"></a>
 <span class="sourceLineNo">2692</span>  @Override<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2695"></a>
+<span class="sourceLineNo">2693</span>  public void preRemoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>      Set&lt;Address&gt; servers) throws IOException {<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>    requirePermission(getActiveUser(ctx), "removeServers", Action.ADMIN);<a name="line.2695"></a>
 <span class="sourceLineNo">2696</span>  }<a name="line.2696"></a>
 <span class="sourceLineNo">2697</span><a name="line.2697"></a>
 <span class="sourceLineNo">2698</span>  @Override<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>      String peerId) throws IOException {<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2701"></a>
+<span class="sourceLineNo">2699</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2701"></a>
 <span class="sourceLineNo">2702</span>  }<a name="line.2702"></a>
 <span class="sourceLineNo">2703</span><a name="line.2703"></a>
 <span class="sourceLineNo">2704</span>  @Override<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2705"></a>
+<span class="sourceLineNo">2705</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2705"></a>
 <span class="sourceLineNo">2706</span>      String peerId) throws IOException {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2707"></a>
+<span class="sourceLineNo">2707</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2707"></a>
 <span class="sourceLineNo">2708</span>  }<a name="line.2708"></a>
 <span class="sourceLineNo">2709</span><a name="line.2709"></a>
 <span class="sourceLineNo">2710</span>  @Override<a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2711"></a>
+<span class="sourceLineNo">2711</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2711"></a>
 <span class="sourceLineNo">2712</span>      String peerId) throws IOException {<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2713"></a>
+<span class="sourceLineNo">2713</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2713"></a>
 <span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
 <span class="sourceLineNo">2715</span><a name="line.2715"></a>
 <span class="sourceLineNo">2716</span>  @Override<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2717"></a>
+<span class="sourceLineNo">2717</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2717"></a>
 <span class="sourceLineNo">2718</span>      String peerId) throws IOException {<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2719"></a>
+<span class="sourceLineNo">2719</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2719"></a>
 <span class="sourceLineNo">2720</span>  }<a name="line.2720"></a>
 <span class="sourceLineNo">2721</span><a name="line.2721"></a>
 <span class="sourceLineNo">2722</span>  @Override<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>  public void preUpdateReplicationPeerConfig(<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span>  }<a name="line.2727"></a>
-<span class="sourceLineNo">2728</span><a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  @Override<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span>      String regex) throws IOException {<a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2732"></a>
+<span class="sourceLineNo">2723</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>      String peerId) throws IOException {<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
+<span class="sourceLineNo">2727</span><a name="line.2727"></a>
+<span class="sourceLineNo">2728</span>  @Override<a name="line.2728"></a>
+<span class="sourceLineNo">2729</span>  public void preUpdateReplicationPeerConfig(<a name="line.2729"></a>
+<span class="sourceLineNo">2730</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2732"></a>
 <span class="sourceLineNo">2733</span>  }<a name="line.2733"></a>
 <span class="sourceLineNo">2734</span><a name="line.2734"></a>
 <span class="sourceLineNo">2735</span>  @Override<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>      TableName tableName, RegionInfo[] regionInfos, String description)<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  throws IOException {<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>    String reason = String.format("Description=%s", description);<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  }<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span><a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>  @Override<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      TableName tableName, String description) throws IOException {<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>    checkLockPermissions(getActiveUser(ctx), null, tableName, null, description);<a name="line.2748"></a>
+<span class="sourceLineNo">2736</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2736"></a>
+<span class="sourceLineNo">2737</span>      String regex) throws IOException {<a name="line.2737"></a>
+<span class="sourceLineNo">2738</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2738"></a>
+<span class="sourceLineNo">2739</span>  }<a name="line.2739"></a>
+<span class="sourceLineNo">2740</span><a name="line.2740"></a>
+<span class="sourceLineNo">2741</span>  @Override<a name="line.2741"></a>
+<span class="sourceLineNo">2742</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2742"></a>
+<span class="sourceLineNo">2743</span>      TableName tableName, RegionInfo[] regionInfos, String description)<a name="line.2743"></a>
+<span class="sourceLineNo">2744</span>  throws IOException {<a name="line.2744"></a>
+<span class="sourceLineNo">2745</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2745"></a>
+<span class="sourceLineNo">2746</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2746"></a>
+<span class="sourceLineNo">2747</span>    String reason = String.format("Description=%s", description);<a name="line.2747"></a>
+<span class="sourceLineNo">2748</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2748"></a>
 <span class="sourceLineNo">2749</span>  }<a name="line.2749"></a>
 <span class="sourceLineNo">2750</span><a name="line.2750"></a>
 <span class="sourceLineNo">2751</span>  @Override<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>  public void preGetClusterStatus(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx)<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      throws IOException {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>    requirePermission(getActiveUser(ctx), "getClusterStatus", Action.ADMIN);<a name="line.2754"></a>
+<span class="sourceLineNo">2752</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2752"></a>
+<span class="sourceLineNo">2753</span>      TableName tableName, String description) throws IOException {<a name="line.2753"></a>
+<span class="sourceLineNo">2754</span>    checkLockPermissions(getActiveUser(ctx), null, tableName, null, description);<a name="line.2754"></a>
 <span class="sourceLineNo">2755</span>  }<a name="line.2755"></a>
 <span class="sourceLineNo">2756</span><a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>  throws IOException {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>          Action.ADMIN, Action.CREATE);<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>    } else {<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span>    }<a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  }<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>}<a name="line.2771"></a>
+<span class="sourceLineNo">2757</span>  @Override<a name="line.2757"></a>
+<span class="sourceLineNo">2758</span>  public void preGetClusterStatus(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx)<a name="line.2758"></a>
+<span class="sourceLineNo">2759</span>      throws IOException {<a name="line.2759"></a>
+<span class="sourceLineNo">2760</span>    requirePermission(getActiveUser(ctx), "getClusterStatus", Action.ADMIN);<a name="line.2760"></a>
+<span class="sourceLineNo">2761</span>  }<a name="line.2761"></a>
+<span class="sourceLineNo">2762</span><a name="line.2762"></a>
+<span class="sourceLineNo">2763</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2763"></a>
+<span class="sourceLineNo">2764</span>      TableName tableName, RegionInfo[] regionInfos, String reason)<a name="line.2764"></a>
+<span class="sourceLineNo">2765</span>  throws IOException {<a name="line.2765"></a>
+<span class="sourceLineNo">2766</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2766"></a>
+<span class="sourceLineNo">2767</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2767"></a>
+<span class="sourceLineNo">2768</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2768"></a>
+<span class="sourceLineNo">2769</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2769"></a>
+<span class="sourceLineNo">2770</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2770"></a>
+<span class="sourceLineNo">2771</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2771"></a>
+<span class="sourceLineNo">2772</span>          Action.ADMIN, Action.CREATE);<a name="line.2772"></a>
+<span class="sourceLineNo">2773</span>    } else {<a name="line.2773"></a>
+<span class="sourceLineNo">2774</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2774"></a>
+<span class="sourceLineNo">2775</span>    }<a name="line.2775"></a>
+<span class="sourceLineNo">2776</span>  }<a name="line.2776"></a>
+<span class="sourceLineNo">2777</span>}<a name="line.2777"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/a5c4dca3/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.AsyncWriter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.AsyncWriter.html b/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.AsyncWriter.html
index a7bc752..238fc0d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.AsyncWriter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.AsyncWriter.html
@@ -42,87 +42,86 @@
 <span class="sourceLineNo">034</span><a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.shaded.com.google.common.base.Throwables;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.Channel;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.EventLoop;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.EventLoopGroup;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.nio.NioEventLoopGroup;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.socket.nio.NioSocketChannel;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.shaded.io.netty.util.concurrent.DefaultThreadFactory;<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * A WAL provider that use {@link AsyncFSWAL}.<a name="line.44"></a>
-<span class="sourceLineNo">045</span> */<a name="line.45"></a>
-<span class="sourceLineNo">046</span>@InterfaceAudience.Private<a name="line.46"></a>
-<span class="sourceLineNo">047</span>@InterfaceStability.Evolving<a name="line.47"></a>
-<span class="sourceLineNo">048</span>public class AsyncFSWALProvider extends AbstractFSWALProvider&lt;AsyncFSWAL&gt; {<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  private static final Log LOG = LogFactory.getLog(AsyncFSWALProvider.class);<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  // Only public so classes back in regionserver.wal can access<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  public interface AsyncWriter extends WALProvider.AsyncWriter {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    /**<a name="line.54"></a>
-<span class="sourceLineNo">055</span>     * @throws IOException if something goes wrong initializing an output stream<a name="line.55"></a>
-<span class="sourceLineNo">056</span>     * @throws StreamLacksCapabilityException if the given FileSystem can't provide streams that<a name="line.56"></a>
-<span class="sourceLineNo">057</span>     *         meet the needs of the given Writer implementation.<a name="line.57"></a>
-<span class="sourceLineNo">058</span>     */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    void init(FileSystem fs, Path path, Configuration c, boolean overwritable)<a name="line.59"></a>
-<span class="sourceLineNo">060</span>        throws IOException, CommonFSUtils.StreamLacksCapabilityException;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  }<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private EventLoopGroup eventLoopGroup;<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private Class&lt;? extends Channel&gt; channelClass;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  @Override<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  protected AsyncFSWAL createWAL() throws IOException {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    return new AsyncFSWAL(CommonFSUtils.getWALFileSystem(conf), CommonFSUtils.getWALRootDir(conf),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>        getWALDirectoryName(factory.factoryId),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>        getWALArchiveDirectoryName(conf, factory.factoryId), conf, listeners, true, logPrefix,<a name="line.70"></a>
-<span class="sourceLineNo">071</span>        META_WAL_PROVIDER_ID.equals(providerId) ? META_WAL_PROVIDER_ID : null,<a name="line.71"></a>
-<span class="sourceLineNo">072</span>        eventLoopGroup.next(), channelClass);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  @Override<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  protected void doInit(Configuration conf) throws IOException {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    Pair&lt;EventLoopGroup, Class&lt;? extends Channel&gt;&gt; eventLoopGroupAndChannelClass =<a name="line.77"></a>
-<span class="sourceLineNo">078</span>        NettyAsyncFSWALConfigHelper.getEventLoopConfig(conf);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    if (eventLoopGroupAndChannelClass != null) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      eventLoopGroup = eventLoopGroupAndChannelClass.getFirst();<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      channelClass = eventLoopGroupAndChannelClass.getSecond();<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    } else {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      eventLoopGroup = new NioEventLoopGroup(1,<a name="line.83"></a>
-<span class="sourceLineNo">084</span>          new DefaultThreadFactory("AsyncFSWAL", true, Thread.MAX_PRIORITY));<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      channelClass = NioSocketChannel.class;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * public because of AsyncFSWAL. Should be package-private<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static AsyncWriter createAsyncWriter(Configuration conf, FileSystem fs, Path path,<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      boolean overwritable, EventLoop eventLoop, Class&lt;? extends Channel&gt; channelClass)<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      throws IOException {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // Configuration already does caching for the Class lookup.<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    Class&lt;? extends AsyncWriter&gt; logWriterClass = conf.getClass(<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      "hbase.regionserver.hlog.async.writer.impl", AsyncProtobufLogWriter.class, AsyncWriter.class);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    try {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      AsyncWriter writer = logWriterClass.getConstructor(EventLoop.class, Class.class)<a name="line.99"></a>
-<span class="sourceLineNo">100</span>          .newInstance(eventLoop, channelClass);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      writer.init(fs, path, conf, overwritable);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      return writer;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    } catch (Exception e) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      if (e instanceof CommonFSUtils.StreamLacksCapabilityException) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        LOG.error("The RegionServer async write ahead log provider " +<a name="line.105"></a>
-<span class="sourceLineNo">106</span>            "relies on the ability to call " + e.getMessage() + " for proper operation during " +<a name="line.106"></a>
-<span class="sourceLineNo">107</span>            "component failures, but the current FileSystem does not support doing so. Please " +<a name="line.107"></a>
-<span class="sourceLineNo">108</span>            "check the config value of '" + CommonFSUtils.HBASE_WAL_DIR + "' and ensure " +<a name="line.108"></a>
-<span class="sourceLineNo">109</span>            "it points to a FileSystem mount that has suitable capabilities for output streams.");<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      } else {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        LOG.debug("Error instantiating log writer.", e);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Throwables.propagateIfPossible(e, IOException.class);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      throw new IOException("cannot get log writer", e);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>}<a name="line.117"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.EventLoopGroup;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.nio.NioEventLoopGroup;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.socket.nio.NioSocketChannel;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.shaded.io.netty.util.concurrent.DefaultThreadFactory;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>/**<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * A WAL provider that use {@link AsyncFSWAL}.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> */<a name="line.44"></a>
+<span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
+<span class="sourceLineNo">046</span>@InterfaceStability.Evolving<a name="line.46"></a>
+<span class="sourceLineNo">047</span>public class AsyncFSWALProvider extends AbstractFSWALProvider&lt;AsyncFSWAL&gt; {<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static final Log LOG = LogFactory.getLog(AsyncFSWALProvider.class);<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  // Only public so classes back in regionserver.wal can access<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public interface AsyncWriter extends WALProvider.AsyncWriter {<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    /**<a name="line.53"></a>
+<span class="sourceLineNo">054</span>     * @throws IOException if something goes wrong initializing an output stream<a name="line.54"></a>
+<span class="sourceLineNo">055</span>     * @throws StreamLacksCapabilityException if the given FileSystem can't provide streams that<a name="line.55"></a>
+<span class="sourceLineNo">056</span>     *         meet the needs of the given Writer implementation.<a name="line.56"></a>
+<span class="sourceLineNo">057</span>     */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    void init(FileSystem fs, Path path, Configuration c, boolean overwritable)<a name="line.58"></a>
+<span class="sourceLineNo">059</span>        throws IOException, CommonFSUtils.StreamLacksCapabilityException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private EventLoopGroup eventLoopGroup;<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private Class&lt;? extends Channel&gt; channelClass;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @Override<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  protected AsyncFSWAL createWAL() throws IOException {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    return new AsyncFSWAL(CommonFSUtils.getWALFileSystem(conf), CommonFSUtils.getWALRootDir(conf),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>        getWALDirectoryName(factory.factoryId),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        getWALArchiveDirectoryName(conf, factory.factoryId), conf, listeners, true, logPrefix,<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        META_WAL_PROVIDER_ID.equals(providerId) ? META_WAL_PROVIDER_ID : null,<a name="line.70"></a>
+<span class="sourceLineNo">071</span>        eventLoopGroup, channelClass);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  protected void doInit(Configuration conf) throws IOException {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    Pair&lt;EventLoopGroup, Class&lt;? extends Channel&gt;&gt; eventLoopGroupAndChannelClass =<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        NettyAsyncFSWALConfigHelper.getEventLoopConfig(conf);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    if (eventLoopGroupAndChannelClass != null) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      eventLoopGroup = eventLoopGroupAndChannelClass.getFirst();<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      channelClass = eventLoopGroupAndChannelClass.getSecond();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    } else {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      eventLoopGroup = new NioEventLoopGroup(1,<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          new DefaultThreadFactory("AsyncFSWAL", true, Thread.MAX_PRIORITY));<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      channelClass = NioSocketChannel.class;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  /**<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * public because of AsyncFSWAL. Should be package-private<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public static AsyncWriter createAsyncWriter(Configuration conf, FileSystem fs, Path path,<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      boolean overwritable, EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass)<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      throws IOException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    // Configuration already does caching for the Class lookup.<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    Class&lt;? extends AsyncWriter&gt; logWriterClass = conf.getClass(<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      "hbase.regionserver.hlog.async.writer.impl", AsyncProtobufLogWriter.class, AsyncWriter.class);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    try {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      AsyncWriter writer = logWriterClass.getConstructor(EventLoopGroup.class, Class.class)<a name="line.98"></a>
+<span class="sourceLineNo">099</span>          .newInstance(eventLoopGroup, channelClass);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      writer.init(fs, path, conf, overwritable);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return writer;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    } catch (Exception e) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      if (e instanceof CommonFSUtils.StreamLacksCapabilityException) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        LOG.error("The RegionServer async write ahead log provider " +<a name="line.104"></a>
+<span class="sourceLineNo">105</span>          "relies on the ability to call " + e.getMessage() + " for proper operation during " +<a name="line.105"></a>
+<span class="sourceLineNo">106</span>          "component failures, but the current FileSystem does not support doing so. Please " +<a name="line.106"></a>
+<span class="sourceLineNo">107</span>          "check the config value of '" + CommonFSUtils.HBASE_WAL_DIR + "' and ensure " +<a name="line.107"></a>
+<span class="sourceLineNo">108</span>          "it points to a FileSystem mount that has suitable capabilities for output streams.");<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      } else {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        LOG.debug("Error instantiating log writer.", e);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      Throwables.propagateIfPossible(e, IOException.class);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      throw new IOException("cannot get log writer", e);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
+<span class="sourceLineNo">116</span>}<a name="line.116"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/a5c4dca3/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.html b/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.html
index a7bc752..238fc0d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/wal/AsyncFSWALProvider.html
@@ -42,87 +42,86 @@
 <span class="sourceLineNo">034</span><a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.shaded.com.google.common.base.Throwables;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.Channel;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.EventLoop;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.EventLoopGroup;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.nio.NioEventLoopGroup;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.socket.nio.NioSocketChannel;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.shaded.io.netty.util.concurrent.DefaultThreadFactory;<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * A WAL provider that use {@link AsyncFSWAL}.<a name="line.44"></a>
-<span class="sourceLineNo">045</span> */<a name="line.45"></a>
-<span class="sourceLineNo">046</span>@InterfaceAudience.Private<a name="line.46"></a>
-<span class="sourceLineNo">047</span>@InterfaceStability.Evolving<a name="line.47"></a>
-<span class="sourceLineNo">048</span>public class AsyncFSWALProvider extends AbstractFSWALProvider&lt;AsyncFSWAL&gt; {<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  private static final Log LOG = LogFactory.getLog(AsyncFSWALProvider.class);<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  // Only public so classes back in regionserver.wal can access<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  public interface AsyncWriter extends WALProvider.AsyncWriter {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    /**<a name="line.54"></a>
-<span class="sourceLineNo">055</span>     * @throws IOException if something goes wrong initializing an output stream<a name="line.55"></a>
-<span class="sourceLineNo">056</span>     * @throws StreamLacksCapabilityException if the given FileSystem can't provide streams that<a name="line.56"></a>
-<span class="sourceLineNo">057</span>     *         meet the needs of the given Writer implementation.<a name="line.57"></a>
-<span class="sourceLineNo">058</span>     */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    void init(FileSystem fs, Path path, Configuration c, boolean overwritable)<a name="line.59"></a>
-<span class="sourceLineNo">060</span>        throws IOException, CommonFSUtils.StreamLacksCapabilityException;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  }<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private EventLoopGroup eventLoopGroup;<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private Class&lt;? extends Channel&gt; channelClass;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  @Override<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  protected AsyncFSWAL createWAL() throws IOException {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    return new AsyncFSWAL(CommonFSUtils.getWALFileSystem(conf), CommonFSUtils.getWALRootDir(conf),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>        getWALDirectoryName(factory.factoryId),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>        getWALArchiveDirectoryName(conf, factory.factoryId), conf, listeners, true, logPrefix,<a name="line.70"></a>
-<span class="sourceLineNo">071</span>        META_WAL_PROVIDER_ID.equals(providerId) ? META_WAL_PROVIDER_ID : null,<a name="line.71"></a>
-<span class="sourceLineNo">072</span>        eventLoopGroup.next(), channelClass);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  @Override<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  protected void doInit(Configuration conf) throws IOException {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    Pair&lt;EventLoopGroup, Class&lt;? extends Channel&gt;&gt; eventLoopGroupAndChannelClass =<a name="line.77"></a>
-<span class="sourceLineNo">078</span>        NettyAsyncFSWALConfigHelper.getEventLoopConfig(conf);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    if (eventLoopGroupAndChannelClass != null) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      eventLoopGroup = eventLoopGroupAndChannelClass.getFirst();<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      channelClass = eventLoopGroupAndChannelClass.getSecond();<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    } else {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      eventLoopGroup = new NioEventLoopGroup(1,<a name="line.83"></a>
-<span class="sourceLineNo">084</span>          new DefaultThreadFactory("AsyncFSWAL", true, Thread.MAX_PRIORITY));<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      channelClass = NioSocketChannel.class;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * public because of AsyncFSWAL. Should be package-private<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static AsyncWriter createAsyncWriter(Configuration conf, FileSystem fs, Path path,<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      boolean overwritable, EventLoop eventLoop, Class&lt;? extends Channel&gt; channelClass)<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      throws IOException {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // Configuration already does caching for the Class lookup.<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    Class&lt;? extends AsyncWriter&gt; logWriterClass = conf.getClass(<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      "hbase.regionserver.hlog.async.writer.impl", AsyncProtobufLogWriter.class, AsyncWriter.class);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    try {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      AsyncWriter writer = logWriterClass.getConstructor(EventLoop.class, Class.class)<a name="line.99"></a>
-<span class="sourceLineNo">100</span>          .newInstance(eventLoop, channelClass);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      writer.init(fs, path, conf, overwritable);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      return writer;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    } catch (Exception e) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      if (e instanceof CommonFSUtils.StreamLacksCapabilityException) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        LOG.error("The RegionServer async write ahead log provider " +<a name="line.105"></a>
-<span class="sourceLineNo">106</span>            "relies on the ability to call " + e.getMessage() + " for proper operation during " +<a name="line.106"></a>
-<span class="sourceLineNo">107</span>            "component failures, but the current FileSystem does not support doing so. Please " +<a name="line.107"></a>
-<span class="sourceLineNo">108</span>            "check the config value of '" + CommonFSUtils.HBASE_WAL_DIR + "' and ensure " +<a name="line.108"></a>
-<span class="sourceLineNo">109</span>            "it points to a FileSystem mount that has suitable capabilities for output streams.");<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      } else {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        LOG.debug("Error instantiating log writer.", e);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      Throwables.propagateIfPossible(e, IOException.class);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      throw new IOException("cannot get log writer", e);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>}<a name="line.117"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.EventLoopGroup;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.nio.NioEventLoopGroup;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.shaded.io.netty.channel.socket.nio.NioSocketChannel;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.shaded.io.netty.util.concurrent.DefaultThreadFactory;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>/**<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * A WAL provider that use {@link AsyncFSWAL}.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> */<a name="line.44"></a>
+<span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
+<span class="sourceLineNo">046</span>@InterfaceStability.Evolving<a name="line.46"></a>
+<span class="sourceLineNo">047</span>public class AsyncFSWALProvider extends AbstractFSWALProvider&lt;AsyncFSWAL&gt; {<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static final Log LOG = LogFactory.getLog(AsyncFSWALProvider.class);<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  // Only public so classes back in regionserver.wal can access<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public interface AsyncWriter extends WALProvider.AsyncWriter {<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    /**<a name="line.53"></a>
+<span class="sourceLineNo">054</span>     * @throws IOException if something goes wrong initializing an output stream<a name="line.54"></a>
+<span class="sourceLineNo">055</span>     * @throws StreamLacksCapabilityException if the given FileSystem can't provide streams that<a name="line.55"></a>
+<span class="sourceLineNo">056</span>     *         meet the needs of the given Writer implementation.<a name="line.56"></a>
+<span class="sourceLineNo">057</span>     */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    void init(FileSystem fs, Path path, Configuration c, boolean overwritable)<a name="line.58"></a>
+<span class="sourceLineNo">059</span>        throws IOException, CommonFSUtils.StreamLacksCapabilityException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private EventLoopGroup eventLoopGroup;<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private Class&lt;? extends Channel&gt; channelClass;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @Override<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  protected AsyncFSWAL createWAL() throws IOException {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    return new AsyncFSWAL(CommonFSUtils.getWALFileSystem(conf), CommonFSUtils.getWALRootDir(conf),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>        getWALDirectoryName(factory.factoryId),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        getWALArchiveDirectoryName(conf, factory.factoryId), conf, listeners, true, logPrefix,<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        META_WAL_PROVIDER_ID.equals(providerId) ? META_WAL_PROVIDER_ID : null,<a name="line.70"></a>
+<span class="sourceLineNo">071</span>        eventLoopGroup, channelClass);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  protected void doInit(Configuration conf) throws IOException {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    Pair&lt;EventLoopGroup, Class&lt;? extends Channel&gt;&gt; eventLoopGroupAndChannelClass =<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        NettyAsyncFSWALConfigHelper.getEventLoopConfig(conf);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    if (eventLoopGroupAndChannelClass != null) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      eventLoopGroup = eventLoopGroupAndChannelClass.getFirst();<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      channelClass = eventLoopGroupAndChannelClass.getSecond();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    } else {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      eventLoopGroup = new NioEventLoopGroup(1,<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          new DefaultThreadFactory("AsyncFSWAL", true, Thread.MAX_PRIORITY));<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      channelClass = NioSocketChannel.class;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  /**<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * public because of AsyncFSWAL. Should be package-private<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public static AsyncWriter createAsyncWriter(Configuration conf, FileSystem fs, Path path,<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      boolean overwritable, EventLoopGroup eventLoopGroup, Class&lt;? extends Channel&gt; channelClass)<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      throws IOException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    // Configuration already does caching for the Class lookup.<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    Class&lt;? extends AsyncWriter&gt; logWriterClass = conf.getClass(<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      "hbase.regionserver.hlog.async.writer.impl", AsyncProtobufLogWriter.class, AsyncWriter.class);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    try {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      AsyncWriter writer = logWriterClass.getConstructor(EventLoopGroup.class, Class.class)<a name="line.98"></a>
+<span class="sourceLineNo">099</span>          .newInstance(eventLoopGroup, channelClass);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      writer.init(fs, path, conf, overwritable);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return writer;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    } catch (Exception e) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      if (e instanceof CommonFSUtils.StreamLacksCapabilityException) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        LOG.error("The RegionServer async write ahead log provider " +<a name="line.104"></a>
+<span class="sourceLineNo">105</span>          "relies on the ability to call " + e.getMessage() + " for proper operation during " +<a name="line.105"></a>
+<span class="sourceLineNo">106</span>          "component failures, but the current FileSystem does not support doing so. Please " +<a name="line.106"></a>
+<span class="sourceLineNo">107</span>          "check the config value of '" + CommonFSUtils.HBASE_WAL_DIR + "' and ensure " +<a name="line.107"></a>
+<span class="sourceLineNo">108</span>          "it points to a FileSystem mount that has suitable capabilities for output streams.");<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      } else {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        LOG.debug("Error instantiating log writer.", e);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      Throwables.propagateIfPossible(e, IOException.class);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      throw new IOException("cannot get log writer", e);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
+<span class="sourceLineNo">116</span>}<a name="line.116"></a>
 
 
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/a5c4dca3/hbase-annotations/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.html b/hbase-annotations/checkstyle.html
index 48c0b1a..c8e5c98 100644
--- a/hbase-annotations/checkstyle.html
+++ b/hbase-annotations/checkstyle.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171130" />
+    <meta name="Date-Revision-yyyymmdd" content="20171201" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -178,7 +178,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-11-30</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-01</li>
             </p>
                 </div>
 

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

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

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

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

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

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/a5c4dca3/hbase-annotations/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-reports.html b/hbase-annotations/project-reports.html
index f12c01b..e35d890 100644
--- a/hbase-annotations/project-reports.html
+++ b/hbase-annotations/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20171130" />
+    <meta name="Date-Revision-yyyymmdd" content="20171201" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-11-30</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-01</li>
             </p>
                 </div>
 

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