PHOENIX-7036 Copy the Java version specific profiles for JVM options from HBase
diff --git a/phoenix5-hive/pom.xml b/phoenix5-hive/pom.xml
index 92ca382..dd31e80 100644
--- a/phoenix5-hive/pom.xml
+++ b/phoenix5-hive/pom.xml
@@ -417,7 +417,6 @@
<configuration>
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
- <argLine>-Xmx3000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<groups>org.apache.phoenix.end2end.ParallelStatsDisabledTest</groups>
</configuration>
<goals>
diff --git a/phoenix5-spark/pom.xml b/phoenix5-spark/pom.xml
index 7c2ca08..9cd8ff3 100644
--- a/phoenix5-spark/pom.xml
+++ b/phoenix5-spark/pom.xml
@@ -513,7 +513,7 @@
to https://github.com/junit-team/junit4/issues/1223 -->
<parallel>false</parallel>
<tagsToExclude>Integration-Test</tagsToExclude>
- <argLine>-Xmx1536m -XX:ReservedCodeCacheSize=512m</argLine>
+ <argLine>--XX:ReservedCodeCacheSize=512m ${argLine}</argLine>
</configuration>
</execution>
</executions>
diff --git a/phoenix5-spark3-it/pom.xml b/phoenix5-spark3-it/pom.xml
index f37cce3..3232eb5 100644
--- a/phoenix5-spark3-it/pom.xml
+++ b/phoenix5-spark3-it/pom.xml
@@ -204,7 +204,7 @@
to https://github.com/junit-team/junit4/issues/1223 -->
<parallel>false</parallel>
<tagsToExclude>Integration-Test</tagsToExclude>
- <argLine>-Xmx1536m -XX:ReservedCodeCacheSize=512m</argLine>
+ <argLine>-XX:ReservedCodeCacheSize=512m ${argLine}</argLine>
</configuration>
</execution>
</executions>
diff --git a/pom.xml b/pom.xml
index 1b17fb5..1f28456 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,7 +72,48 @@
<test.output.tofile>true</test.output.tofile>
<top.dir>${project.basedir}</top.dir>
- <jdk.version>1.8</jdk.version>
+ <compileSource>1.8</compileSource>
+ <maven.compiler.source>${compileSource}</maven.compiler.source>
+ <maven.compiler.target>${compileSource}</maven.compiler.target>
+
+ <!-- JVM version dependent JVM options for running tests. Keep mostly in sync with HBase-->
+ <!-- Note that some components, like Spark 2.x just don't support anything newer than Java 8,
+ and the build/tests will fail on those modules anyway -->
+ <surefire.Xmx>3000m</surefire.Xmx>
+
+ <!-- Profiling is not enabled in the repo. Placeholder. -->
+ <jacocoArgLine></jacocoArgLine>
+ <phoenix-surefire.argLine>-enableassertions -Xmx${surefire.Xmx}
+ -Djava.security.egd=file:/dev/./urandom -Djava.net.preferIPv4Stack=true
+ -Djava.awt.headless=true -Djdk.net.URLClassPath.disableClassPathURLCheck=true
+ -Dorg.apache.hbase.thirdparty.io.netty.leakDetection.level=advanced
+ -Dio.netty.eventLoopThreads=3 -Duser.timezone="America/Los_Angeles"
+ -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/
+ "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}"
+ </phoenix-surefire.argLine>
+ <phoenix-surefire.jdk8.tuning.flags>
+ -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC
+ -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled
+ -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68
+ </phoenix-surefire.jdk8.tuning.flags>
+ <phoenix-surefire.jdk11.flags>-Dorg.apache.hbase.thirdparty.io.netty.tryReflectionSetAccessible=true
+ --add-modules jdk.unsupported
+ --add-opens java.base/java.nio=ALL-UNNAMED
+ --add-opens java.base/sun.nio.ch=ALL-UNNAMED
+ --add-opens java.base/java.lang=ALL-UNNAMED
+ --add-opens java.base/jdk.internal.ref=ALL-UNNAMED
+ --add-opens java.base/java.lang.reflect=ALL-UNNAMED
+ --add-opens java.base/java.util=ALL-UNNAMED
+ --add-opens java.base/java.util.concurrent=ALL-UNNAMED
+ --add-exports java.base/jdk.internal.misc=ALL-UNNAMED
+ --add-exports java.security.jgss/sun.security.krb5=ALL-UNNAMED</phoenix-surefire.jdk11.flags>
+ <phoenix-surefire.jdk11.tuning.flags>
+ ${phoenix-surefire.jdk8.tuning.flags}
+ </phoenix-surefire.jdk11.tuning.flags>
+ <phoenix-surefire.jdk17.flags>--add-opens java.base/jdk.internal.util.random=ALL-UNNAMED</phoenix-surefire.jdk17.flags>
+ <phoenix-surefire.jdk17.tuning.flags></phoenix-surefire.jdk17.tuning.flags>
+ <!-- Surefire argLine defaults for Linux + JDK8 -->
+ <argLine>${phoenix-surefire.argLine} ${phoenix-surefire.jdk8.tuning.flags} @{jacocoArgLine}</argLine>
<!-- Dependency versions -->
<hive3.version>3.1.2</hive3.version>
@@ -169,10 +210,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>${jdk.version}</source>
- <target>${jdk.version}</target>
- </configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -305,7 +342,6 @@
<id>ParallelStatsDisabledTest</id>
<configuration>
<reuseForks>true</reuseForks>
- <argLine>-Xmx3000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<groups>org.apache.phoenix.end2end.ParallelStatsDisabledTest</groups>
</configuration>
<goals>
@@ -317,7 +353,6 @@
<id>NeedsOwnMiniClusterTest</id>
<configuration>
<reuseForks>false</reuseForks>
- <argLine>-enableassertions -Xmx3000m -XX:MaxPermSize=256m -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<groups>org.apache.phoenix.end2end.NeedsOwnMiniClusterTest</groups>
</configuration>
<goals>
@@ -401,8 +436,6 @@
<forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>
<forkCount>${numForkedUT}</forkCount>
<reuseForks>true</reuseForks>
- <argLine>-enableassertions -Xmx2250m -XX:MaxPermSize=128m
- -Djava.security.egd=file:/dev/./urandom "-Djava.library.path=${hadoop.library.path}${path.separator}${java.library.path}" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./target/</argLine>
<redirectTestOutputToFile>${test.output.tofile}</redirectTestOutputToFile>
<shutdown>kill</shutdown>
<trimStackTrace>false</trimStackTrace>
@@ -865,6 +898,40 @@
</dependencyManagement>
<profiles>
+ <profile>
+ <id>build-with-jdk8</id>
+ <activation>
+ <jdk>[1.8,11)</jdk>
+ </activation>
+ </profile>
+ <!-- See PHOENIX-6997 when building with with Java9+ -->
+ <!-- Even if we set the correct JVM parameters for Phoenix, some components don't support
+ anything newer than Java 8 -->
+ <profile>
+ <id>build-with-jdk11</id>
+ <activation>
+ <jdk>[11,17)</jdk>
+ </activation>
+ <properties>
+ <argLine>${phoenix-surefire.jdk11.flags}
+ ${phoenix-surefire.jdk11.tuning.flags}
+ ${phoenix-surefire.argLine}
+ @{jacocoArgLine}</argLine>
+ </properties>
+ </profile>
+ <profile>
+ <id>build-with-jdk17</id>
+ <activation>
+ <jdk>[17,)</jdk>
+ </activation>
+ <properties>
+ <argLine>${phoenix-surefire.jdk11.flags}
+ ${phoenix-surefire.jdk17.flags}
+ ${phoenix-surefire.jdk17.tuning.flags}
+ ${phoenix-surefire.argLine}
+ @{jacocoArgLine}</argLine>
+ </properties>
+ </profile>
<!-- disable doclint with 1.8+ JDKs-->
<profile>
<id>java8-doclint-disabled</id>