You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ve...@apache.org on 2023/03/21 12:31:00 UTC
[hive] branch master updated: HIVE-22813: Hive query fails if table location is in remote EZ and it's readonly (Laszlo Vegh, reviewed by Sourabh Badhya, Krisztian Kasa)
This is an automated email from the ASF dual-hosted git repository.
veghlaci05 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 d712239012c HIVE-22813: Hive query fails if table location is in remote EZ and it's readonly (Laszlo Vegh, reviewed by Sourabh Badhya, Krisztian Kasa)
d712239012c is described below
commit d712239012c05a27170680e934a51954d579bbb9
Author: veghlaci05 <ve...@gmail.com>
AuthorDate: Tue Mar 21 13:30:40 2023 +0100
HIVE-22813: Hive query fails if table location is in remote EZ and it's readonly (Laszlo Vegh, reviewed by Sourabh Badhya, Krisztian Kasa)
---
.../org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java | 14 +++++++-------
.../java/org/apache/hadoop/hive/shims/Hadoop23Shims.java | 5 +++--
.../java/org/apache/hadoop/hive/shims/HadoopShims.java | 5 +++--
3 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 0b51b46b1c2..37386c93df1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -2592,15 +2592,15 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
* @throws HiveException If an error occurs while comparing key strengths.
*/
private int comparePathKeyStrength(Path p1, Path p2) throws HiveException {
- HadoopShims.HdfsEncryptionShim hdfsEncryptionShim;
+ try {
+ HadoopShims.HdfsEncryptionShim hdfsEncryptionShim1 = SessionState.get().getHdfsEncryptionShim(p1.getFileSystem(conf), conf);
+ HadoopShims.HdfsEncryptionShim hdfsEncryptionShim2 = SessionState.get().getHdfsEncryptionShim(p2.getFileSystem(conf), conf);
- hdfsEncryptionShim = SessionState.get().getHdfsEncryptionShim();
- if (hdfsEncryptionShim != null) {
- try {
- return hdfsEncryptionShim.comparePathKeyStrength(p1, p2);
- } catch (Exception e) {
- throw new HiveException("Unable to compare key strength for " + p1 + " and " + p2 + " : " + e, e);
+ if (hdfsEncryptionShim1 != null && hdfsEncryptionShim2 != null) {
+ return hdfsEncryptionShim1.comparePathKeyStrength(p1, p2, hdfsEncryptionShim2);
}
+ } catch (Exception e) {
+ throw new HiveException("Unable to compare key strength for " + p1 + " and " + p2 + " : " + e, e);
}
return 0; // Non-encrypted path (or equals strength)
diff --git a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java
index c02815b9a5c..d42d840170d 100644
--- a/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java
+++ b/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java
@@ -1419,15 +1419,16 @@ public class Hadoop23Shims extends HadoopShimsSecure {
*
* @param path1 First path to compare
* @param path2 Second path to compare
+ * @param encryptionShim2 The encryption-shim corresponding to path2.
* @return 1 if path1 is stronger; 0 if paths are equals; -1 if path1 is weaker.
* @throws IOException If an error occurred attempting to get key metadata
*/
@Override
- public int comparePathKeyStrength(Path path1, Path path2) throws IOException {
+ public int comparePathKeyStrength(Path path1, Path path2, HadoopShims.HdfsEncryptionShim encryptionShim2) throws IOException {
EncryptionZone zone1, zone2;
zone1 = getEncryptionZoneForPath(path1);
- zone2 = getEncryptionZoneForPath(path2);
+ zone2 = ((HdfsEncryptionShim)encryptionShim2).hdfsAdmin.getEncryptionZoneForPath(path2);
if (zone1 == null && zone2 == null) {
return 0;
diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java
index 036153b4c99..5937f5d7a59 100644
--- a/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java
+++ b/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java
@@ -608,10 +608,11 @@ public interface HadoopShims {
*
* @param path1 HDFS path to compare.
* @param path2 HDFS path to compare.
+ * @param encryptionShim2 The encryption-shim corresponding to path2.
* @return 1 if path1 is stronger; 0 if paths are equals; -1 if path1 is weaker.
* @throws IOException If an error occurred attempting to get encryption/key metadata
*/
- public int comparePathKeyStrength(Path path1, Path path2) throws IOException;
+ public int comparePathKeyStrength(Path path1, Path path2, HdfsEncryptionShim encryptionShim2) throws IOException;
/**
* Create encryption zone by path and keyname.
@@ -671,7 +672,7 @@ public interface HadoopShims {
}
@Override
- public int comparePathKeyStrength(Path path1, Path path2) throws IOException {
+ public int comparePathKeyStrength(Path path1, Path path2, HdfsEncryptionShim encryptionShim2) throws IOException {
/* not supported */
return 0;
}