Index: bin/ext/debug.sh =================================================================== --- bin/ext/debug.sh (revision 1201858) +++ bin/ext/debug.sh (working copy) @@ -39,6 +39,11 @@ childSuspend) child_suspend="suspend=${pair[1]}" ;; + swapSuspend) + tmp=$child_suspend + child_suspend=$main_suspend + main_suspend=$tmp + ;; *) ;; esac @@ -89,5 +94,6 @@ echo "port= Port on which main JVM listens for debug connection. Default: 8000" echo "mainSuspend= Should main JVM wait with execution for the debugger to connect. Default: y" echo "childSuspend= Should child JVMs wait with execution for the debugger to connect. Default: n" + echo "swapSuspend Swaps suspend options between main and child JVMs" echo } Index: ql/src/java/org/apache/hadoop/hive/ql/exec/MapRedTask.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/MapRedTask.java (revision 1201858) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/MapRedTask.java (working copy) @@ -303,7 +303,7 @@ } } - private void configureDebugVariablesForChildJVM(Map environmentVariables) { + static void configureDebugVariablesForChildJVM(Map environmentVariables) { // this method contains various asserts to warn if environment variables are in a buggy state assert environmentVariables.containsKey(HADOOP_CLIENT_OPTS) && environmentVariables.get(HADOOP_CLIENT_OPTS) != null : HADOOP_CLIENT_OPTS @@ -539,7 +539,7 @@ return null; } - + @Override public Operator getReducer() { return getWork().getReducer(); Index: ql/src/java/org/apache/hadoop/hive/ql/exec/MapredLocalTask.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/MapredLocalTask.java (revision 1201858) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/MapredLocalTask.java (working copy) @@ -200,6 +200,11 @@ } else { variables.put(HADOOP_OPTS_KEY, hadoopOpts); } + + if(variables.containsKey(MapRedTask.HIVE_DEBUG_RECURSIVE)) { + MapRedTask.configureDebugVariablesForChildJVM(variables); + } + env = new String[variables.size()]; int pos = 0; for (Map.Entry entry : variables.entrySet()) { @@ -458,7 +463,7 @@ public Collection> getTopOperators() { return getWork().getAliasToWork().values(); } - + @Override public String getName() { return "MAPREDLOCAL";