diff --git a/ql/src/java/org/apache/hadoop/hive/ql/hooks/HookContext.java b/ql/src/java/org/apache/hadoop/hive/ql/hooks/HookContext.java index 260444f..b957ac9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/hooks/HookContext.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/hooks/HookContext.java @@ -42,7 +42,7 @@ } private QueryPlan queryPlan; - private HiveConf conf; + private final HiveConf conf; private List completeTaskList; private Set inputs; private Set outputs; @@ -56,7 +56,9 @@ public HookContext(QueryPlan queryPlan, HiveConf conf, Map inputPathToContentSummary, String userName, String ipAddress) throws Exception { this.queryPlan = queryPlan; - this.conf = conf; + // Underlying configuration object is not thread safe, See : HADOOP-11274 + // so lets create a copy of conf here, since we won't how Hook might manipulate conf. + this.conf = new HiveConf(conf); this.inputPathToContentSummary = inputPathToContentSummary; completeTaskList = new ArrayList(); inputs = queryPlan.getInputs(); @@ -82,10 +84,6 @@ public HiveConf getConf() { return conf; } - public void setConf(HiveConf conf) { - this.conf = conf; - } - public List getCompleteTaskList() { return completeTaskList; }