HBASE-16522 Procedure v2 - Cache system user and avoid IOException
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/2250e571 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/2250e571 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/2250e571 Branch: refs/heads/branch-1.1 Commit: 2250e57187832f99e555c514dd9ad43fee054b41 Parents: 2a4b455 Author: Matteo Bertozzi <[email protected]> Authored: Tue Aug 30 11:53:15 2016 -0700 Committer: Matteo Bertozzi <[email protected]> Committed: Tue Aug 30 12:06:39 2016 -0700 ---------------------------------------------------------------------- .../org/apache/hadoop/hbase/security/Superusers.java | 15 ++++++++++----- .../master/procedure/AddColumnFamilyProcedure.java | 6 ++---- .../hbase/master/procedure/CreateTableProcedure.java | 6 ++---- .../procedure/DeleteColumnFamilyProcedure.java | 6 ++---- .../hbase/master/procedure/DeleteTableProcedure.java | 5 ++--- .../master/procedure/DisableTableProcedure.java | 15 ++++----------- .../hbase/master/procedure/EnableTableProcedure.java | 14 ++++---------- .../hbase/master/procedure/MasterProcedureEnv.java | 6 +++--- .../procedure/ModifyColumnFamilyProcedure.java | 6 ++---- .../hbase/master/procedure/ModifyTableProcedure.java | 4 +--- .../master/procedure/TruncateTableProcedure.java | 2 +- 11 files changed, 33 insertions(+), 52 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-common/src/main/java/org/apache/hadoop/hbase/security/Superusers.java ---------------------------------------------------------------------- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/security/Superusers.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/security/Superusers.java index b4ce36e..e88d205 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/security/Superusers.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/security/Superusers.java @@ -42,6 +42,7 @@ public final class Superusers { private static List<String> superUsers; private static List<String> superGroups; + private static User systemUser; private Superusers(){} @@ -55,17 +56,17 @@ public final class Superusers { public static void initialize(Configuration conf) throws IOException { superUsers = new ArrayList<>(); superGroups = new ArrayList<>(); - User user = User.getCurrent(); + systemUser = User.getCurrent(); - if (user == null) { + if (systemUser == null) { throw new IllegalStateException("Unable to obtain the current user, " + "authorization checks for internal operations will not work correctly!"); } if (LOG.isTraceEnabled()) { - LOG.trace("Current user name is " + user.getShortName()); + LOG.trace("Current user name is " + systemUser.getShortName()); } - String currentUser = user.getShortName(); + String currentUser = systemUser.getShortName(); String[] superUserList = conf.getStrings(SUPERUSER_CONF_KEY, new String[0]); for (String name : superUserList) { if (AuthUtil.isGroupPrincipal(name)) { @@ -121,4 +122,8 @@ public final class Superusers { return false; } } -} \ No newline at end of file + + public static User getSystemUser() { + return systemUser; + } +} http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.java index e0f37e4..260bc81 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AddColumnFamilyProcedure.java @@ -67,10 +67,8 @@ public class AddColumnFamilyProcedure this.traceEnabled = null; } - public AddColumnFamilyProcedure( - final MasterProcedureEnv env, - final TableName tableName, - final HColumnDescriptor cfDescriptor) throws IOException { + public AddColumnFamilyProcedure(final MasterProcedureEnv env, final TableName tableName, + final HColumnDescriptor cfDescriptor) { this.tableName = tableName; this.cfDescriptor = cfDescriptor; this.user = env.getRequestUser().getUGI(); http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java index 7300f88..c766c36 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java @@ -76,15 +76,13 @@ public class CreateTableProcedure } public CreateTableProcedure(final MasterProcedureEnv env, - final HTableDescriptor hTableDescriptor, final HRegionInfo[] newRegions) - throws IOException { + final HTableDescriptor hTableDescriptor, final HRegionInfo[] newRegions) { this(env, hTableDescriptor, newRegions, null); } public CreateTableProcedure(final MasterProcedureEnv env, final HTableDescriptor hTableDescriptor, final HRegionInfo[] newRegions, - final ProcedurePrepareLatch syncLatch) - throws IOException { + final ProcedurePrepareLatch syncLatch) { this.hTableDescriptor = hTableDescriptor; this.newRegions = newRegions != null ? Lists.newArrayList(newRegions) : null; this.user = env.getRequestUser().getUGI(); http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.java index 75ec313..ebd9fd4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteColumnFamilyProcedure.java @@ -68,10 +68,8 @@ public class DeleteColumnFamilyProcedure this.traceEnabled = null; } - public DeleteColumnFamilyProcedure( - final MasterProcedureEnv env, - final TableName tableName, - final byte[] familyName) throws IOException { + public DeleteColumnFamilyProcedure(final MasterProcedureEnv env, final TableName tableName, + final byte[] familyName) { this.tableName = tableName; this.familyName = familyName; this.user = env.getRequestUser().getUGI(); http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.java index 5ce5081..45cb2eb 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.java @@ -74,13 +74,12 @@ public class DeleteTableProcedure syncLatch = null; } - public DeleteTableProcedure(final MasterProcedureEnv env, final TableName tableName) - throws IOException { + public DeleteTableProcedure(final MasterProcedureEnv env, final TableName tableName) { this(env, tableName, null); } public DeleteTableProcedure(final MasterProcedureEnv env, final TableName tableName, - final ProcedurePrepareLatch syncLatch) throws IOException { + final ProcedurePrepareLatch syncLatch) { this.tableName = tableName; this.user = env.getRequestUser().getUGI(); this.setOwner(this.user.getShortUserName()); http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java index 0e0abbb..1f1bdaa 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java @@ -84,12 +84,9 @@ public class DisableTableProcedure * @param env MasterProcedureEnv * @param tableName the table to operate on * @param skipTableStateCheck whether to check table state - * @throws IOException */ - public DisableTableProcedure( - final MasterProcedureEnv env, - final TableName tableName, - final boolean skipTableStateCheck) throws IOException { + public DisableTableProcedure(final MasterProcedureEnv env, final TableName tableName, + final boolean skipTableStateCheck) { this(env, tableName, skipTableStateCheck, null); } @@ -98,13 +95,9 @@ public class DisableTableProcedure * @param env MasterProcedureEnv * @param tableName the table to operate on * @param skipTableStateCheck whether to check table state - * @throws IOException */ - public DisableTableProcedure( - final MasterProcedureEnv env, - final TableName tableName, - final boolean skipTableStateCheck, - final ProcedurePrepareLatch syncLatch) throws IOException { + public DisableTableProcedure(final MasterProcedureEnv env, final TableName tableName, + final boolean skipTableStateCheck, final ProcedurePrepareLatch syncLatch) { this.tableName = tableName; this.skipTableStateCheck = skipTableStateCheck; this.user = env.getRequestUser().getUGI(); http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java index 963bc14..0f08026 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java @@ -82,12 +82,9 @@ public class EnableTableProcedure * @param env MasterProcedureEnv * @param tableName the table to operate on * @param skipTableStateCheck whether to check table state - * @throws IOException */ - public EnableTableProcedure( - final MasterProcedureEnv env, - final TableName tableName, - final boolean skipTableStateCheck) throws IOException { + public EnableTableProcedure(final MasterProcedureEnv env, final TableName tableName, + final boolean skipTableStateCheck) { this(env, tableName, skipTableStateCheck, null); } @@ -98,11 +95,8 @@ public class EnableTableProcedure * @param tableName the table to operate on * @param skipTableStateCheck whether to check table state */ - public EnableTableProcedure( - final MasterProcedureEnv env, - final TableName tableName, - final boolean skipTableStateCheck, - final ProcedurePrepareLatch syncLatch) throws IOException { + public EnableTableProcedure(final MasterProcedureEnv env, final TableName tableName, + final boolean skipTableStateCheck, final ProcedurePrepareLatch syncLatch) { this.tableName = tableName; this.skipTableStateCheck = skipTableStateCheck; this.user = env.getRequestUser().getUGI(); http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java index b440709..5308415 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java @@ -34,7 +34,7 @@ import org.apache.hadoop.hbase.master.MasterServices; import org.apache.hadoop.hbase.procedure2.store.ProcedureStore; import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore; import org.apache.hadoop.hbase.security.User; -import org.apache.hadoop.hbase.security.UserProvider; +import org.apache.hadoop.hbase.security.Superusers; import org.apache.hadoop.hbase.util.CancelableProgressable; import org.apache.hadoop.hbase.util.FSUtils; @@ -94,10 +94,10 @@ public class MasterProcedureEnv { master.getTableLockManager()); } - public User getRequestUser() throws IOException { + public User getRequestUser() { User user = RpcServer.getRequestUser(); if (user == null) { - user = UserProvider.instantiate(getMasterConfiguration()).getCurrent(); + user = Superusers.getSystemUser(); } return user; } http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.java index a74d6ad..d5e8caf 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyColumnFamilyProcedure.java @@ -65,10 +65,8 @@ public class ModifyColumnFamilyProcedure this.traceEnabled = null; } - public ModifyColumnFamilyProcedure( - final MasterProcedureEnv env, - final TableName tableName, - final HColumnDescriptor cfDescriptor) throws IOException { + public ModifyColumnFamilyProcedure(final MasterProcedureEnv env, final TableName tableName, + final HColumnDescriptor cfDescriptor) { this.tableName = tableName; this.cfDescriptor = cfDescriptor; this.user = env.getRequestUser().getUGI(); http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java index 0be797f..4a5e104 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java @@ -71,9 +71,7 @@ public class ModifyTableProcedure initilize(); } - public ModifyTableProcedure( - final MasterProcedureEnv env, - final HTableDescriptor htd) throws IOException { + public ModifyTableProcedure(final MasterProcedureEnv env, final HTableDescriptor htd) { initilize(); this.modifiedHTableDescriptor = htd; this.user = env.getRequestUser().getUGI(); http://git-wip-us.apache.org/repos/asf/hbase/blob/2250e571/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.java index c745107..1df18f4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.java @@ -61,7 +61,7 @@ public class TruncateTableProcedure } public TruncateTableProcedure(final MasterProcedureEnv env, final TableName tableName, - boolean preserveSplits) throws IOException { + boolean preserveSplits) { this.tableName = tableName; this.preserveSplits = preserveSplits; this.user = env.getRequestUser().getUGI();
