diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/Procedure.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/Procedure.java index f4c51dd..cb4ee47 100644 --- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/Procedure.java +++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/Procedure.java @@ -30,6 +30,7 @@ import org.apache.hadoop.hbase.classification.InterfaceStability; import org.apache.hadoop.hbase.exceptions.TimeoutIOException; import org.apache.hadoop.hbase.procedure2.util.StringUtils; import org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState; +import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; import org.apache.hadoop.hbase.util.NonceKey; @@ -392,6 +393,11 @@ public abstract class Procedure implements Comparable { this.owner = StringUtils.isEmpty(owner) ? null : owner; } + public void setOwner(final User owner) { + assert owner != null : "expected owner to be not null"; + setOwner(owner.getShortName()); + } + /** * Called on store load to initialize the Procedure internals after * the creation/deserialization. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.java index 0ba7556..a514532 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.java @@ -36,7 +36,7 @@ public abstract class AbstractStateMachineNamespaceProcedure } protected AbstractStateMachineNamespaceProcedure(final MasterProcedureEnv env) { - this.setOwner(env.getRequestUser().getShortName()); + this.setOwner(env.getRequestUser()); } protected abstract String getNamespaceName(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java index 7fd5a6f..7cced45 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java @@ -53,7 +53,7 @@ public abstract class AbstractStateMachineTableProcedure protected AbstractStateMachineTableProcedure(final MasterProcedureEnv env, final ProcedurePrepareLatch latch) { this.user = env.getRequestUser(); - this.setOwner(user.getShortName()); + this.setOwner(user); // used for compatibility with clients without procedures // they need a sync TableExistsException, TableNotFoundException, TableNotDisabledException, ... diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java index fad62b9..98a2152 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java @@ -153,7 +153,7 @@ implements ServerProcedureInterface { this.serverName = serverName; this.shouldSplitWal = shouldSplitWal; this.carryingMeta = carryingMeta; - this.setOwner(env.getRequestUser().getShortName()); + this.setOwner(env.getRequestUser()); } /** diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java index c4e9f41..33ff094 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java @@ -548,7 +548,7 @@ public class TestAccessController extends SecureTestUtil { throws IOException { this.tableName = tableName; this.setTimeout(180000); // Timeout in 3 minutes - this.setOwner(env.getRequestUser().getUGI().getShortUserName()); + this.setOwner(env.getRequestUser()); } @Override @@ -600,7 +600,7 @@ public class TestAccessController extends SecureTestUtil { final ProcedureExecutor procExec = TEST_UTIL.getHBaseCluster().getMaster().getMasterProcedureExecutor(); Procedure proc = new TestTableDDLProcedure(procExec.getEnvironment(), tableName); - proc.setOwner(USER_OWNER.getShortName()); + proc.setOwner(USER_OWNER); final long procId = procExec.submitProcedure(proc); AccessTestAction abortProcedureAction = new AccessTestAction() { @@ -624,7 +624,7 @@ public class TestAccessController extends SecureTestUtil { final ProcedureExecutor procExec = TEST_UTIL.getHBaseCluster().getMaster().getMasterProcedureExecutor(); Procedure proc = new TestTableDDLProcedure(procExec.getEnvironment(), tableName); - proc.setOwner(USER_OWNER.getShortName()); + proc.setOwner(USER_OWNER); final long procId = procExec.submitProcedure(proc); final List procInfoList = procExec.listProcedures();