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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> ctx,<a name="line.2693"></a> +<span class="sourceLineNo">2694</span> Set<Address> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> ctx,<a name="line.2705"></a> +<span class="sourceLineNo">2705</span> public void preRemoveReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> ctx,<a name="line.2711"></a> +<span class="sourceLineNo">2711</span> public void preEnableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> ctx,<a name="line.2717"></a> +<span class="sourceLineNo">2717</span> public void preDisableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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 && !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 && regionInfos.length > 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<MasterCoprocessorEnvironment> 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 && !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 && regionInfos.length > 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> ctx,<a name="line.2693"></a> +<span class="sourceLineNo">2694</span> Set<Address> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> ctx,<a name="line.2705"></a> +<span class="sourceLineNo">2705</span> public void preRemoveReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> ctx,<a name="line.2711"></a> +<span class="sourceLineNo">2711</span> public void preEnableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> ctx,<a name="line.2717"></a> +<span class="sourceLineNo">2717</span> public void preDisableReplicationPeer(final ObserverContext<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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<MasterCoprocessorEnvironment> 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 && !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 && regionInfos.length > 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<MasterCoprocessorEnvironment> 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 && !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 && regionInfos.length > 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<AsyncFSWAL> {<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<? extends Channel> 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<EventLoopGroup, Class<? extends Channel>> 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<? extends Channel> 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<? extends AsyncWriter> 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<AsyncFSWAL> {<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<? extends Channel> 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<EventLoopGroup, Class<? extends Channel>> 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<? extends Channel> 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<? extends AsyncWriter> 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<AsyncFSWAL> {<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<? extends Channel> 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<EventLoopGroup, Class<? extends Channel>> 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<? extends Channel> 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<? extends AsyncWriter> 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<AsyncFSWAL> {<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<? extends Channel> 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<EventLoopGroup, Class<? extends Channel>> 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<? extends Channel> 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<? extends AsyncWriter> 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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 – 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>
