From 42a8c3f7af66b9019a18d0abfac3b215a00d7f41 Mon Sep 17 00:00:00 2001 From: Tim Ellison Date: Mon, 11 May 2015 16:22:24 +0100 Subject: [PATCH 1/3] [MINOR] Avoid passing the PermGenSize option to IBM JVMs. --- .../launcher/AbstractCommandBuilder.java | 5 ++++- .../spark/launcher/CommandBuilderUtils.java | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/launcher/src/main/java/org/apache/spark/launcher/AbstractCommandBuilder.java b/launcher/src/main/java/org/apache/spark/launcher/AbstractCommandBuilder.java index b8f02b961113d..33fd813f7a86c 100644 --- a/launcher/src/main/java/org/apache/spark/launcher/AbstractCommandBuilder.java +++ b/launcher/src/main/java/org/apache/spark/launcher/AbstractCommandBuilder.java @@ -121,7 +121,10 @@ List buildJavaCommand(String extraClassPath) throws IOException { * set it. */ void addPermGenSizeOpt(List cmd) { - // Don't set MaxPermSize for Java 8 and later. + // Don't set MaxPermSize for IBM Java, or Oracle Java 8 and later. + if (getJavaVendor() == JavaVendor.IBM) { + return; + } String[] version = System.getProperty("java.version").split("\\."); if (Integer.parseInt(version[0]) > 1 || Integer.parseInt(version[1]) > 7) { return; 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 261402856ac5e..56efa7edf0ba0 100644 --- a/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java +++ b/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java @@ -32,6 +32,11 @@ class CommandBuilderUtils { static final String ENV_SPARK_HOME = "SPARK_HOME"; static final String ENV_SPARK_ASSEMBLY = "_SPARK_ASSEMBLY"; + /** The set of known JVM vendors. */ + static enum JavaVendor { + Oracle, IBM, OpenJDK, Unknown + }; + /** Returns whether the given string is null or empty. */ static boolean isEmpty(String s) { return s == null || s.isEmpty(); @@ -108,6 +113,23 @@ static boolean isWindows() { return os.startsWith("Windows"); } + /** Returns an enum value indicating whose JVM is being used. */ + static JavaVendor getJavaVendor() { + String vendorString = System.getProperty("java.vendor"); + if (vendorString.contains("Oracle")) { + return JavaVendor.Oracle; + } else { + if (vendorString.contains("IBM")) { + return JavaVendor.IBM; + } else { + if (vendorString.contains("OpenJDK")) { + return JavaVendor.OpenJDK; + } + } + } + return JavaVendor.Unknown; + } + /** * Updates the user environment, appending the given pathList to the existing value of the given * environment variable (or setting it if it hasn't yet been set). From 6ad426639dbb1a513b2e3b8060511a53d0b977e3 Mon Sep 17 00:00:00 2001 From: Tim Ellison Date: Wed, 13 May 2015 12:39:05 +0100 Subject: [PATCH 2/3] Remove unnecessary else clauses to reduce nesting. --- .../spark/launcher/CommandBuilderUtils.java | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 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 56efa7edf0ba0..7ce0e741b5579 100644 --- a/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java +++ b/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java @@ -113,22 +113,20 @@ static boolean isWindows() { return os.startsWith("Windows"); } - /** Returns an enum value indicating whose JVM is being used. */ - static JavaVendor getJavaVendor() { - String vendorString = System.getProperty("java.vendor"); - if (vendorString.contains("Oracle")) { - return JavaVendor.Oracle; - } else { - if (vendorString.contains("IBM")) { - return JavaVendor.IBM; - } else { - if (vendorString.contains("OpenJDK")) { - return JavaVendor.OpenJDK; - } - } - } - return JavaVendor.Unknown; - } + /** Returns an enum value indicating whose JVM is being used. */ + static JavaVendor getJavaVendor() { + String vendorString = System.getProperty("java.vendor"); + if (vendorString.contains("Oracle")) { + return JavaVendor.Oracle; + } + if (vendorString.contains("IBM")) { + return JavaVendor.IBM; + } + if (vendorString.contains("OpenJDK")) { + return JavaVendor.OpenJDK; + } + return JavaVendor.Unknown; + } /** * Updates the user environment, appending the given pathList to the existing value of the given From 3a0fb669b44c883765fb0fd069b7bc433d40b46e Mon Sep 17 00:00:00 2001 From: Tim Ellison Date: Wed, 13 May 2015 12:53:15 +0100 Subject: [PATCH 3/3] Convert tabs back to spaces --- .../spark/launcher/CommandBuilderUtils.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 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 7ce0e741b5579..2665a700fe1f5 100644 --- a/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java +++ b/launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java @@ -113,20 +113,20 @@ static boolean isWindows() { return os.startsWith("Windows"); } - /** Returns an enum value indicating whose JVM is being used. */ - static JavaVendor getJavaVendor() { - String vendorString = System.getProperty("java.vendor"); - if (vendorString.contains("Oracle")) { - return JavaVendor.Oracle; - } - if (vendorString.contains("IBM")) { - return JavaVendor.IBM; - } - if (vendorString.contains("OpenJDK")) { - return JavaVendor.OpenJDK; - } - return JavaVendor.Unknown; - } + /** Returns an enum value indicating whose JVM is being used. */ + static JavaVendor getJavaVendor() { + String vendorString = System.getProperty("java.vendor"); + if (vendorString.contains("Oracle")) { + return JavaVendor.Oracle; + } + if (vendorString.contains("IBM")) { + return JavaVendor.IBM; + } + if (vendorString.contains("OpenJDK")) { + return JavaVendor.OpenJDK; + } + return JavaVendor.Unknown; + } /** * Updates the user environment, appending the given pathList to the existing value of the given