HIVE-19381: Function replication in cloud fail when download resource from AWS (Daniel Dai, reviewed by Thejas Nair)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/a9105ced Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/a9105ced Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/a9105ced Branch: refs/heads/branch-3.0.0 Commit: a9105ced0c7d6684e590f536f2299435076d29c9 Parents: 6936c9c Author: Daniel Dai <[email protected]> Authored: Mon May 14 13:25:58 2018 -0700 Committer: Daniel Dai <[email protected]> Committed: Mon May 14 13:25:58 2018 -0700 ---------------------------------------------------------------------- ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionTask.java | 6 ++++++ .../java/org/apache/hadoop/hive/ql/session/SessionState.java | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/a9105ced/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionTask.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionTask.java index a0a90a9..b9d6f58 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionTask.java @@ -30,6 +30,7 @@ import com.google.common.collect.Multimap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.Function; import org.apache.hadoop.hive.metastore.api.PrincipalType; import org.apache.hadoop.hive.metastore.api.ResourceType; @@ -165,7 +166,9 @@ public class FunctionTask extends Task<FunctionWork> { checkLocalFunctionResources(db, createFunctionDesc.getResources()); FunctionInfo registered = null; + HiveConf oldConf = SessionState.get().getConf(); try { + SessionState.get().setConf(conf); registered = FunctionRegistry.registerPermanentFunction( registeredName, className, true, toFunctionResource(resources)); } catch (RuntimeException ex) { @@ -173,7 +176,10 @@ public class FunctionTask extends Task<FunctionWork> { while (t.getCause() != null) { t = t.getCause(); } + } finally { + SessionState.get().setConf(oldConf); } + if (registered == null) { console.printError("Failed to register " + registeredName + " using class " + createFunctionDesc.getClassName()); http://git-wip-us.apache.org/repos/asf/hive/blob/a9105ced/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index 6bb756c..89129f9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -135,7 +135,7 @@ public class SessionState { /** * current configuration. */ - private final HiveConf sessionConf; + private HiveConf sessionConf; /** * silent mode. @@ -308,6 +308,9 @@ public class SessionState { return sessionConf; } + public void setConf(HiveConf conf) { + this.sessionConf = conf; + } public File getTmpOutputFile() { return tmpOutputFile;
