aboutsummaryrefslogtreecommitdiff
path: root/launcher
diff options
context:
space:
mode:
authorClaes Redestad <claes.redestad@gmail.com>2016-02-14 11:49:37 +0000
committerSean Owen <sowen@cloudera.com>2016-02-14 11:49:37 +0000
commit22e9723d6208f2cd2dfa26487ea1c041cb9d7dcd (patch)
treeb610c1175d9725f8b88208c0e79126a98d566bd7 /launcher
parent331293c30242dc43e54a25171ca51a1c9330ae44 (diff)
downloadspark-22e9723d6208f2cd2dfa26487ea1c041cb9d7dcd.tar.gz
spark-22e9723d6208f2cd2dfa26487ea1c041cb9d7dcd.tar.bz2
spark-22e9723d6208f2cd2dfa26487ea1c041cb9d7dcd.zip
[SPARK-13278][CORE] Launcher fails to start with JDK 9 EA
See http://openjdk.java.net/jeps/223 for more information about the JDK 9 version string scheme. Author: Claes Redestad <claes.redestad@gmail.com> Closes #11160 from cl4es/master.
Diffstat (limited to 'launcher')
-rw-r--r--launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java20
-rw-r--r--launcher/src/test/java/org/apache/spark/launcher/CommandBuilderUtilsSuite.java12
2 files changed, 29 insertions, 3 deletions
diff --git a/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java b/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java
index d30c2ec5f8..e328c8a341 100644
--- a/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java
+++ b/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java
@@ -322,11 +322,9 @@ class CommandBuilderUtils {
if (getJavaVendor() == JavaVendor.IBM) {
return;
}
- String[] version = System.getProperty("java.version").split("\\.");
- if (Integer.parseInt(version[0]) > 1 || Integer.parseInt(version[1]) > 7) {
+ if (javaMajorVersion(System.getProperty("java.version")) > 7) {
return;
}
-
for (String arg : cmd) {
if (arg.startsWith("-XX:MaxPermSize=")) {
return;
@@ -336,4 +334,20 @@ class CommandBuilderUtils {
cmd.add("-XX:MaxPermSize=256m");
}
+ /**
+ * Get the major version of the java version string supplied. This method
+ * accepts any JEP-223-compliant strings (9-ea, 9+100), as well as legacy
+ * version strings such as 1.7.0_79
+ */
+ static int javaMajorVersion(String javaVersion) {
+ String[] version = javaVersion.split("[+.\\-]+");
+ int major = Integer.parseInt(version[0]);
+ // if major > 1, we're using the JEP-223 version string, e.g., 9-ea, 9+120
+ // otherwise the second number is the major version
+ if (major > 1) {
+ return major;
+ } else {
+ return Integer.parseInt(version[1]);
+ }
+ }
}
diff --git a/launcher/src/test/java/org/apache/spark/launcher/CommandBuilderUtilsSuite.java b/launcher/src/test/java/org/apache/spark/launcher/CommandBuilderUtilsSuite.java
index bc513ec9b3..4fafc43ef2 100644
--- a/launcher/src/test/java/org/apache/spark/launcher/CommandBuilderUtilsSuite.java
+++ b/launcher/src/test/java/org/apache/spark/launcher/CommandBuilderUtilsSuite.java
@@ -87,6 +87,18 @@ public class CommandBuilderUtilsSuite {
assertEquals("\"a \\\"b\\\" c\"", quoteForCommandString("a \"b\" c"));
}
+ @Test
+ public void testJavaMajorVersion() {
+ assertEquals(6, javaMajorVersion("1.6.0_50"));
+ assertEquals(7, javaMajorVersion("1.7.0_79"));
+ assertEquals(8, javaMajorVersion("1.8.0_66"));
+ assertEquals(9, javaMajorVersion("9-ea"));
+ assertEquals(9, javaMajorVersion("9+100"));
+ assertEquals(9, javaMajorVersion("9"));
+ assertEquals(9, javaMajorVersion("9.1.0"));
+ assertEquals(10, javaMajorVersion("10"));
+ }
+
private void testOpt(String opts, List<String> expected) {
assertEquals(String.format("test string failed to parse: [[ %s ]]", opts),
expected, parseOptionString(opts));