diff --git cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java index dd544f3..3357414 100644 --- cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java +++ cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java @@ -148,6 +148,11 @@ public int processCmd(String cmd) { errPrinter.start(); ret = executor.waitFor(); + + // wait for stream threads to finish + outPrinter.join(); + errPrinter.join(); + if (ret != 0) { console.printError("Command failed with exit code = " + ret); } diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java index 326654f..2ce4dbd 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java @@ -276,6 +276,10 @@ public int execute(DriverContext driverContext) { int exitVal = jobExecHelper.progressLocal(executor, getId()); + // wait for stream threads to finish + outPrinter.join(); + errPrinter.join(); + if (exitVal != 0) { LOG.error("Execution failed with exit status: " + exitVal); if (SessionState.get() != null) { diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java index 34b063d..d2e122d 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java @@ -264,6 +264,10 @@ public int execute(DriverContext driverContext) { int exitVal = jobExecHelper.progressLocal(executor, getId()); + // wait for stream threads to finish + outPrinter.join(); + errPrinter.join(); + if (exitVal != 0) { LOG.error("Execution failed with exit status: " + exitVal); if (SessionState.get() != null) {