diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java index cbf0561dfe..6762697dbb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -1893,7 +1893,19 @@ public int execute(boolean deferClose) throws CommandNeedRetryException { if (tskRun == null) { continue; } - hookContext.addCompleteTask(tskRun); + /* + This should be removed eventually. HIVE-17814 gives more detail + explanation of whats happening and HIVE-17815 as to why this is done. + Briefly for replication the graph is huge and so memory pressure is going to be huge if + we keep a lot of references around. + */ + String opName = plan.getOperationName(); + boolean isReplicationOperation = opName.equals(HiveOperation.REPLDUMP.getOperationName()) + || opName.equals(HiveOperation.REPLLOAD.getOperationName()); + if (!isReplicationOperation) { + hookContext.addCompleteTask(tskRun); + } + queryDisplay.setTaskResult(tskRun.getTask().getId(), tskRun.getTaskResult()); Task tsk = tskRun.getTask();