aboutsummaryrefslogtreecommitdiff
path: root/launcher/src/main/java/org/apache
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/src/main/java/org/apache')
-rw-r--r--launcher/src/main/java/org/apache/spark/launcher/AbstractCommandBuilder.java5
-rw-r--r--launcher/src/main/java/org/apache/spark/launcher/CommandBuilderUtils.java20
2 files changed, 24 insertions, 1 deletions
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 b8f02b9611..33fd813f7a 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 @@ abstract class AbstractCommandBuilder {
* set it.
*/
void addPermGenSizeOpt(List<String> 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 261402856a..2665a700fe 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,21 @@ class CommandBuilderUtils {
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;
+ }
+
/**
* 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).