hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From git-site-r...@apache.org
Subject [16/30] hbase-site git commit: Published site at .
Date Mon, 18 Sep 2017 15:13:23 GMT
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/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 d3c7efb..92c2266 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
@@ -2583,206 +2583,179 @@
 <span class="sourceLineNo">2575</span>  }<a name="line.2575"></a>
 <span class="sourceLineNo">2576</span><a name="line.2576"></a>
 <span class="sourceLineNo">2577</span>  @Override<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  public void preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, Region regionA,<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>      Region regionB) throws IOException {<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    requirePermission(getActiveUser(ctx), "mergeRegions", regionA.getTableDescriptor().getTableName(),<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>        null, null, Action.ADMIN);<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>  }<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span><a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>  @Override<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>  public void postMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; c, Region regionA,<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>      Region regionB, Region mergedRegion) throws IOException { }<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span><a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>  @Override<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  public void preMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>      Region regionA, Region regionB, List&lt;Mutation&gt; metaEntries) throws IOException { }<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span><a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>  @Override<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>  public void postMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>      Region regionA, Region regionB, Region mergedRegion) throws IOException { }<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span><a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>  @Override<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>  public void preRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      Region regionA, Region regionB) throws IOException { }<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span><a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>  @Override<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  public void postRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      Region regionA, Region regionB) throws IOException { }<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span><a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>  @Override<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>  public void preRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      throws IOException {<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>    requirePermission(getActiveUser(ctx), "preRollLogWriterRequest", Permission.Action.ADMIN);<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>  }<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span><a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>  @Override<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>  public void postRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>      throws IOException { }<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span><a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>  @Override<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>      final String userName, final Quotas quotas) throws IOException {<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>    requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>  }<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span><a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>  @Override<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>      final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>    requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>  }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span><a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  @Override<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>    requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>  }<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span><a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>  @Override<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>  public void preSetTableQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>    requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>  }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span><a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>  @Override<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>  public void preSetNamespaceQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      final String namespace, final Quotas quotas) throws IOException {<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>    requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>  }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span><a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>  @Override<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>    return endpoint;<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  }<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span><a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  @Override<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>  public void preReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>    requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>  }<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span><a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>  @Override<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>  public void postReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>  }<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>  @Override<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>  public void  preClearCompactionQueues(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>          throws IOException {<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>    requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>  }<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>  @Override<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>  public void preMoveServersAndTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>      Set&lt;Address&gt; servers, Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>    requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span>  }<a name="line.2671"></a>
-<span class="sourceLineNo">2672</span><a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>  @Override<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span>  public void preMoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>                             Set&lt;Address&gt; servers, String targetGroup) throws IOException {<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>  }<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span><a name="line.2678"></a>
-<span class="sourceLineNo">2679</span>  @Override<a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>  public void preMoveTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>                            Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>    requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>  }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>  @Override<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>  public void preAddRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span>                            String name) throws IOException {<a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>  }<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span><a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>  @Override<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>  public void preRemoveRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>                               String name) throws IOException {<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>  }<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span><a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>  @Override<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>  public void preBalanceRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>                                String groupName) throws IOException {<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>    requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>  }<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span><a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>  @Override<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>  }<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span><a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>  @Override<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>      String peerId) throws IOException {<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>  }<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span><a name="line.2714"></a>
-<span class="sourceLineNo">2715</span>  @Override<a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>      String peerId) throws IOException {<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>  }<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span><a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @Override<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>      String peerId) throws IOException {<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>  }<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span><a name="line.2726"></a>
-<span class="sourceLineNo">2727</span>  @Override<a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>      String peerId) throws IOException {<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span>  }<a name="line.2731"></a>
-<span class="sourceLineNo">2732</span><a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  @Override<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>  public void preUpdateReplicationPeerConfig(<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  }<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span><a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>  @Override<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span>      String regex) throws IOException {<a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>  }<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span><a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>  @Override<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      TableName tableName, HRegionInfo[] regionInfos, LockType type, String description)<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>  throws IOException {<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>    String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>  }<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span><a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>  @Override<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>    checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<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, HRegionInfo[] 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>
+<span class="sourceLineNo">2578</span>  public void preRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2578"></a>
+<span class="sourceLineNo">2579</span>      throws IOException {<a name="line.2579"></a>
+<span class="sourceLineNo">2580</span>    requirePermission(getActiveUser(ctx), "preRollLogWriterRequest", Permission.Action.ADMIN);<a name="line.2580"></a>
+<span class="sourceLineNo">2581</span>  }<a name="line.2581"></a>
+<span class="sourceLineNo">2582</span><a name="line.2582"></a>
+<span class="sourceLineNo">2583</span>  @Override<a name="line.2583"></a>
+<span class="sourceLineNo">2584</span>  public void postRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2584"></a>
+<span class="sourceLineNo">2585</span>      throws IOException { }<a name="line.2585"></a>
+<span class="sourceLineNo">2586</span><a name="line.2586"></a>
+<span class="sourceLineNo">2587</span>  @Override<a name="line.2587"></a>
+<span class="sourceLineNo">2588</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2588"></a>
+<span class="sourceLineNo">2589</span>      final String userName, final Quotas quotas) throws IOException {<a name="line.2589"></a>
+<span class="sourceLineNo">2590</span>    requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2590"></a>
+<span class="sourceLineNo">2591</span>  }<a name="line.2591"></a>
+<span class="sourceLineNo">2592</span><a name="line.2592"></a>
+<span class="sourceLineNo">2593</span>  @Override<a name="line.2593"></a>
+<span class="sourceLineNo">2594</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2594"></a>
+<span class="sourceLineNo">2595</span>      final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2595"></a>
+<span class="sourceLineNo">2596</span>    requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2596"></a>
+<span class="sourceLineNo">2597</span>  }<a name="line.2597"></a>
+<span class="sourceLineNo">2598</span><a name="line.2598"></a>
+<span class="sourceLineNo">2599</span>  @Override<a name="line.2599"></a>
+<span class="sourceLineNo">2600</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2600"></a>
+<span class="sourceLineNo">2601</span>      final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2601"></a>
+<span class="sourceLineNo">2602</span>    requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2602"></a>
+<span class="sourceLineNo">2603</span>  }<a name="line.2603"></a>
+<span class="sourceLineNo">2604</span><a name="line.2604"></a>
+<span class="sourceLineNo">2605</span>  @Override<a name="line.2605"></a>
+<span class="sourceLineNo">2606</span>  public void preSetTableQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2606"></a>
+<span class="sourceLineNo">2607</span>      final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2607"></a>
+<span class="sourceLineNo">2608</span>    requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2608"></a>
+<span class="sourceLineNo">2609</span>  }<a name="line.2609"></a>
+<span class="sourceLineNo">2610</span><a name="line.2610"></a>
+<span class="sourceLineNo">2611</span>  @Override<a name="line.2611"></a>
+<span class="sourceLineNo">2612</span>  public void preSetNamespaceQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2612"></a>
+<span class="sourceLineNo">2613</span>      final String namespace, final Quotas quotas) throws IOException {<a name="line.2613"></a>
+<span class="sourceLineNo">2614</span>    requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2614"></a>
+<span class="sourceLineNo">2615</span>  }<a name="line.2615"></a>
+<span class="sourceLineNo">2616</span><a name="line.2616"></a>
+<span class="sourceLineNo">2617</span>  @Override<a name="line.2617"></a>
+<span class="sourceLineNo">2618</span>  public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2618"></a>
+<span class="sourceLineNo">2619</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.2619"></a>
+<span class="sourceLineNo">2620</span>    return endpoint;<a name="line.2620"></a>
+<span class="sourceLineNo">2621</span>  }<a name="line.2621"></a>
+<span class="sourceLineNo">2622</span><a name="line.2622"></a>
+<span class="sourceLineNo">2623</span>  @Override<a name="line.2623"></a>
+<span class="sourceLineNo">2624</span>  public void preReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2624"></a>
+<span class="sourceLineNo">2625</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2625"></a>
+<span class="sourceLineNo">2626</span>    requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2626"></a>
+<span class="sourceLineNo">2627</span>  }<a name="line.2627"></a>
+<span class="sourceLineNo">2628</span><a name="line.2628"></a>
+<span class="sourceLineNo">2629</span>  @Override<a name="line.2629"></a>
+<span class="sourceLineNo">2630</span>  public void postReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2630"></a>
+<span class="sourceLineNo">2631</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2631"></a>
+<span class="sourceLineNo">2632</span>  }<a name="line.2632"></a>
+<span class="sourceLineNo">2633</span><a name="line.2633"></a>
+<span class="sourceLineNo">2634</span>  @Override<a name="line.2634"></a>
+<span class="sourceLineNo">2635</span>  public void  preClearCompactionQueues(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2635"></a>
+<span class="sourceLineNo">2636</span>          throws IOException {<a name="line.2636"></a>
+<span class="sourceLineNo">2637</span>    requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2637"></a>
+<span class="sourceLineNo">2638</span>  }<a name="line.2638"></a>
+<span class="sourceLineNo">2639</span><a name="line.2639"></a>
+<span class="sourceLineNo">2640</span>  @Override<a name="line.2640"></a>
+<span class="sourceLineNo">2641</span>  public void preMoveServersAndTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2641"></a>
+<span class="sourceLineNo">2642</span>      Set&lt;Address&gt; servers, Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2642"></a>
+<span class="sourceLineNo">2643</span>    requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2643"></a>
+<span class="sourceLineNo">2644</span>  }<a name="line.2644"></a>
+<span class="sourceLineNo">2645</span><a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>  @Override<a name="line.2646"></a>
+<span class="sourceLineNo">2647</span>  public void preMoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2647"></a>
+<span class="sourceLineNo">2648</span>                             Set&lt;Address&gt; servers, String targetGroup) throws IOException {<a name="line.2648"></a>
+<span class="sourceLineNo">2649</span>    requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2649"></a>
+<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
+<span class="sourceLineNo">2651</span><a name="line.2651"></a>
+<span class="sourceLineNo">2652</span>  @Override<a name="line.2652"></a>
+<span class="sourceLineNo">2653</span>  public void preMoveTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2653"></a>
+<span class="sourceLineNo">2654</span>                            Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2654"></a>
+<span class="sourceLineNo">2655</span>    requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2655"></a>
+<span class="sourceLineNo">2656</span>  }<a name="line.2656"></a>
+<span class="sourceLineNo">2657</span><a name="line.2657"></a>
+<span class="sourceLineNo">2658</span>  @Override<a name="line.2658"></a>
+<span class="sourceLineNo">2659</span>  public void preAddRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2659"></a>
+<span class="sourceLineNo">2660</span>                            String name) throws IOException {<a name="line.2660"></a>
+<span class="sourceLineNo">2661</span>    requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>  }<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span><a name="line.2663"></a>
+<span class="sourceLineNo">2664</span>  @Override<a name="line.2664"></a>
+<span class="sourceLineNo">2665</span>  public void preRemoveRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2665"></a>
+<span class="sourceLineNo">2666</span>                               String name) throws IOException {<a name="line.2666"></a>
+<span class="sourceLineNo">2667</span>    requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2667"></a>
+<span class="sourceLineNo">2668</span>  }<a name="line.2668"></a>
+<span class="sourceLineNo">2669</span><a name="line.2669"></a>
+<span class="sourceLineNo">2670</span>  @Override<a name="line.2670"></a>
+<span class="sourceLineNo">2671</span>  public void preBalanceRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2671"></a>
+<span class="sourceLineNo">2672</span>                                String groupName) throws IOException {<a name="line.2672"></a>
+<span class="sourceLineNo">2673</span>    requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2673"></a>
+<span class="sourceLineNo">2674</span>  }<a name="line.2674"></a>
+<span class="sourceLineNo">2675</span><a name="line.2675"></a>
+<span class="sourceLineNo">2676</span>  @Override<a name="line.2676"></a>
+<span class="sourceLineNo">2677</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2677"></a>
+<span class="sourceLineNo">2678</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2678"></a>
+<span class="sourceLineNo">2679</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2679"></a>
+<span class="sourceLineNo">2680</span>  }<a name="line.2680"></a>
+<span class="sourceLineNo">2681</span><a name="line.2681"></a>
+<span class="sourceLineNo">2682</span>  @Override<a name="line.2682"></a>
+<span class="sourceLineNo">2683</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2683"></a>
+<span class="sourceLineNo">2684</span>      String peerId) throws IOException {<a name="line.2684"></a>
+<span class="sourceLineNo">2685</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2685"></a>
+<span class="sourceLineNo">2686</span>  }<a name="line.2686"></a>
+<span class="sourceLineNo">2687</span><a name="line.2687"></a>
+<span class="sourceLineNo">2688</span>  @Override<a name="line.2688"></a>
+<span class="sourceLineNo">2689</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2689"></a>
+<span class="sourceLineNo">2690</span>      String peerId) throws IOException {<a name="line.2690"></a>
+<span class="sourceLineNo">2691</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2691"></a>
+<span class="sourceLineNo">2692</span>  }<a name="line.2692"></a>
+<span class="sourceLineNo">2693</span><a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>  @Override<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2695"></a>
+<span class="sourceLineNo">2696</span>      String peerId) throws IOException {<a name="line.2696"></a>
+<span class="sourceLineNo">2697</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2697"></a>
+<span class="sourceLineNo">2698</span>  }<a name="line.2698"></a>
+<span class="sourceLineNo">2699</span><a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>  @Override<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2701"></a>
+<span class="sourceLineNo">2702</span>      String peerId) throws IOException {<a name="line.2702"></a>
+<span class="sourceLineNo">2703</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2703"></a>
+<span class="sourceLineNo">2704</span>  }<a name="line.2704"></a>
+<span class="sourceLineNo">2705</span><a name="line.2705"></a>
+<span class="sourceLineNo">2706</span>  @Override<a name="line.2706"></a>
+<span class="sourceLineNo">2707</span>  public void preUpdateReplicationPeerConfig(<a name="line.2707"></a>
+<span class="sourceLineNo">2708</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2708"></a>
+<span class="sourceLineNo">2709</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2709"></a>
+<span class="sourceLineNo">2710</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2710"></a>
+<span class="sourceLineNo">2711</span>  }<a name="line.2711"></a>
+<span class="sourceLineNo">2712</span><a name="line.2712"></a>
+<span class="sourceLineNo">2713</span>  @Override<a name="line.2713"></a>
+<span class="sourceLineNo">2714</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2714"></a>
+<span class="sourceLineNo">2715</span>      String regex) throws IOException {<a name="line.2715"></a>
+<span class="sourceLineNo">2716</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2716"></a>
+<span class="sourceLineNo">2717</span>  }<a name="line.2717"></a>
+<span class="sourceLineNo">2718</span><a name="line.2718"></a>
+<span class="sourceLineNo">2719</span>  @Override<a name="line.2719"></a>
+<span class="sourceLineNo">2720</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2720"></a>
+<span class="sourceLineNo">2721</span>      TableName tableName, HRegionInfo[] regionInfos, LockType type, String description)<a name="line.2721"></a>
+<span class="sourceLineNo">2722</span>  throws IOException {<a name="line.2722"></a>
+<span class="sourceLineNo">2723</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>    String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<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 preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>      LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span>    String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2732"></a>
+<span class="sourceLineNo">2733</span>    checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2733"></a>
+<span class="sourceLineNo">2734</span>  }<a name="line.2734"></a>
+<span class="sourceLineNo">2735</span><a name="line.2735"></a>
+<span class="sourceLineNo">2736</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2736"></a>
+<span class="sourceLineNo">2737</span>      TableName tableName, HRegionInfo[] regionInfos, String reason)<a name="line.2737"></a>
+<span class="sourceLineNo">2738</span>  throws IOException {<a name="line.2738"></a>
+<span class="sourceLineNo">2739</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2739"></a>
+<span class="sourceLineNo">2740</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2740"></a>
+<span class="sourceLineNo">2741</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2741"></a>
+<span class="sourceLineNo">2742</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2742"></a>
+<span class="sourceLineNo">2743</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2743"></a>
+<span class="sourceLineNo">2744</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2744"></a>
+<span class="sourceLineNo">2745</span>          Action.ADMIN, Action.CREATE);<a name="line.2745"></a>
+<span class="sourceLineNo">2746</span>    } else {<a name="line.2746"></a>
+<span class="sourceLineNo">2747</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2747"></a>
+<span class="sourceLineNo">2748</span>    }<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/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 d3c7efb..92c2266 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
@@ -2583,206 +2583,179 @@
 <span class="sourceLineNo">2575</span>  }<a name="line.2575"></a>
 <span class="sourceLineNo">2576</span><a name="line.2576"></a>
 <span class="sourceLineNo">2577</span>  @Override<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  public void preMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, Region regionA,<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>      Region regionB) throws IOException {<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    requirePermission(getActiveUser(ctx), "mergeRegions", regionA.getTableDescriptor().getTableName(),<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>        null, null, Action.ADMIN);<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>  }<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span><a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>  @Override<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>  public void postMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; c, Region regionA,<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>      Region regionB, Region mergedRegion) throws IOException { }<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span><a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>  @Override<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>  public void preMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>      Region regionA, Region regionB, List&lt;Mutation&gt; metaEntries) throws IOException { }<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span><a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>  @Override<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>  public void postMergeCommit(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>      Region regionA, Region regionB, Region mergedRegion) throws IOException { }<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span><a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>  @Override<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>  public void preRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      Region regionA, Region regionB) throws IOException { }<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span><a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>  @Override<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  public void postRollBackMerge(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      Region regionA, Region regionB) throws IOException { }<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span><a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>  @Override<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>  public void preRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      throws IOException {<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>    requirePermission(getActiveUser(ctx), "preRollLogWriterRequest", Permission.Action.ADMIN);<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>  }<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span><a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>  @Override<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>  public void postRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>      throws IOException { }<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span><a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>  @Override<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>      final String userName, final Quotas quotas) throws IOException {<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>    requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>  }<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span><a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>  @Override<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>      final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>    requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>  }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span><a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>  @Override<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>    requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>  }<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span><a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>  @Override<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>  public void preSetTableQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>      final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>    requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>  }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span><a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>  @Override<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>  public void preSetNamespaceQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      final String namespace, final Quotas quotas) throws IOException {<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>    requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>  }<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span><a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>  @Override<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>  public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>    return endpoint;<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>  }<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span><a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>  @Override<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>  public void preReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>    requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>  }<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span><a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>  @Override<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>  public void postReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>  }<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>  @Override<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>  public void  preClearCompactionQueues(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>          throws IOException {<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>    requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>  }<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>  @Override<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>  public void preMoveServersAndTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>      Set&lt;Address&gt; servers, Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>    requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span>  }<a name="line.2671"></a>
-<span class="sourceLineNo">2672</span><a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>  @Override<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span>  public void preMoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>                             Set&lt;Address&gt; servers, String targetGroup) throws IOException {<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>  }<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span><a name="line.2678"></a>
-<span class="sourceLineNo">2679</span>  @Override<a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>  public void preMoveTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>                            Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>    requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>  }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>  @Override<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>  public void preAddRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span>                            String name) throws IOException {<a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>  }<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span><a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>  @Override<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>  public void preRemoveRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>                               String name) throws IOException {<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>  }<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span><a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>  @Override<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>  public void preBalanceRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>                                String groupName) throws IOException {<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>    requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>  }<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span><a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>  @Override<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>  }<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span><a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>  @Override<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>      String peerId) throws IOException {<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>  }<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span><a name="line.2714"></a>
-<span class="sourceLineNo">2715</span>  @Override<a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>      String peerId) throws IOException {<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>  }<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span><a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @Override<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>      String peerId) throws IOException {<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>  }<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span><a name="line.2726"></a>
-<span class="sourceLineNo">2727</span>  @Override<a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>      String peerId) throws IOException {<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span>  }<a name="line.2731"></a>
-<span class="sourceLineNo">2732</span><a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  @Override<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>  public void preUpdateReplicationPeerConfig(<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  }<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span><a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>  @Override<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span>      String regex) throws IOException {<a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>  }<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span><a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>  @Override<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      TableName tableName, HRegionInfo[] regionInfos, LockType type, String description)<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>  throws IOException {<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>    String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>  }<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span><a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>  @Override<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>  public void preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>    checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<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, HRegionInfo[] 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>
+<span class="sourceLineNo">2578</span>  public void preRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2578"></a>
+<span class="sourceLineNo">2579</span>      throws IOException {<a name="line.2579"></a>
+<span class="sourceLineNo">2580</span>    requirePermission(getActiveUser(ctx), "preRollLogWriterRequest", Permission.Action.ADMIN);<a name="line.2580"></a>
+<span class="sourceLineNo">2581</span>  }<a name="line.2581"></a>
+<span class="sourceLineNo">2582</span><a name="line.2582"></a>
+<span class="sourceLineNo">2583</span>  @Override<a name="line.2583"></a>
+<span class="sourceLineNo">2584</span>  public void postRollWALWriterRequest(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2584"></a>
+<span class="sourceLineNo">2585</span>      throws IOException { }<a name="line.2585"></a>
+<span class="sourceLineNo">2586</span><a name="line.2586"></a>
+<span class="sourceLineNo">2587</span>  @Override<a name="line.2587"></a>
+<span class="sourceLineNo">2588</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2588"></a>
+<span class="sourceLineNo">2589</span>      final String userName, final Quotas quotas) throws IOException {<a name="line.2589"></a>
+<span class="sourceLineNo">2590</span>    requirePermission(getActiveUser(ctx), "setUserQuota", Action.ADMIN);<a name="line.2590"></a>
+<span class="sourceLineNo">2591</span>  }<a name="line.2591"></a>
+<span class="sourceLineNo">2592</span><a name="line.2592"></a>
+<span class="sourceLineNo">2593</span>  @Override<a name="line.2593"></a>
+<span class="sourceLineNo">2594</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2594"></a>
+<span class="sourceLineNo">2595</span>      final String userName, final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2595"></a>
+<span class="sourceLineNo">2596</span>    requirePermission(getActiveUser(ctx), "setUserTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2596"></a>
+<span class="sourceLineNo">2597</span>  }<a name="line.2597"></a>
+<span class="sourceLineNo">2598</span><a name="line.2598"></a>
+<span class="sourceLineNo">2599</span>  @Override<a name="line.2599"></a>
+<span class="sourceLineNo">2600</span>  public void preSetUserQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2600"></a>
+<span class="sourceLineNo">2601</span>      final String userName, final String namespace, final Quotas quotas) throws IOException {<a name="line.2601"></a>
+<span class="sourceLineNo">2602</span>    requirePermission(getActiveUser(ctx), "setUserNamespaceQuota", Action.ADMIN);<a name="line.2602"></a>
+<span class="sourceLineNo">2603</span>  }<a name="line.2603"></a>
+<span class="sourceLineNo">2604</span><a name="line.2604"></a>
+<span class="sourceLineNo">2605</span>  @Override<a name="line.2605"></a>
+<span class="sourceLineNo">2606</span>  public void preSetTableQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2606"></a>
+<span class="sourceLineNo">2607</span>      final TableName tableName, final Quotas quotas) throws IOException {<a name="line.2607"></a>
+<span class="sourceLineNo">2608</span>    requirePermission(getActiveUser(ctx), "setTableQuota", tableName, null, null, Action.ADMIN);<a name="line.2608"></a>
+<span class="sourceLineNo">2609</span>  }<a name="line.2609"></a>
+<span class="sourceLineNo">2610</span><a name="line.2610"></a>
+<span class="sourceLineNo">2611</span>  @Override<a name="line.2611"></a>
+<span class="sourceLineNo">2612</span>  public void preSetNamespaceQuota(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2612"></a>
+<span class="sourceLineNo">2613</span>      final String namespace, final Quotas quotas) throws IOException {<a name="line.2613"></a>
+<span class="sourceLineNo">2614</span>    requirePermission(getActiveUser(ctx), "setNamespaceQuota", Action.ADMIN);<a name="line.2614"></a>
+<span class="sourceLineNo">2615</span>  }<a name="line.2615"></a>
+<span class="sourceLineNo">2616</span><a name="line.2616"></a>
+<span class="sourceLineNo">2617</span>  @Override<a name="line.2617"></a>
+<span class="sourceLineNo">2618</span>  public ReplicationEndpoint postCreateReplicationEndPoint(<a name="line.2618"></a>
+<span class="sourceLineNo">2619</span>      ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx, ReplicationEndpoint endpoint) {<a name="line.2619"></a>
+<span class="sourceLineNo">2620</span>    return endpoint;<a name="line.2620"></a>
+<span class="sourceLineNo">2621</span>  }<a name="line.2621"></a>
+<span class="sourceLineNo">2622</span><a name="line.2622"></a>
+<span class="sourceLineNo">2623</span>  @Override<a name="line.2623"></a>
+<span class="sourceLineNo">2624</span>  public void preReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2624"></a>
+<span class="sourceLineNo">2625</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2625"></a>
+<span class="sourceLineNo">2626</span>    requirePermission(getActiveUser(ctx), "replicateLogEntries", Action.WRITE);<a name="line.2626"></a>
+<span class="sourceLineNo">2627</span>  }<a name="line.2627"></a>
+<span class="sourceLineNo">2628</span><a name="line.2628"></a>
+<span class="sourceLineNo">2629</span>  @Override<a name="line.2629"></a>
+<span class="sourceLineNo">2630</span>  public void postReplicateLogEntries(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx,<a name="line.2630"></a>
+<span class="sourceLineNo">2631</span>      List&lt;WALEntry&gt; entries, CellScanner cells) throws IOException {<a name="line.2631"></a>
+<span class="sourceLineNo">2632</span>  }<a name="line.2632"></a>
+<span class="sourceLineNo">2633</span><a name="line.2633"></a>
+<span class="sourceLineNo">2634</span>  @Override<a name="line.2634"></a>
+<span class="sourceLineNo">2635</span>  public void  preClearCompactionQueues(ObserverContext&lt;RegionServerCoprocessorEnvironment&gt; ctx)<a name="line.2635"></a>
+<span class="sourceLineNo">2636</span>          throws IOException {<a name="line.2636"></a>
+<span class="sourceLineNo">2637</span>    requirePermission(getActiveUser(ctx), "preClearCompactionQueues", Permission.Action.ADMIN);<a name="line.2637"></a>
+<span class="sourceLineNo">2638</span>  }<a name="line.2638"></a>
+<span class="sourceLineNo">2639</span><a name="line.2639"></a>
+<span class="sourceLineNo">2640</span>  @Override<a name="line.2640"></a>
+<span class="sourceLineNo">2641</span>  public void preMoveServersAndTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2641"></a>
+<span class="sourceLineNo">2642</span>      Set&lt;Address&gt; servers, Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2642"></a>
+<span class="sourceLineNo">2643</span>    requirePermission(getActiveUser(ctx), "moveServersAndTables", Action.ADMIN);<a name="line.2643"></a>
+<span class="sourceLineNo">2644</span>  }<a name="line.2644"></a>
+<span class="sourceLineNo">2645</span><a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>  @Override<a name="line.2646"></a>
+<span class="sourceLineNo">2647</span>  public void preMoveServers(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2647"></a>
+<span class="sourceLineNo">2648</span>                             Set&lt;Address&gt; servers, String targetGroup) throws IOException {<a name="line.2648"></a>
+<span class="sourceLineNo">2649</span>    requirePermission(getActiveUser(ctx), "moveServers", Action.ADMIN);<a name="line.2649"></a>
+<span class="sourceLineNo">2650</span>  }<a name="line.2650"></a>
+<span class="sourceLineNo">2651</span><a name="line.2651"></a>
+<span class="sourceLineNo">2652</span>  @Override<a name="line.2652"></a>
+<span class="sourceLineNo">2653</span>  public void preMoveTables(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2653"></a>
+<span class="sourceLineNo">2654</span>                            Set&lt;TableName&gt; tables, String targetGroup) throws IOException {<a name="line.2654"></a>
+<span class="sourceLineNo">2655</span>    requirePermission(getActiveUser(ctx), "moveTables", Action.ADMIN);<a name="line.2655"></a>
+<span class="sourceLineNo">2656</span>  }<a name="line.2656"></a>
+<span class="sourceLineNo">2657</span><a name="line.2657"></a>
+<span class="sourceLineNo">2658</span>  @Override<a name="line.2658"></a>
+<span class="sourceLineNo">2659</span>  public void preAddRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2659"></a>
+<span class="sourceLineNo">2660</span>                            String name) throws IOException {<a name="line.2660"></a>
+<span class="sourceLineNo">2661</span>    requirePermission(getActiveUser(ctx), "addRSGroup", Action.ADMIN);<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>  }<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span><a name="line.2663"></a>
+<span class="sourceLineNo">2664</span>  @Override<a name="line.2664"></a>
+<span class="sourceLineNo">2665</span>  public void preRemoveRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2665"></a>
+<span class="sourceLineNo">2666</span>                               String name) throws IOException {<a name="line.2666"></a>
+<span class="sourceLineNo">2667</span>    requirePermission(getActiveUser(ctx), "removeRSGroup", Action.ADMIN);<a name="line.2667"></a>
+<span class="sourceLineNo">2668</span>  }<a name="line.2668"></a>
+<span class="sourceLineNo">2669</span><a name="line.2669"></a>
+<span class="sourceLineNo">2670</span>  @Override<a name="line.2670"></a>
+<span class="sourceLineNo">2671</span>  public void preBalanceRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2671"></a>
+<span class="sourceLineNo">2672</span>                                String groupName) throws IOException {<a name="line.2672"></a>
+<span class="sourceLineNo">2673</span>    requirePermission(getActiveUser(ctx), "balanceRSGroup", Action.ADMIN);<a name="line.2673"></a>
+<span class="sourceLineNo">2674</span>  }<a name="line.2674"></a>
+<span class="sourceLineNo">2675</span><a name="line.2675"></a>
+<span class="sourceLineNo">2676</span>  @Override<a name="line.2676"></a>
+<span class="sourceLineNo">2677</span>  public void preAddReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2677"></a>
+<span class="sourceLineNo">2678</span>      String peerId, ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2678"></a>
+<span class="sourceLineNo">2679</span>    requirePermission(getActiveUser(ctx), "addReplicationPeer", Action.ADMIN);<a name="line.2679"></a>
+<span class="sourceLineNo">2680</span>  }<a name="line.2680"></a>
+<span class="sourceLineNo">2681</span><a name="line.2681"></a>
+<span class="sourceLineNo">2682</span>  @Override<a name="line.2682"></a>
+<span class="sourceLineNo">2683</span>  public void preRemoveReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2683"></a>
+<span class="sourceLineNo">2684</span>      String peerId) throws IOException {<a name="line.2684"></a>
+<span class="sourceLineNo">2685</span>    requirePermission(getActiveUser(ctx), "removeReplicationPeer", Action.ADMIN);<a name="line.2685"></a>
+<span class="sourceLineNo">2686</span>  }<a name="line.2686"></a>
+<span class="sourceLineNo">2687</span><a name="line.2687"></a>
+<span class="sourceLineNo">2688</span>  @Override<a name="line.2688"></a>
+<span class="sourceLineNo">2689</span>  public void preEnableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2689"></a>
+<span class="sourceLineNo">2690</span>      String peerId) throws IOException {<a name="line.2690"></a>
+<span class="sourceLineNo">2691</span>    requirePermission(getActiveUser(ctx), "enableReplicationPeer", Action.ADMIN);<a name="line.2691"></a>
+<span class="sourceLineNo">2692</span>  }<a name="line.2692"></a>
+<span class="sourceLineNo">2693</span><a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>  @Override<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>  public void preDisableReplicationPeer(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2695"></a>
+<span class="sourceLineNo">2696</span>      String peerId) throws IOException {<a name="line.2696"></a>
+<span class="sourceLineNo">2697</span>    requirePermission(getActiveUser(ctx), "disableReplicationPeer", Action.ADMIN);<a name="line.2697"></a>
+<span class="sourceLineNo">2698</span>  }<a name="line.2698"></a>
+<span class="sourceLineNo">2699</span><a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>  @Override<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span>  public void preGetReplicationPeerConfig(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2701"></a>
+<span class="sourceLineNo">2702</span>      String peerId) throws IOException {<a name="line.2702"></a>
+<span class="sourceLineNo">2703</span>    requirePermission(getActiveUser(ctx), "getReplicationPeerConfig", Action.ADMIN);<a name="line.2703"></a>
+<span class="sourceLineNo">2704</span>  }<a name="line.2704"></a>
+<span class="sourceLineNo">2705</span><a name="line.2705"></a>
+<span class="sourceLineNo">2706</span>  @Override<a name="line.2706"></a>
+<span class="sourceLineNo">2707</span>  public void preUpdateReplicationPeerConfig(<a name="line.2707"></a>
+<span class="sourceLineNo">2708</span>      final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String peerId,<a name="line.2708"></a>
+<span class="sourceLineNo">2709</span>      ReplicationPeerConfig peerConfig) throws IOException {<a name="line.2709"></a>
+<span class="sourceLineNo">2710</span>    requirePermission(getActiveUser(ctx), "updateReplicationPeerConfig", Action.ADMIN);<a name="line.2710"></a>
+<span class="sourceLineNo">2711</span>  }<a name="line.2711"></a>
+<span class="sourceLineNo">2712</span><a name="line.2712"></a>
+<span class="sourceLineNo">2713</span>  @Override<a name="line.2713"></a>
+<span class="sourceLineNo">2714</span>  public void preListReplicationPeers(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2714"></a>
+<span class="sourceLineNo">2715</span>      String regex) throws IOException {<a name="line.2715"></a>
+<span class="sourceLineNo">2716</span>    requirePermission(getActiveUser(ctx), "listReplicationPeers", Action.ADMIN);<a name="line.2716"></a>
+<span class="sourceLineNo">2717</span>  }<a name="line.2717"></a>
+<span class="sourceLineNo">2718</span><a name="line.2718"></a>
+<span class="sourceLineNo">2719</span>  @Override<a name="line.2719"></a>
+<span class="sourceLineNo">2720</span>  public void preRequestLock(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx, String namespace,<a name="line.2720"></a>
+<span class="sourceLineNo">2721</span>      TableName tableName, HRegionInfo[] regionInfos, LockType type, String description)<a name="line.2721"></a>
+<span class="sourceLineNo">2722</span>  throws IOException {<a name="line.2722"></a>
+<span class="sourceLineNo">2723</span>    // There are operations in the CREATE and ADMIN domain which may require lock, READ<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>    // or WRITE. So for any lock request, we check for these two perms irrespective of lock type.<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>    String reason = String.format("Lock %s, description=%s", type, description);<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>    checkLockPermissions(getActiveUser(ctx), namespace, tableName, regionInfos, reason);<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 preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>      LockProcedure proc, boolean keepAlive) throws IOException {<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span>    String reason = "Heartbeat for lock " + proc.getProcId();<a name="line.2732"></a>
+<span class="sourceLineNo">2733</span>    checkLockPermissions(getActiveUser(ctx), null, proc.getTableName(), null, reason);<a name="line.2733"></a>
+<span class="sourceLineNo">2734</span>  }<a name="line.2734"></a>
+<span class="sourceLineNo">2735</span><a name="line.2735"></a>
+<span class="sourceLineNo">2736</span>  private void checkLockPermissions(User user, String namespace,<a name="line.2736"></a>
+<span class="sourceLineNo">2737</span>      TableName tableName, HRegionInfo[] regionInfos, String reason)<a name="line.2737"></a>
+<span class="sourceLineNo">2738</span>  throws IOException {<a name="line.2738"></a>
+<span class="sourceLineNo">2739</span>    if (namespace != null &amp;&amp; !namespace.isEmpty()) {<a name="line.2739"></a>
+<span class="sourceLineNo">2740</span>      requireNamespacePermission(user, reason, namespace, Action.ADMIN, Action.CREATE);<a name="line.2740"></a>
+<span class="sourceLineNo">2741</span>    } else if (tableName != null || (regionInfos != null &amp;&amp; regionInfos.length &gt; 0)) {<a name="line.2741"></a>
+<span class="sourceLineNo">2742</span>      // So, either a table or regions op. If latter, check perms ons table.<a name="line.2742"></a>
+<span class="sourceLineNo">2743</span>      TableName tn = tableName != null? tableName: regionInfos[0].getTable();<a name="line.2743"></a>
+<span class="sourceLineNo">2744</span>      requireTablePermission(user, reason, tn, null, null,<a name="line.2744"></a>
+<span class="sourceLineNo">2745</span>          Action.ADMIN, Action.CREATE);<a name="line.2745"></a>
+<span class="sourceLineNo">2746</span>    } else {<a name="line.2746"></a>
+<span class="sourceLineNo">2747</span>      throw new DoNotRetryIOException("Invalid lock level when requesting permissions.");<a name="line.2747"></a>
+<span class="sourceLineNo">2748</span>    }<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 655410a..c41a4d9 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="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <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-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index a48c2d5..5e729c3 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="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <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-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index c1f5f31..b7dfbcb 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="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <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" />
@@ -650,7 +650,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index 73a65e9..45dae36 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="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <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-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index 150324e..ca0376d 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="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <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" />
@@ -772,7 +772,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2bb8bd01/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index 77f9600..1f28d65 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="20170917" />
+    <meta name="Date-Revision-yyyymmdd" content="20170918" />
     <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-09-17</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-09-18</li>
             </p>
                 </div>
 


Mime
View raw message