diff --git a/hbase-endpoint/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java b/hbase-endpoint/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
index f24583d797e..2a4b4f3581f 100644
--- a/hbase-endpoint/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
+++ b/hbase-endpoint/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
@@ -80,6 +80,7 @@ public class SecureBulkLoadEndpoint extends SecureBulkLoadService
try {
SecureBulkLoadManager secureBulkLoadManager =
this.env.getRegionServerServices().getSecureBulkLoadManager();
+
String bulkToken = secureBulkLoadManager.prepareBulkLoad(this.env.getRegion(),
convert(request));
done.run(PrepareBulkLoadResponse.newBuilder().setBulkToken(bulkToken).build());
@@ -115,6 +116,10 @@ public class SecureBulkLoadEndpoint extends SecureBulkLoadService
done.run(null);
}
+ /**
+ * Convert from CPEP protobuf 2.5 to internal protobuf 3.3.
+ * @throws org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException
+ */
org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest
convert(CleanupBulkLoadRequest request)
throws org.apache.hadoop.hbase.shaded.com.google.protobuf.InvalidProtocolBufferException {
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BulkLoadObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BulkLoadObserver.java
index e9cd4939fb4..e891cc0fda9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BulkLoadObserver.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BulkLoadObserver.java
@@ -23,6 +23,7 @@ import java.io.IOException;
import org.apache.hadoop.hbase.Coprocessor;
import org.apache.hadoop.hbase.HBaseInterfaceAudience;
+import org.apache.hadoop.hbase.TableName;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.yetus.audience.InterfaceStability;
import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest;
@@ -52,16 +53,22 @@ public interface BulkLoadObserver extends Coprocessor {
/**
* Called as part of SecureBulkLoadEndpoint.prepareBulkLoad() RPC call.
* It can't bypass the default action, e.g., ctx.bypass() won't have effect.
+ * If you need to get the region or table name, get it from the
+ * ctx
as follows: code>ctx.getEnvironment().getRegion()
. Use
+ * getRegionInfo to fetch the encodedName and use getTabldDescriptor() to get the tableName.
* @param ctx the environment to interact with the framework and master
*/
- default void prePrepareBulkLoad(ObserverContext ctx,
- PrepareBulkLoadRequest request) throws IOException {}
+ default void prePrepareBulkLoad(ObserverContext ctx)
+ throws IOException {}
/**
* Called as part of SecureBulkLoadEndpoint.cleanupBulkLoad() RPC call.
* It can't bypass the default action, e.g., ctx.bypass() won't have effect.
+ * If you need to get the region or table name, get it from the
+ * ctx
as follows: code>ctx.getEnvironment().getRegion()
. Use
+ * getRegionInfo to fetch the encodedName and use getTabldDescriptor() to get the tableName.
* @param ctx the environment to interact with the framework and master
*/
- default void preCleanupBulkLoad(ObserverContext ctx,
- CleanupBulkLoadRequest request) throws IOException {}
+ default void preCleanupBulkLoad(ObserverContext ctx)
+ throws IOException {}
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RowProcessor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RowProcessor.java
index f0fae050005..625d9a67b0d 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RowProcessor.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RowProcessor.java
@@ -32,7 +32,7 @@ import org.apache.hadoop.hbase.wal.WALEdit;
import com.google.protobuf.Message;
/**
- * Defines the procedure to atomically perform multiple scans and mutations
+ * Defines the procedures to atomically perform multiple scans and mutations
* on a HRegion.
*
* This is invoked by {@link Region#processRowsWithLocks(RowProcessor)}.
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.java
index 66773d043cf..d2b8567c52b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.java
@@ -29,6 +29,7 @@ import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.hbase.DoNotRetryIOException;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.coprocessor.BulkLoadObserver;
@@ -145,7 +146,7 @@ public class SecureBulkLoadManager {
.findCoprocessorEnvironment(BulkLoadObserver.class).get(0));
for (BulkLoadObserver bulkLoadObserver : bulkLoadObservers) {
- bulkLoadObserver.prePrepareBulkLoad(ctx, request);
+ bulkLoadObserver.prePrepareBulkLoad(ctx);
}
}
@@ -166,7 +167,7 @@ public class SecureBulkLoadManager {
.findCoprocessorEnvironment(BulkLoadObserver.class).get(0));
for (BulkLoadObserver bulkLoadObserver : bulkLoadObservers) {
- bulkLoadObserver.preCleanupBulkLoad(ctx, request);
+ bulkLoadObserver.preCleanupBulkLoad(ctx);
}
}
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 e58b35ec05f..5302baf89e1 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
@@ -2155,12 +2155,11 @@ public class AccessController implements MasterObserver, RegionObserver, RegionS
* Authorization check for
* SecureBulkLoadProtocol.prepareBulkLoad()
* @param ctx the context
- * @param request the request
* @throws IOException
*/
@Override
- public void prePrepareBulkLoad(ObserverContext ctx,
- PrepareBulkLoadRequest request) throws IOException {
+ public void prePrepareBulkLoad(ObserverContext ctx)
+ throws IOException {
requireAccess(getActiveUser(ctx), "prePrepareBulkLoad",
ctx.getEnvironment().getRegion().getTableDescriptor().getTableName(), Action.CREATE);
}
@@ -2169,12 +2168,11 @@ public class AccessController implements MasterObserver, RegionObserver, RegionS
* Authorization security check for
* SecureBulkLoadProtocol.cleanupBulkLoad()
* @param ctx the context
- * @param request the request
* @throws IOException
*/
@Override
- public void preCleanupBulkLoad(ObserverContext ctx,
- CleanupBulkLoadRequest request) throws IOException {
+ public void preCleanupBulkLoad(ObserverContext ctx)
+ throws IOException {
requireAccess(getActiveUser(ctx), "preCleanupBulkLoad",
ctx.getEnvironment().getRegion().getTableDescriptor().getTableName(), Action.CREATE);
}
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 70e4e92d516..4fb26d6de5c 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
@@ -2878,16 +2878,14 @@ public class TestAccessController extends SecureTestUtil {
AccessTestAction prepareBulkLoadAction = new AccessTestAction() {
@Override
public Object run() throws Exception {
- ACCESS_CONTROLLER.prePrepareBulkLoad(ObserverContext.createAndPrepare(RCP_ENV, null),
- null);
+ ACCESS_CONTROLLER.prePrepareBulkLoad(ObserverContext.createAndPrepare(RCP_ENV, null));
return null;
}
};
AccessTestAction cleanupBulkLoadAction = new AccessTestAction() {
@Override
public Object run() throws Exception {
- ACCESS_CONTROLLER.preCleanupBulkLoad(ObserverContext.createAndPrepare(RCP_ENV, null),
- null);
+ ACCESS_CONTROLLER.preCleanupBulkLoad(ObserverContext.createAndPrepare(RCP_ENV, null));
return null;
}
};