You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ng...@apache.org on 2021/07/09 04:49:05 UTC
[hive] branch master updated: HIVE-25131: PreAlterPartitionEvent
should have table owner details that can be authorized in Ranger
This is an automated email from the ASF dual-hosted git repository.
ngangam pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new f05f933 HIVE-25131: PreAlterPartitionEvent should have table owner details that can be authorized in Ranger
f05f933 is described below
commit f05f933e011a900ef3e2fc836777ee24c908d21d
Author: saihemanth <sa...@cloudera.com>
AuthorDate: Tue May 18 10:11:52 2021 -0700
HIVE-25131: PreAlterPartitionEvent should have table owner details that can be authorized in Ranger
---
.../metastore/events/AlterPartitionEvent.java | 4 ++--
.../apache/hadoop/hive/metastore/HMSHandler.java | 24 ++++++++++------------
.../metastore/events/PreAlterPartitionEvent.java | 7 ++++++-
3 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/metastore/events/AlterPartitionEvent.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/metastore/events/AlterPartitionEvent.java
index f7bedb5..2f9e474 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/metastore/events/AlterPartitionEvent.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/metastore/events/AlterPartitionEvent.java
@@ -60,7 +60,7 @@ public class AlterPartitionEvent extends HiveMetaStoreAuthorizableEvent {
List<HivePrivilegeObject> ret = new ArrayList<>();
PreAlterPartitionEvent event = (PreAlterPartitionEvent) preEventContext;
- ret.add(new HivePrivilegeObject(HivePrivilegeObjectType.TABLE_OR_VIEW, event.getDbName(), event.getTableName()));
+ ret.add(getHivePrivilegeObject(event.getTable()));
LOG.debug("<== AlterPartitionEvent.getInputHObjs() ret={}", ret);
@@ -73,7 +73,7 @@ public class AlterPartitionEvent extends HiveMetaStoreAuthorizableEvent {
List<HivePrivilegeObject> ret = new ArrayList<>();
PreAlterPartitionEvent event = (PreAlterPartitionEvent) preEventContext;
- ret.add(new HivePrivilegeObject(HivePrivilegeObjectType.TABLE_OR_VIEW, event.getDbName(), event.getTableName()));
+ ret.add(getHivePrivilegeObject(event.getTable()));
Partition newPartition = event.getNewPartition();
String newUri = (newPartition != null) ? getSdLocation(newPartition.getSd()) : "";
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
index 81e6e9e..fbcb396 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java
@@ -5741,7 +5741,10 @@ public class HMSHandler extends FacebookBase implements IHMSHandler {
Partition oldPart = null;
Exception ex = null;
try {
- firePreEvent(new PreAlterPartitionEvent(db_name, tbl_name, part_vals, new_part, this));
+ Table table = null;
+ table = getMS().getTable(catName, db_name, tbl_name, null);
+
+ firePreEvent(new PreAlterPartitionEvent(db_name, tbl_name, table, part_vals, new_part, this));
if (part_vals != null && !part_vals.isEmpty()) {
MetaStoreServerUtils.validatePartitionNameCharacters(new_part.getValues(),
partitionValidationPattern);
@@ -5751,12 +5754,8 @@ public class HMSHandler extends FacebookBase implements IHMSHandler {
part_vals, new_part, envContext, this, validWriteIds);
// Only fetch the table if we actually have a listener
- Table table = null;
- if (!listeners.isEmpty()) {
- if (table == null) {
- table = getMS().getTable(catName, db_name, tbl_name, null);
- }
+ if (!listeners.isEmpty()) {
MetaStoreListenerNotifier.notifyEvent(listeners,
EventType.ALTER_PARTITION,
new AlterPartitionEvent(oldPart, new_part, table, false,
@@ -5828,18 +5827,21 @@ public class HMSHandler extends FacebookBase implements IHMSHandler {
Lock tableLock = getTableLockFor(db_name, tbl_name);
tableLock.lock();
try {
+
+ Table table = null;
+ table = getMS().getTable(catName, db_name, tbl_name, null);
+
for (Partition tmpPart : new_parts) {
// Make sure the catalog name is set in the new partition
if (!tmpPart.isSetCatName()) {
tmpPart.setCatName(getDefaultCatalog(conf));
}
- firePreEvent(new PreAlterPartitionEvent(db_name, tbl_name, null, tmpPart, this));
+ firePreEvent(new PreAlterPartitionEvent(db_name, tbl_name, table, null, tmpPart, this));
}
oldParts = alterHandler.alterPartitions(getMS(), wh,
catName, db_name, tbl_name, new_parts, environmentContext, writeIdList, writeId, this);
Iterator<Partition> olditr = oldParts.iterator();
- // Only fetch the table if we have a listener that needs it.
- Table table = null;
+
for (Partition tmpPart : new_parts) {
Partition oldTmpPart;
if (olditr.hasNext()) {
@@ -5849,10 +5851,6 @@ public class HMSHandler extends FacebookBase implements IHMSHandler {
throw new InvalidOperationException("failed to alterpartitions");
}
- if (table == null) {
- table = getMS().getTable(catName, db_name, tbl_name, null);
- }
-
if (!listeners.isEmpty()) {
MetaStoreListenerNotifier.notifyEvent(listeners,
EventType.ALTER_PARTITION,
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/events/PreAlterPartitionEvent.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/events/PreAlterPartitionEvent.java
index a269563..3e07a18 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/events/PreAlterPartitionEvent.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/events/PreAlterPartitionEvent.java
@@ -24,6 +24,7 @@ import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
import org.apache.hadoop.hive.metastore.IHMSHandler;
import org.apache.hadoop.hive.metastore.api.Partition;
+import org.apache.hadoop.hive.metastore.api.Table;
@InterfaceAudience.Public
@InterfaceStability.Stable
@@ -31,14 +32,16 @@ public class PreAlterPartitionEvent extends PreEventContext {
private final String dbName;
private final String tableName;
+ private final Table table;
private final List<String> oldPartVals;
private final Partition newPart;
- public PreAlterPartitionEvent(String dbName, String tableName, List<String> oldPartVals,
+ public PreAlterPartitionEvent(String dbName, String tableName, Table table, List<String> oldPartVals,
Partition newPart, IHMSHandler handler) {
super(PreEventType.ALTER_PARTITION, handler);
this.dbName = dbName;
this.tableName = tableName;
+ this.table = table;
this.oldPartVals = oldPartVals;
this.newPart = newPart;
}
@@ -51,6 +54,8 @@ public class PreAlterPartitionEvent extends PreEventContext {
return tableName;
}
+ public Table getTable() { return table; }
+
public List<String> getOldPartVals() {
return oldPartVals;
}