You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bi...@apache.org on 2017/11/28 01:57:47 UTC

hbase git commit: HBASE-19338 Performance regression in RegionServerRpcQuotaManager to get ugi

Repository: hbase
Updated Branches:
  refs/heads/master b048207c8 -> 3863559b0


HBASE-19338 Performance regression in RegionServerRpcQuotaManager to get ugi


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/3863559b
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3863559b
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3863559b

Branch: refs/heads/master
Commit: 3863559b07fe19ff72f4cf5a326be7e09e70609c
Parents: b048207
Author: binlijin <bi...@gmail.com>
Authored: Tue Nov 28 09:57:35 2017 +0800
Committer: binlijin <bi...@gmail.com>
Committed: Tue Nov 28 09:57:35 2017 +0800

----------------------------------------------------------------------
 .../hadoop/hbase/quotas/RegionServerRpcQuotaManager.java  | 10 ++++++++--
 .../hadoop/hbase/security/access/AccessController.java    |  7 ++++++-
 .../hadoop/hbase/security/visibility/VisibilityUtils.java |  9 ++++++++-
 3 files changed, 22 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/3863559b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.java
index 69253d7..51b8cc9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.quotas;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -33,7 +34,6 @@ import org.apache.hadoop.hbase.regionserver.Region;
 import org.apache.hadoop.hbase.regionserver.RegionServerServices;
 import org.apache.hadoop.hbase.security.User;
 import org.apache.hadoop.security.UserGroupInformation;
-
 import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;
 
 /**
@@ -176,7 +176,13 @@ public class RegionServerRpcQuotaManager {
   private OperationQuota checkQuota(final Region region,
       final int numWrites, final int numReads, final int numScans)
       throws IOException, ThrottlingException {
-    UserGroupInformation ugi = RpcServer.getRequestUser().orElse(User.getCurrent()).getUGI();
+    Optional<User> user = RpcServer.getRequestUser();
+    UserGroupInformation ugi;
+    if (user.isPresent()) {
+      ugi = user.get().getUGI();
+    } else {
+      ugi = User.getCurrent().getUGI();
+    }
     TableName table = region.getTableDescriptor().getTableName();
 
     OperationQuota quota = getQuota(ugi, table);

http://git-wip-us.apache.org/repos/asf/hbase/blob/3863559b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
index b921937..f2b7541 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
@@ -429,7 +429,12 @@ public class AccessController implements MasterCoprocessor, RegionCoprocessor,
    */
   private User getActiveUser(ObserverContext<?> ctx) throws IOException {
     // for non-rpc handling, fallback to system user
-    return ctx.getCaller().orElse(userProvider.getCurrent());
+    Optional<User> optionalUser = ctx.getCaller();
+    User user;
+    if (optionalUser.isPresent()) {
+      return optionalUser.get();
+    }
+    return userProvider.getCurrent();
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/hbase/blob/3863559b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityUtils.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityUtils.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityUtils.java
index 7d141e7..3db8d0e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityUtils.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityUtils.java
@@ -31,6 +31,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Optional;
 import java.util.Set;
 
 import org.apache.commons.lang3.StringUtils;
@@ -282,7 +283,13 @@ public class VisibilityUtils {
    * @throws IOException When there is IOE in getting the system user (During non-RPC handling).
    */
   public static User getActiveUser() throws IOException {
-    User user = RpcServer.getRequestUser().orElse(User.getCurrent());
+    Optional<User> optionalUser = RpcServer.getRequestUser();
+    User user;
+    if (optionalUser.isPresent()) {
+      user = optionalUser.get();
+    } else {
+      user = User.getCurrent();
+    }
     if (LOG.isTraceEnabled()) {
       LOG.trace("Current active user name is " + user.getShortName());
     }