You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2013/03/29 06:43:10 UTC
svn commit: r1462406 - in /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql:
Driver.java exec/ExecDriver.java exec/MapRedTask.java
exec/MapredLocalTask.java exec/Task.java
Author: navis
Date: Fri Mar 29 05:43:10 2013
New Revision: 1462406
URL: http://svn.apache.org/r1462406
Log:
HIVE-2264 Hive server is SHUTTING DOWN when invalid queries beeing executed
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecDriver.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapRedTask.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapredLocalTask.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java?rev=1462406&r1=1462405&r2=1462406&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java Fri Mar 29 05:43:10 2013
@@ -1144,8 +1144,8 @@ public class Driver implements CommandPr
int exitVal = tskRes.getExitVal();
if (exitVal != 0) {
if (tsk.ifRetryCmdWhenFail()) {
- if (running.size() != 0) {
- taskCleanup();
+ if (!running.isEmpty()) {
+ taskCleanup(running);
}
// in case we decided to run everything in local mode, restore the
// the jobtracker setting to its initial value
@@ -1189,8 +1189,8 @@ public class Driver implements CommandPr
}
SQLState = "08S01";
console.printError(errorMessage);
- if (running.size() != 0) {
- taskCleanup();
+ if (!running.isEmpty()) {
+ taskCleanup(running);
}
// in case we decided to run everything in local mode, restore the
// the jobtracker setting to its initial value
@@ -1355,12 +1355,18 @@ public class Driver implements CommandPr
/**
* Cleans up remaining tasks in case of failure
*/
-
- public void taskCleanup() {
- // The currently existing Shutdown hooks will be automatically called,
- // killing the map-reduce processes.
- // The non MR processes will be killed as well.
- System.exit(9);
+ public void taskCleanup(Map<TaskResult, TaskRunner> running) {
+ for (Map.Entry<TaskResult, TaskRunner> entry : running.entrySet()) {
+ if (entry.getKey().isRunning()) {
+ Task<?> task = entry.getValue().getTask();
+ try {
+ task.shutdown();
+ } catch (Exception e) {
+ console.printError("Exception on shutting down task " + task.getId() + ": " + e);
+ }
+ }
+ }
+ running.clear();
}
/**
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecDriver.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecDriver.java?rev=1462406&r1=1462405&r2=1462406&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecDriver.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecDriver.java Fri Mar 29 05:43:10 2013
@@ -25,7 +25,6 @@ import java.io.OutputStream;
import java.io.Serializable;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -89,7 +88,6 @@ import org.apache.log4j.Appender;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.FileAppender;
import org.apache.log4j.LogManager;
-import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.varia.NullAppender;
/**
@@ -107,6 +105,8 @@ public class ExecDriver extends Task<Map
protected static transient final Log LOG = LogFactory.getLog(ExecDriver.class);
+ private RunningJob rj;
+
/**
* Constructor when invoked from QL.
*/
@@ -358,7 +358,6 @@ public class ExecDriver extends Task<Map
initializeFiles("tmpfiles", addedFiles);
}
int returnVal = 0;
- RunningJob rj = null;
boolean noName = StringUtils.isEmpty(HiveConf.getVar(job, HiveConf.ConfVars.HADOOPJOBNAME));
if (noName) {
@@ -980,4 +979,17 @@ public class ExecDriver extends Task<Map
public void logPlanProgress(SessionState ss) throws IOException {
ss.getHiveHistory().logPlanProgress(queryPlan);
}
+
+ @Override
+ public void shutdown() {
+ super.shutdown();
+ if (rj != null) {
+ try {
+ rj.killJob();
+ } catch (Exception e) {
+ LOG.warn("failed to kill job " + rj.getID(), e);
+ }
+ rj = null;
+ }
+ }
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapRedTask.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapRedTask.java?rev=1462406&r1=1462405&r2=1462406&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapRedTask.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapRedTask.java Fri Mar 29 05:43:10 2013
@@ -69,6 +69,8 @@ public class MapRedTask extends ExecDriv
private transient long totalInputFileSize;
private transient long totalInputNumFiles;
+ private Process executor;
+
public MapRedTask() {
super();
}
@@ -210,7 +212,6 @@ public class MapRedTask extends ExecDriv
}
LOG.info("Executing: " + cmdLine);
- Process executor = null;
// Inherit Java system variables
String hadoopOpts;
@@ -579,4 +580,13 @@ public class MapRedTask extends ExecDriv
public Operator<? extends OperatorDesc> getReducer() {
return getWork().getReducer();
}
+
+ @Override
+ public void shutdown() {
+ super.shutdown();
+ if (executor != null) {
+ executor.destroy();
+ executor = null;
+ }
+ }
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapredLocalTask.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapredLocalTask.java?rev=1462406&r1=1462405&r2=1462406&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapredLocalTask.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapredLocalTask.java Fri Mar 29 05:43:10 2013
@@ -77,6 +77,8 @@ public class MapredLocalTask extends Tas
// will pass this context throught
private final ExecMapperContext execContext = new ExecMapperContext();
+ private Process executor;
+
public MapredLocalTask() {
super();
}
@@ -155,7 +157,6 @@ public class MapredLocalTask extends Tas
}
LOG.info("Executing: " + cmdLine);
- Process executor = null;
// Inherit Java system variables
String hadoopOpts;
@@ -462,4 +463,12 @@ public class MapredLocalTask extends Tas
return StageType.MAPREDLOCAL;
}
+ @Override
+ public void shutdown() {
+ super.shutdown();
+ if (executor != null) {
+ executor.destroy();
+ executor = null;
+ }
+ }
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java?rev=1462406&r1=1462405&r2=1462406&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Task.java Fri Mar 29 05:43:10 2013
@@ -518,6 +518,9 @@ public abstract class Task<T extends Ser
return jobID;
}
+ public void shutdown() {
+ }
+
public List<FieldSchema> getResultSchema() {
return null;
}