This is an automated email from the ASF dual-hosted git repository. alexott pushed a commit to branch branch-0.9 in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/branch-0.9 by this push: new 8c6cb0a [ZEPPELIN-4758] Additional cleanup for Java 8 support 8c6cb0a is described below commit 8c6cb0abd496e488b6552b5d5316bf25f1038c67 Author: Alex Ott <alex...@gmail.com> AuthorDate: Sun Apr 19 13:04:26 2020 +0200 [ZEPPELIN-4758] Additional cleanup for Java 8 support ### What is this PR for? Improve Java 8 support: - Remove obsolete Java options - add the check for minimum Java version (Java 8u151) to `zeppelin.sh` & `interpreter.sh` ### What type of PR is it? Refactoring ### What is the Jira issue? * ZEPPELIN-4758 ### How should this be tested? * https://travis-ci.org/github/alexott/zeppelin/builds/677566776 Author: Alex Ott <alex...@gmail.com> Closes #3738 from alexott/ZEPPELIN-4758 and squashes the following commits: e607ee61a [Alex Ott] [ZEPPELIN-4758] Additional cleanup for Java 8 support (cherry picked from commit b68248b542cab019609ff3a91ec82879ceb8c45a) Signed-off-by: Alex Ott <alex...@apache.org> --- .travis.yml | 4 ++-- bin/common.sh | 14 ++++++++++++++ bin/interpreter.sh | 7 +++++-- bin/zeppelin.sh | 6 ++++-- conf/zeppelin-env.cmd.template | 4 ++-- conf/zeppelin-env.sh.template | 4 ++-- dev/publish_release.sh | 2 +- docs/quickstart/install.md | 4 ++-- docs/setup/basics/how_to_build.md | 2 +- docs/setup/operation/configuration.md | 2 +- docs/setup/operation/upgrading.md | 2 +- flink/pom.xml | 3 +-- pom.xml | 3 +-- r/pom.xml | 2 +- rlang/pom.xml | 2 +- scio/pom.xml | 2 +- spark/interpreter/pom.xml | 2 +- spark/pom.xml | 3 +-- spark/spark-dependencies/pom.xml | 2 +- spark/spark-scala-parent/pom.xml | 3 +-- 20 files changed, 44 insertions(+), 29 deletions(-) diff --git a/.travis.yml b/.travis.yml index d607a44..cdf1f93 100644 --- a/.travis.yml +++ b/.travis.yml @@ -170,7 +170,7 @@ before_install: - gitlog=$(git log $TRAVIS_COMMIT_RANGE 2>/dev/null) || gitlog="" - clearcache=$(echo $gitlog | grep -c -E "clear bower|bower clear" || true) - if [ "$hasbowerchanged" -gt 0 ] || [ "$clearcache" -gt 0 ]; then echo "Clearing bower_components cache"; rm -r zeppelin-web/bower_components; npm cache verify; else echo "Using cached bower_components."; fi - - echo "MAVEN_OPTS='-Xms1024M -Xmx2048M -XX:MaxPermSize=1024m -XX:-UseGCOverheadLimit -Dorg.slf4j.simpleLogger.defaultLogLevel=warn'" >> ~/.mavenrc + - echo "MAVEN_OPTS='-Xms1024M -Xmx2048M -XX:MaxMetaspaceSize=1024m -XX:-UseGCOverheadLimit -Dorg.slf4j.simpleLogger.defaultLogLevel=warn'" >> ~/.mavenrc - bash -x ./testing/install_external_dependencies.sh - ls -la .spark-dist ${HOME}/.m2/repository/.cache/maven-download-plugin || true - ls .node_modules && cp -r .node_modules zeppelin-web/node_modules || echo "node_modules are not cached" @@ -197,7 +197,7 @@ before_script: # https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-xvfb-to-Run-Tests-That-Require-a-GUI - if [[ -n $TEST_MODULES ]]; then export DISPLAY=:99.0; sh -e /etc/init.d/xvfb start; sleep 3; fi # display info log for debugging - - if [[ -n $TEST_MODULES ]]; then echo "MAVEN_OPTS='-Xms1024M -Xmx2048M -XX:MaxPermSize=1024m -XX:-UseGCOverheadLimit -Dorg.slf4j.simpleLogger.defaultLogLevel=info'" > ~/.mavenrc; fi + - if [[ -n $TEST_MODULES ]]; then echo "MAVEN_OPTS='-Xms1024M -Xmx2048M -XX:MaxMetaspaceSize=1024m -XX:-UseGCOverheadLimit -Dorg.slf4j.simpleLogger.defaultLogLevel=info'" > ~/.mavenrc; fi script: - if [[ -n $TEST_MODULES ]]; then export MODULES="${TEST_MODULES}"; fi diff --git a/bin/common.sh b/bin/common.sh index c9b01dd..eb959e1 100644 --- a/bin/common.sh +++ b/bin/common.sh @@ -62,6 +62,20 @@ fi ZEPPELIN_CLASSPATH+=":${ZEPPELIN_CONF_DIR}" +function check_java_version() { + java_ver_output=$("${JAVA:-java}" -version 2>&1) + jvmver=$(echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}' | cut -d\- -f1) + JVM_VERSION=$(echo "$jvmver"|sed -e 's|^\([0-9]\+\)\..*$|\1|') + if [ "$JVM_VERSION" = "1" ]; then + JVM_VERSION=$(echo "$jvmver"|sed -e 's|^1\.\([0-9]\+\)\..*$|\1|') + fi + + if [ "$JVM_VERSION" -lt 8 ] || ([ "$JVM_VERSION" -eq 8 ] && [ "${jvmver#*_}" -lt 151 ]) ; then + echo "Apache Zeppelin requires either Java 8 update 151 or newer" + exit 1; + fi +} + function addEachJarInDir(){ if [[ -d "${1}" ]]; then for jar in $(find -L "${1}" -maxdepth 1 -name '*jar'); do diff --git a/bin/interpreter.sh b/bin/interpreter.sh index 672f307..e165fa4 100755 --- a/bin/interpreter.sh +++ b/bin/interpreter.sh @@ -17,8 +17,8 @@ # -bin=$(dirname "${BASH_SOURCE-$0}") -bin=$(cd "${bin}">/dev/null; pwd) +bin="$(dirname "${BASH_SOURCE-$0}")" +bin="$(cd "${bin}">/dev/null; pwd)" function usage() { echo "usage) $0 -p <port> -r <intp_port> -d <interpreter dir to load> -l <local interpreter repo dir to load> -g <interpreter group name>" @@ -92,6 +92,9 @@ fi . "${bin}/common.sh" +check_java_version + + ZEPPELIN_INTERPRETER_API_JAR=$(find "${ZEPPELIN_HOME}/interpreter" -name 'zeppelin-interpreter-shaded-*.jar') ZEPPELIN_INTP_CLASSPATH="${CLASSPATH}:${ZEPPELIN_INTERPRETER_API_JAR}" diff --git a/bin/zeppelin.sh b/bin/zeppelin.sh index d559618..d8cf00b 100755 --- a/bin/zeppelin.sh +++ b/bin/zeppelin.sh @@ -72,11 +72,13 @@ do done set -- "${POSITIONAL[@]}" # restore positional parameters -bin=$(dirname "${BASH_SOURCE-$0}") -bin=$(cd "${bin}">/dev/null; pwd) +bin="$(dirname "${BASH_SOURCE-$0}")" +bin="$(cd "${bin}">/dev/null; pwd)" . "${bin}/common.sh" +check_java_version + if [ "$1" == "--version" ] || [ "$1" == "-v" ]; then getZeppelinVersion fi diff --git a/conf/zeppelin-env.cmd.template b/conf/zeppelin-env.cmd.template index 83b5ee7..ee3c798 100644 --- a/conf/zeppelin-env.cmd.template +++ b/conf/zeppelin-env.cmd.template @@ -19,8 +19,8 @@ REM REM set JAVA_HOME= REM set MASTER= REM Spark master url. eg. spark://master_addr:7077. Leave empty if you want to use local mode. REM set ZEPPELIN_JAVA_OPTS REM Additional jvm options. for example, set ZEPPELIN_JAVA_OPTS="-Dspark.executor.memory=8g -Dspark.cores.max=16" -REM set ZEPPELIN_MEM REM Zeppelin jvm mem options Default -Xms1024m -Xmx1024m -XX:MaxPermSize=512m -REM set ZEPPELIN_INTP_MEM REM zeppelin interpreter process jvm mem options. Default -Xmx1024m -Xms1024m -XX:MaxPermSize=512m +REM set ZEPPELIN_MEM REM Zeppelin jvm mem options Default -Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=512m +REM set ZEPPELIN_INTP_MEM REM zeppelin interpreter process jvm mem options. Default -Xmx1024m -Xms1024m -XX:MaxMetaspaceSize=512m REM set ZEPPELIN_INTP_JAVA_OPTS REM zeppelin interpreter process jvm options. REM set ZEPPELIN_JMX_ENABLE REM Enable JMX feature by defining it like "true" REM set ZEPPELIN_JMX_PORT REM Port number which JMX uses. If not set, JMX won't be enabled diff --git a/conf/zeppelin-env.sh.template b/conf/zeppelin-env.sh.template index c31dd67..ee03635 100644 --- a/conf/zeppelin-env.sh.template +++ b/conf/zeppelin-env.sh.template @@ -22,8 +22,8 @@ # export ZEPPELIN_PORT # port number to listen (default 8080) # export ZEPPELIN_LOCAL_IP # Zeppelin's thrift server ip address, if not specified, one random IP address will be choosen. # export ZEPPELIN_JAVA_OPTS # Additional jvm options. for example, export ZEPPELIN_JAVA_OPTS="-Dspark.executor.memory=8g -Dspark.cores.max=16" -# export ZEPPELIN_MEM # Zeppelin jvm mem options Default -Xms1024m -Xmx1024m -XX:MaxPermSize=512m -# export ZEPPELIN_INTP_MEM # zeppelin interpreter process jvm mem options. Default -Xms1024m -Xmx1024m -XX:MaxPermSize=512m +# export ZEPPELIN_MEM # Zeppelin jvm mem options Default -Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=512m +# export ZEPPELIN_INTP_MEM # zeppelin interpreter process jvm mem options. Default -Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=512m # export ZEPPELIN_INTP_JAVA_OPTS # zeppelin interpreter process jvm options. # export ZEPPELIN_SSL_PORT # ssl port (used when ssl environment variable is set to true) # export ZEPPELIN_JMX_ENABLE # Enable JMX feature by defining "true" diff --git a/dev/publish_release.sh b/dev/publish_release.sh index 3c8ecf6..b389fd7 100755 --- a/dev/publish_release.sh +++ b/dev/publish_release.sh @@ -36,7 +36,7 @@ for var in GPG_PASSPHRASE ASF_USERID ASF_PASSWORD; do fi done -export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512m" +export MAVEN_OPTS="-Xmx2g -XX:MaxMetaspaceSize=512m" RED='\033[0;31m' NC='\033[0m' # No Color diff --git a/docs/quickstart/install.md b/docs/quickstart/install.md index 4ed778d..f0c3985 100644 --- a/docs/quickstart/install.md +++ b/docs/quickstart/install.md @@ -35,8 +35,8 @@ Apache Zeppelin officially supports and is tested on the following environments: <th>Value</th> </tr> <tr> - <td>Oracle JDK</td> - <td>1.8 (171) <br /> (set <code>JAVA_HOME</code>)</td> + <td>OpenJDK or Oracle JDK</td> + <td>1.8 (151+) <br /> (set <code>JAVA_HOME</code>)</td> </tr> <tr> <td>OS</td> diff --git a/docs/setup/basics/how_to_build.md b/docs/setup/basics/how_to_build.md index 209f169..af0e530 100644 --- a/docs/setup/basics/how_to_build.md +++ b/docs/setup/basics/how_to_build.md @@ -237,7 +237,7 @@ sudo ln -s /usr/local/apache-maven-3.3.9/bin/mvn /usr/local/bin/mvn _Notes:_ - Ensure node is installed by running `node --version` - Ensure maven is running version 3.1.x or higher with `mvn -version` - - Configure maven to use more memory than usual by `export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=1024m"` + - Configure maven to use more memory than usual by `export MAVEN_OPTS="-Xmx2g -XX:MaxMetaspaceSize=512m"` diff --git a/docs/setup/operation/configuration.md b/docs/setup/operation/configuration.md index cadbc21..584b8c2 100644 --- a/docs/setup/operation/configuration.md +++ b/docs/setup/operation/configuration.md @@ -74,7 +74,7 @@ If both are defined, then the **environment variables** will take priority. <tr> <td><h6 class="properties">ZEPPELIN_MEM</h6></td> <td>N/A</td> - <td>-Xmx1024m -XX:MaxPermSize=512m</td> + <td>-Xmx1024m -XX:MaxMetaspaceSize=512m</td> <td>JVM mem options</td> </tr> <tr> diff --git a/docs/setup/operation/upgrading.md b/docs/setup/operation/upgrading.md index b998a6b..9c196e4 100644 --- a/docs/setup/operation/upgrading.md +++ b/docs/setup/operation/upgrading.md @@ -53,7 +53,7 @@ So, copying `notebook` and `conf` directory should be enough. ### Upgrading from Zeppelin 0.6 to 0.7 - - From 0.7, we don't use `ZEPPELIN_JAVA_OPTS` as default value of `ZEPPELIN_INTP_JAVA_OPTS` and also the same for `ZEPPELIN_MEM`/`ZEPPELIN_INTP_MEM`. If user want to configure the jvm opts of interpreter process, please set `ZEPPELIN_INTP_JAVA_OPTS` and `ZEPPELIN_INTP_MEM` explicitly. If you don't set `ZEPPELIN_INTP_MEM`, Zeppelin will set it to `-Xms1024m -Xmx1024m -XX:MaxPermSize=512m` by default. + - From 0.7, we don't use `ZEPPELIN_JAVA_OPTS` as default value of `ZEPPELIN_INTP_JAVA_OPTS` and also the same for `ZEPPELIN_MEM`/`ZEPPELIN_INTP_MEM`. If user want to configure the jvm opts of interpreter process, please set `ZEPPELIN_INTP_JAVA_OPTS` and `ZEPPELIN_INTP_MEM` explicitly. If you don't set `ZEPPELIN_INTP_MEM`, Zeppelin will set it to `-Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=512m` by default. - Mapping from `%jdbc(prefix)` to `%prefix` is no longer available. Instead, you can use %[interpreter alias] with multiple interpreter setttings on GUI. - Usage of `ZEPPELIN_PORT` is not supported in ssl mode. Instead use `ZEPPELIN_SSL_PORT` to configure the ssl port. Value from `ZEPPELIN_PORT` is used only when `ZEPPELIN_SSL` is set to `false`. - The support on Spark 1.1.x to 1.3.x is deprecated. diff --git a/flink/pom.xml b/flink/pom.xml index 69f0b32..69eb026 100644 --- a/flink/pom.xml +++ b/flink/pom.xml @@ -595,8 +595,7 @@ <jvmArgs> <jvmArg>-Xms1024m</jvmArg> <jvmArg>-Xmx1024m</jvmArg> - <jvmArg>-XX:PermSize=${PermGen}</jvmArg> - <jvmArg>-XX:MaxPermSize=${MaxPermGen}</jvmArg> + <jvmArg>-XX:MaxMetaspaceSize=${MaxMetaspace}</jvmArg> </jvmArgs> <javacArgs> <javacArg>-source</javacArg> diff --git a/pom.xml b/pom.xml index c9bc824..fd38091 100644 --- a/pom.xml +++ b/pom.xml @@ -183,8 +183,7 @@ <plugin.gitcommitid.useNativeGit>false</plugin.gitcommitid.useNativeGit> - <PermGen>64m</PermGen> - <MaxPermGen>512m</MaxPermGen> + <MaxMetaspace>512m</MaxMetaspace> <!-- to be able to exclude some tests using command line --> <tests.to.exclude/> diff --git a/r/pom.xml b/r/pom.xml index d0502d2..9867e3a 100644 --- a/r/pom.xml +++ b/r/pom.xml @@ -178,7 +178,7 @@ <configuration> <forkCount>1</forkCount> <reuseForks>false</reuseForks> - <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> + <argLine>-Xmx1024m -XX:MaxMetaspaceSize=512m</argLine> <skipTests>true</skipTests> </configuration> </plugin> diff --git a/rlang/pom.xml b/rlang/pom.xml index 7dcaade..072ed1a 100644 --- a/rlang/pom.xml +++ b/rlang/pom.xml @@ -217,7 +217,7 @@ <configuration> <forkCount>1</forkCount> <reuseForks>false</reuseForks> - <argLine>-Xmx2048m -XX:MaxPermSize=256m</argLine> + <argLine>-Xmx2048m -XX:MaxMetaspaceSize=512m</argLine> <environmentVariables> <ZEPPELIN_HOME>${basedir}/../</ZEPPELIN_HOME> </environmentVariables> diff --git a/scio/pom.xml b/scio/pom.xml index 06a3d27..56f233a 100644 --- a/scio/pom.xml +++ b/scio/pom.xml @@ -127,7 +127,7 @@ <configuration> <forkCount>1</forkCount> <reuseForks>false</reuseForks> - <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> + <argLine>-Xmx1024m -XX:MaxMetaspaceSize=512m</argLine> </configuration> </plugin> diff --git a/spark/interpreter/pom.xml b/spark/interpreter/pom.xml index c125f4e..f98d53e 100644 --- a/spark/interpreter/pom.xml +++ b/spark/interpreter/pom.xml @@ -467,7 +467,7 @@ <configuration> <forkCount>1</forkCount> <reuseForks>false</reuseForks> - <argLine>-Xmx3072m -XX:MaxPermSize=256m</argLine> + <argLine>-Xmx3072m -XX:MaxMetaspaceSize=256m</argLine> <excludes> <exclude>${pyspark.test.exclude}</exclude> <exclude>${tests.to.exclude}</exclude> diff --git a/spark/pom.xml b/spark/pom.xml index 8a635ab..97f0b06 100644 --- a/spark/pom.xml +++ b/spark/pom.xml @@ -145,8 +145,7 @@ <jvmArgs> <jvmArg>-Xms1024m</jvmArg> <jvmArg>-Xmx1024m</jvmArg> - <jvmArg>-XX:PermSize=${PermGen}</jvmArg> - <jvmArg>-XX:MaxPermSize=${MaxPermGen}</jvmArg> + <jvmArg>-XX:MaxMetaspaceSize=${MaxMetaspace}</jvmArg> </jvmArgs> <javacArgs> <javacArg>-source</javacArg> diff --git a/spark/spark-dependencies/pom.xml b/spark/spark-dependencies/pom.xml index 4f4fcaa..79cd871 100644 --- a/spark/spark-dependencies/pom.xml +++ b/spark/spark-dependencies/pom.xml @@ -167,7 +167,7 @@ <configuration> <forkCount>1</forkCount> <reuseForks>false</reuseForks> - <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> + <argLine>-Xmx1024m -XX:MaxMetaspaceSize=256m</argLine> </configuration> </plugin> diff --git a/spark/spark-scala-parent/pom.xml b/spark/spark-scala-parent/pom.xml index e989230..10749c1 100644 --- a/spark/spark-scala-parent/pom.xml +++ b/spark/spark-scala-parent/pom.xml @@ -250,8 +250,7 @@ <jvmArgs> <jvmArg>-Xms1024m</jvmArg> <jvmArg>-Xmx1024m</jvmArg> - <jvmArg>-XX:PermSize=${PermGen}</jvmArg> - <jvmArg>-XX:MaxPermSize=${MaxPermGen}</jvmArg> + <jvmArg>-XX:MaxMetaspaceSize=${MaxMetaspace}</jvmArg> </jvmArgs> <javacArgs> <javacArg>-source</javacArg>