From a0aeca4a9910a2119cc77cae9d6bb5405fb8f3ed Mon Sep 17 00:00:00 2001 From: Apekshit Sharma Date: Thu, 10 May 2018 20:34:14 -0700 Subject: [PATCH] HBASE-20567 Pass both old and new descriptors to pre/post hooks of modify operations for table and namespace. --- .../hadoop/hbase/rsgroup/RSGroupAdminEndpoint.java | 4 +-- .../hadoop/hbase/coprocessor/MasterObserver.java | 36 ++++++++++++++-------- .../org/apache/hadoop/hbase/master/HMaster.java | 27 +++++++++------- .../hadoop/hbase/master/MasterCoprocessorHost.java | 36 ++++++++++++---------- .../master/procedure/ModifyTableProcedure.java | 6 ++-- .../hbase/security/access/AccessController.java | 22 ++++++------- .../access/CoprocessorWhitelistMasterObserver.java | 5 +-- .../security/visibility/VisibilityController.java | 4 +-- .../hbase/coprocessor/TestMasterObserver.java | 16 ++++++---- .../procedure/TestMasterObserverPostCalls.java | 6 ++-- .../security/access/TestAccessController.java | 4 ++- .../security/access/TestNamespaceCommands.java | 1 + .../access/TestWithDisabledAuthorization.java | 5 ++- 13 files changed, 103 insertions(+), 69 deletions(-) diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminEndpoint.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminEndpoint.java index 624aa446ab..d954379e80 100644 --- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminEndpoint.java +++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupAdminEndpoint.java @@ -441,8 +441,8 @@ public class RSGroupAdminEndpoint implements MasterCoprocessor, MasterObserver { @Override public void preModifyNamespace(ObserverContext ctx, - NamespaceDescriptor ns) throws IOException { - preCreateNamespace(ctx, ns); + NamespaceDescriptor currentNsDesc, NamespaceDescriptor newNsDesc) throws IOException { + preCreateNamespace(ctx, newNsDesc); } @Override diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java index a17bc9f4f5..da30dc1714 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java @@ -209,20 +209,24 @@ public interface MasterObserver { * table RPC call. * @param ctx the environment to interact with the framework and master * @param tableName the name of the table - * @param htd the TableDescriptor + * @param currentDescriptor current TableDescriptor of the table + * @param newDescriptor after modify operation, table will have this descriptor */ default void preModifyTable(final ObserverContext ctx, - final TableName tableName, TableDescriptor htd) throws IOException {} + final TableName tableName, TableDescriptor currentDescriptor, TableDescriptor newDescriptor) + throws IOException {} /** * Called after the modifyTable operation has been requested. Called as part * of modify table RPC call. * @param ctx the environment to interact with the framework and master * @param tableName the name of the table - * @param htd the TableDescriptor + * @param oldDescriptor descriptor of table before modify operation happened + * @param currentDescriptor current TableDescriptor of the table */ default void postModifyTable(final ObserverContext ctx, - final TableName tableName, TableDescriptor htd) throws IOException {} + final TableName tableName, TableDescriptor oldDescriptor, TableDescriptor currentDescriptor) + throws IOException {} /** * Called prior to modifying a table's properties. Called as part of modify @@ -230,12 +234,14 @@ public interface MasterObserver { * * @param ctx the environment to interact with the framework and master * @param tableName the name of the table - * @param htd the TableDescriptor + * @param currentDescriptor current TableDescriptor of the table + * @param newDescriptor after modify operation, table will have this descriptor */ default void preModifyTableAction( final ObserverContext ctx, final TableName tableName, - final TableDescriptor htd) throws IOException {} + final TableDescriptor currentDescriptor, + final TableDescriptor newDescriptor) throws IOException {} /** * Called after to modifying a table's properties. Called as part of modify @@ -243,12 +249,14 @@ public interface MasterObserver { * * @param ctx the environment to interact with the framework and master * @param tableName the name of the table - * @param htd the TableDescriptor + * @param oldDescriptor descriptor of table before modify operation happened + * @param currentDescriptor current TableDescriptor of the table */ default void postCompletedModifyTableAction( final ObserverContext ctx, final TableName tableName, - final TableDescriptor htd) throws IOException {} + final TableDescriptor oldDescriptor, + final TableDescriptor currentDescriptor) throws IOException {} /** * Called prior to enabling a table. Called as part of enable table RPC call. @@ -817,18 +825,22 @@ public interface MasterObserver { /** * Called prior to modifying a namespace's properties. * @param ctx the environment to interact with the framework and master - * @param ns the NamespaceDescriptor + * @param currentNsDescriptor current NamespaceDescriptor of the namespace + * @param newNsDescriptor after modify operation, namespace will have this descriptor */ default void preModifyNamespace(final ObserverContext ctx, - NamespaceDescriptor ns) throws IOException {} + NamespaceDescriptor currentNsDescriptor, NamespaceDescriptor newNsDescriptor) + throws IOException {} /** * Called after the modifyNamespace operation has been requested. * @param ctx the environment to interact with the framework and master - * @param ns the NamespaceDescriptor + * @param oldNsDescriptor descriptor of namespace before modify operation happened + * @param currentNsDescriptor current NamespaceDescriptor of the namespace */ default void postModifyNamespace(final ObserverContext ctx, - NamespaceDescriptor ns) throws IOException {} + NamespaceDescriptor oldNsDescriptor, NamespaceDescriptor currentNsDescriptor) + throws IOException {} /** * Called before a getNamespaceDescriptor request has been processed. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index 9dd685daa7..b0a1652774 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -2362,16 +2362,18 @@ public class HMaster extends HRegionServer implements MasterServices { } @Override - public long modifyTable(final TableName tableName, final TableDescriptor descriptor, + public long modifyTable(final TableName tableName, final TableDescriptor newDescriptor, final long nonceGroup, final long nonce) throws IOException { checkInitialized(); - sanityCheckTableDescriptor(descriptor); + sanityCheckTableDescriptor(newDescriptor); return MasterProcedureUtil.submitProcedure( new MasterProcedureUtil.NonceProcedureRunnable(this, nonceGroup, nonce) { @Override protected void run() throws IOException { - getMaster().getMasterCoprocessorHost().preModifyTable(tableName, descriptor); + TableDescriptor oldDescriptor = getMaster().getTableDescriptors().get(tableName); + getMaster().getMasterCoprocessorHost().preModifyTable(tableName, oldDescriptor, + newDescriptor); LOG.info(getClientIdAuditPrefix() + " modify " + tableName); @@ -2381,10 +2383,11 @@ public class HMaster extends HRegionServer implements MasterServices { // checks. This will block only the beginning of the procedure. See HBASE-19953. ProcedurePrepareLatch latch = ProcedurePrepareLatch.createBlockingLatch(); submitProcedure(new ModifyTableProcedure(procedureExecutor.getEnvironment(), - descriptor, latch)); + newDescriptor, latch)); latch.await(); - getMaster().getMasterCoprocessorHost().postModifyTable(tableName, descriptor); + getMaster().getMasterCoprocessorHost().postModifyTable(tableName, oldDescriptor, + newDescriptor); } @Override @@ -2997,26 +3000,28 @@ public class HMaster extends HRegionServer implements MasterServices { * nonceGroup (the source must ensure each operation gets a unique id). * @return procedure id */ - long modifyNamespace(final NamespaceDescriptor namespaceDescriptor, final long nonceGroup, + long modifyNamespace(final NamespaceDescriptor newNsDescriptor, final long nonceGroup, final long nonce) throws IOException { checkInitialized(); - TableName.isLegalNamespaceName(Bytes.toBytes(namespaceDescriptor.getName())); + TableName.isLegalNamespaceName(Bytes.toBytes(newNsDescriptor.getName())); return MasterProcedureUtil.submitProcedure(new MasterProcedureUtil.NonceProcedureRunnable(this, nonceGroup, nonce) { @Override protected void run() throws IOException { - getMaster().getMasterCoprocessorHost().preModifyNamespace(namespaceDescriptor); + NamespaceDescriptor oldNsDescriptor = getNamespace(newNsDescriptor.getName()); + getMaster().getMasterCoprocessorHost().preModifyNamespace(oldNsDescriptor, newNsDescriptor); // We need to wait for the procedure to potentially fail due to "prepare" sanity // checks. This will block only the beginning of the procedure. See HBASE-19953. ProcedurePrepareLatch latch = ProcedurePrepareLatch.createBlockingLatch(); - LOG.info(getClientIdAuditPrefix() + " modify " + namespaceDescriptor); + LOG.info(getClientIdAuditPrefix() + " modify " + newNsDescriptor); // Execute the operation synchronously - wait for the operation to complete before // continuing. - setProcId(getClusterSchema().modifyNamespace(namespaceDescriptor, getNonceKey(), latch)); + setProcId(getClusterSchema().modifyNamespace(newNsDescriptor, getNonceKey(), latch)); latch.await(); - getMaster().getMasterCoprocessorHost().postModifyNamespace(namespaceDescriptor); + getMaster().getMasterCoprocessorHost().postModifyNamespace(oldNsDescriptor, + newNsDescriptor); } @Override diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java index 8c8c02c01d..072ae8ae66 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java @@ -254,20 +254,22 @@ public class MasterCoprocessorHost }); } - public void preModifyNamespace(final NamespaceDescriptor ns) throws IOException { + public void preModifyNamespace(final NamespaceDescriptor currentNsDescriptor, + final NamespaceDescriptor newNsDescriptor) throws IOException { execOperation(coprocEnvironments.isEmpty() ? null : new MasterObserverOperation() { @Override public void call(MasterObserver observer) throws IOException { - observer.preModifyNamespace(this, ns); + observer.preModifyNamespace(this, currentNsDescriptor, newNsDescriptor); } }); } - public void postModifyNamespace(final NamespaceDescriptor ns) throws IOException { + public void postModifyNamespace(final NamespaceDescriptor oldNsDescriptor, + final NamespaceDescriptor currentNsDescriptor) throws IOException { execOperation(coprocEnvironments.isEmpty() ? null : new MasterObserverOperation() { @Override public void call(MasterObserver observer) throws IOException { - observer.postModifyNamespace(this, ns); + observer.postModifyNamespace(this, oldNsDescriptor, currentNsDescriptor); } }); } @@ -429,42 +431,44 @@ public class MasterCoprocessorHost }); } - public void preModifyTable(final TableName tableName, final TableDescriptor htd) - throws IOException { + public void preModifyTable(final TableName tableName, final TableDescriptor currentDescriptor, + final TableDescriptor newDescriptor) throws IOException { execOperation(coprocEnvironments.isEmpty() ? null : new MasterObserverOperation() { @Override public void call(MasterObserver observer) throws IOException { - observer.preModifyTable(this, tableName, htd); + observer.preModifyTable(this, tableName, currentDescriptor, newDescriptor); } }); } - public void postModifyTable(final TableName tableName, final TableDescriptor htd) - throws IOException { + public void postModifyTable(final TableName tableName, final TableDescriptor oldDescriptor, + final TableDescriptor currentDescriptor) throws IOException { execOperation(coprocEnvironments.isEmpty() ? null : new MasterObserverOperation() { @Override public void call(MasterObserver observer) throws IOException { - observer.postModifyTable(this, tableName, htd); + observer.postModifyTable(this, tableName, oldDescriptor, currentDescriptor); } }); } - public void preModifyTableAction(final TableName tableName, final TableDescriptor htd, - final User user) throws IOException { + public void preModifyTableAction(final TableName tableName, + final TableDescriptor currentDescriptor, final TableDescriptor newDescriptor, final User user) + throws IOException { execOperation(coprocEnvironments.isEmpty() ? null : new MasterObserverOperation(user) { @Override public void call(MasterObserver observer) throws IOException { - observer.preModifyTableAction(this, tableName, htd); + observer.preModifyTableAction(this, tableName, currentDescriptor, newDescriptor); } }); } - public void postCompletedModifyTableAction(final TableName tableName, final TableDescriptor htd, - final User user) throws IOException { + public void postCompletedModifyTableAction(final TableName tableName, + final TableDescriptor oldDescriptor, final TableDescriptor currentDescriptor, final User user) + throws IOException { execOperation(coprocEnvironments.isEmpty() ? null : new MasterObserverOperation(user) { @Override public void call(MasterObserver observer) throws IOException { - observer.postCompletedModifyTableAction(this, tableName, htd); + observer.postCompletedModifyTableAction(this, tableName, oldDescriptor, currentDescriptor); } }); } 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 1f1ba3cfee..6fb9caa2da 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 @@ -420,10 +420,12 @@ public class ModifyTableProcedure if (cpHost != null) { switch (state) { case MODIFY_TABLE_PRE_OPERATION: - cpHost.preModifyTableAction(getTableName(), modifiedTableDescriptor, getUser()); + cpHost.preModifyTableAction(getTableName(), unmodifiedTableDescriptor, + modifiedTableDescriptor, getUser()); break; case MODIFY_TABLE_POST_OPERATION: - cpHost.postCompletedModifyTableAction(getTableName(), modifiedTableDescriptor,getUser()); + cpHost.postCompletedModifyTableAction(getTableName(), unmodifiedTableDescriptor, + modifiedTableDescriptor,getUser()); break; default: throw new UnsupportedOperationException(this + " unhandled state=" + state); 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 bebf16cadb..2758c7e379 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 @@ -968,24 +968,24 @@ public class AccessController implements MasterCoprocessor, RegionCoprocessor, @Override public void preModifyTable(ObserverContext c, TableName tableName, - TableDescriptor htd) throws IOException { + TableDescriptor currentDesc, TableDescriptor newDesc) throws IOException { // TODO: potentially check if this is a add/modify/delete column operation requirePermission(c, "modifyTable", tableName, null, null, Action.ADMIN, Action.CREATE); } @Override - public void postModifyTable(ObserverContext c, - TableName tableName, final TableDescriptor htd) throws IOException { + public void postModifyTable(ObserverContext c, TableName tableName, + TableDescriptor oldDesc, TableDescriptor currentDesc) throws IOException { final Configuration conf = c.getEnvironment().getConfiguration(); // default the table owner to current user, if not specified. - final String owner = (htd.getOwnerString() != null) ? htd.getOwnerString() : + final String owner = (currentDesc.getOwnerString() != null) ? currentDesc.getOwnerString() : getActiveUser(c).getShortName(); User.runAsLoginUser(new PrivilegedExceptionAction() { @Override public Void run() throws Exception { UserPermission userperm = new UserPermission(Bytes.toBytes(owner), - htd.getTableName(), null, Action.values()); + currentDesc.getTableName(), null, Action.values()); try (Table table = c.getEnvironment().getConnection(). getTable(AccessControlLists.ACL_TABLE_NAME)) { AccessControlLists.addUserPermission(conf, userperm, table); @@ -1232,18 +1232,16 @@ public class AccessController implements MasterCoprocessor, RegionCoprocessor, @Override public void preModifyNamespace(ObserverContext ctx, - NamespaceDescriptor ns) throws IOException { + NamespaceDescriptor currentNsDesc, NamespaceDescriptor newNsDesc) throws IOException { // We require only global permission so that // a user with NS admin cannot altering namespace configurations. i.e. namespace quota - requireGlobalPermission(ctx, "modifyNamespace", - Action.ADMIN, ns.getName()); + requireGlobalPermission(ctx, "modifyNamespace", Action.ADMIN, newNsDesc.getName()); } @Override - public void preGetNamespaceDescriptor(ObserverContext ctx, String namespace) - throws IOException { - requireNamespacePermission(ctx, "getNamespaceDescriptor", - namespace, Action.ADMIN); + public void preGetNamespaceDescriptor(ObserverContext ctx, + String namespace) throws IOException { + requireNamespacePermission(ctx, "getNamespaceDescriptor", namespace, Action.ADMIN); } @Override diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/CoprocessorWhitelistMasterObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/CoprocessorWhitelistMasterObserver.java index 44f736b2e9..719fe33bc4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/CoprocessorWhitelistMasterObserver.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/CoprocessorWhitelistMasterObserver.java @@ -55,8 +55,9 @@ public class CoprocessorWhitelistMasterObserver implements MasterCoprocessor, Ma @Override public void preModifyTable(ObserverContext ctx, - TableName tableName, TableDescriptor htd) throws IOException { - verifyCoprocessors(ctx, htd); + TableName tableName, TableDescriptor currentDesc, TableDescriptor newDesc) + throws IOException { + verifyCoprocessors(ctx, newDesc); } @Override diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java index 6e00f40195..4f00e7daa3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java @@ -226,8 +226,8 @@ public class VisibilityController implements MasterCoprocessor, RegionCoprocesso } @Override - public void preModifyTable(ObserverContext ctx, - TableName tableName, TableDescriptor htd) throws IOException { + public void preModifyTable(ObserverContext ctx, TableName tableName, + TableDescriptor currentDescriptor, TableDescriptor newDescriptor) throws IOException { if (!authorizationEnabled) { return; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java index 579b6d34e3..a606e27c40 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java @@ -364,13 +364,15 @@ public class TestMasterObserver { @Override public void preModifyTable(ObserverContext env, - TableName tableName, TableDescriptor htd) throws IOException { + TableName tableName, final TableDescriptor currentDescriptor, + final TableDescriptor newDescriptor) throws IOException { preModifyTableCalled = true; } @Override public void postModifyTable(ObserverContext env, - TableName tableName, TableDescriptor htd) throws IOException { + TableName tableName, final TableDescriptor oldDescriptor, + final TableDescriptor currentDescriptor) throws IOException { postModifyTableCalled = true; } @@ -424,13 +426,13 @@ public class TestMasterObserver { @Override public void preModifyNamespace(ObserverContext env, - NamespaceDescriptor ns) throws IOException { + NamespaceDescriptor currentNsDesc, NamespaceDescriptor newNsDesc) throws IOException { preModifyNamespaceCalled = true; } @Override public void postModifyNamespace(ObserverContext env, - NamespaceDescriptor ns) throws IOException { + NamespaceDescriptor oldNsDesc, NamespaceDescriptor currentNsDesc) throws IOException { postModifyNamespaceCalled = true; } @@ -917,7 +919,8 @@ public class TestMasterObserver { public void preModifyTableAction( final ObserverContext env, final TableName tableName, - final TableDescriptor htd) throws IOException { + final TableDescriptor currentDescriptor, + final TableDescriptor newDescriptor) throws IOException { preModifyTableActionCalled = true; } @@ -925,7 +928,8 @@ public class TestMasterObserver { public void postCompletedModifyTableAction( final ObserverContext env, final TableName tableName, - final TableDescriptor htd) throws IOException { + final TableDescriptor oldDescriptor, + final TableDescriptor currentDescriptor) throws IOException { postCompletedModifyTableActionCalled = true; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.java index e6357103a8..089a2a468a 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterObserverPostCalls.java @@ -106,7 +106,8 @@ public class TestMasterObserverPostCalls { @Override public void postModifyNamespace( - ObserverContext ctx, NamespaceDescriptor desc) { + ObserverContext ctx, NamespaceDescriptor oldNsDesc, + NamespaceDescriptor currentNsDesc) { postHookCalls.incrementAndGet(); } @@ -125,7 +126,8 @@ public class TestMasterObserverPostCalls { @Override public void postModifyTable( - ObserverContext ctx, TableName tn, TableDescriptor td) { + ObserverContext ctx, TableName tn, + TableDescriptor oldDescriptor, TableDescriptor currentDescriptor) { postHookCalls.incrementAndGet(); } 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 2e9be30911..870fa19b37 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 @@ -406,7 +406,9 @@ public class TestAccessController extends SecureTestUtil { htd.addFamily(new HColumnDescriptor(TEST_FAMILY)); htd.addFamily(new HColumnDescriptor("fam_" + User.getCurrent().getShortName())); ACCESS_CONTROLLER.preModifyTable(ObserverContextImpl.createAndPrepare(CP_ENV), - TEST_TABLE, htd); + TEST_TABLE, + null, // not needed by AccessController + htd); return null; } }; diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java index 328024c58f..66e37bcbce 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java @@ -250,6 +250,7 @@ public class TestNamespaceCommands extends SecureTestUtil { @Override public Object run() throws Exception { ACCESS_CONTROLLER.preModifyNamespace(ObserverContextImpl.createAndPrepare(CP_ENV), + null, // not needed by AccessController NamespaceDescriptor.create(TEST_NAMESPACE).addConfiguration("abc", "156").build()); return null; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java index 57d9e4bf86..110afcd137 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java @@ -493,7 +493,9 @@ public class TestWithDisabledAuthorization extends SecureTestUtil { htd.addFamily(new HColumnDescriptor(TEST_FAMILY)); htd.addFamily(new HColumnDescriptor(TEST_FAMILY2)); ACCESS_CONTROLLER.preModifyTable(ObserverContextImpl.createAndPrepare(CP_ENV), - TEST_TABLE.getTableName(), htd); + TEST_TABLE.getTableName(), + null, // not needed by AccessController + htd); return null; } }, SUPERUSER, USER_ADMIN, USER_RW, USER_RO, USER_OWNER, USER_CREATE, USER_QUAL, USER_NONE); @@ -700,6 +702,7 @@ public class TestWithDisabledAuthorization extends SecureTestUtil { public Object run() throws Exception { NamespaceDescriptor ns = NamespaceDescriptor.create("test").build(); ACCESS_CONTROLLER.preModifyNamespace(ObserverContextImpl.createAndPrepare(CP_ENV), + null, // not needed by AccessController ns); return null; } -- 2.14.1