Skip to content

Commit 2b671d6

Browse files
authored
TEZ-4299: Default java opts cause jdk11 to fail (#116) (Laszlo Bodor reviewed by Jonathan Turner Eagles)
1 parent 2dcbe0b commit 2b671d6

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

tez-api/src/main/java/org/apache/tez/common/TezCommonUtils.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,4 +566,10 @@ public static long getDAGSessionTimeout(Configuration conf) {
566566
return 1000l * timeoutSecs;
567567
}
568568

569+
public static int getJavaVersion() {
570+
String javaVersionString = System.getProperty("java.version");
571+
return javaVersionString.split("\\.")[0].equals("1")
572+
? Integer.parseInt(javaVersionString.split("\\.")[1]) // "1.8" -> 8
573+
: Integer.parseInt(javaVersionString.split("\\.")[0]); // "9.x" -> 9, "11.x" -> 11
574+
}
569575
}

tez-api/src/main/java/org/apache/tez/dag/api/TezConfiguration.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.apache.hadoop.conf.Configuration;
3434
import org.apache.hadoop.util.Shell;
3535
import org.apache.hadoop.yarn.api.records.LocalResource;
36+
import org.apache.tez.common.TezCommonUtils;
3637
import org.apache.tez.common.annotation.ConfigurationClass;
3738
import org.apache.tez.common.annotation.ConfigurationProperty;
3839
import org.apache.tez.dag.api.EdgeProperty.ConcurrentEdgeTriggerType;
@@ -343,8 +344,11 @@ public TezConfiguration(boolean loadDefaults) {
343344
@ConfigurationScope(Scope.AM)
344345
@ConfigurationProperty
345346
public static final String TEZ_AM_LAUNCH_CMD_OPTS = TEZ_AM_PREFIX + "launch.cmd-opts";
346-
public static final String TEZ_AM_LAUNCH_CMD_OPTS_DEFAULT =
347+
public static final String TEZ_AM_LAUNCH_CMD_OPTS_JDK8_DEFAULT =
347348
"-XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseParallelGC";
349+
public static final String TEZ_AM_LAUNCH_CMD_OPTS_JDK9_DEFAULT =
350+
"-verbose:gc -Xlog:gc*,safepoint::time,uptime -XX:+UseNUMA -XX:+UseParallelGC";
351+
public static final String TEZ_AM_LAUNCH_CMD_OPTS_DEFAULT;
348352

349353
/**
350354
* String value. Command line options which will be prepended to {@link
@@ -368,8 +372,21 @@ public TezConfiguration(boolean loadDefaults) {
368372
@ConfigurationProperty
369373
public static final String TEZ_TASK_LAUNCH_CMD_OPTS = TEZ_TASK_PREFIX
370374
+ "launch.cmd-opts";
371-
public static final String TEZ_TASK_LAUNCH_CMD_OPTS_DEFAULT =
375+
public static final String TEZ_TASK_LAUNCH_CMD_OPTS_JDK8_DEFAULT =
372376
"-XX:+PrintGCDetails -verbose:gc -XX:+PrintGCTimeStamps -XX:+UseNUMA -XX:+UseParallelGC";
377+
public static final String TEZ_TASK_LAUNCH_CMD_OPTS_JDK9_DEFAULT =
378+
"-verbose:gc -Xlog:gc*,safepoint::time,uptime -XX:+UseNUMA -XX:+UseParallelGC";
379+
public static final String TEZ_TASK_LAUNCH_CMD_OPTS_DEFAULT;
380+
381+
static {
382+
if (TezCommonUtils.getJavaVersion() >= 9) {
383+
TEZ_AM_LAUNCH_CMD_OPTS_DEFAULT = TEZ_AM_LAUNCH_CMD_OPTS_JDK9_DEFAULT;
384+
TEZ_TASK_LAUNCH_CMD_OPTS_DEFAULT = TEZ_TASK_LAUNCH_CMD_OPTS_JDK9_DEFAULT;
385+
} else {
386+
TEZ_AM_LAUNCH_CMD_OPTS_DEFAULT = TEZ_AM_LAUNCH_CMD_OPTS_JDK8_DEFAULT;
387+
TEZ_TASK_LAUNCH_CMD_OPTS_DEFAULT = TEZ_TASK_LAUNCH_CMD_OPTS_JDK8_DEFAULT;
388+
}
389+
}
373390

374391
/**
375392
* Double value. Tez automatically determines the Xmx for the JVMs used to run

0 commit comments

Comments
 (0)