Skip to content

Commit 1369989

Browse files
committed
TEZ-4598: JDK-17: Migrate Tez to jdk17 (compile & runtime)
1 parent 42222b9 commit 1369989

14 files changed

Lines changed: 97 additions & 58 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
build:
2828
strategy:
2929
matrix:
30-
java-version: [8, 11, 17]
30+
java-version: [17]
3131
os: [ubuntu-latest, macos-latest]
3232
runs-on: ${{ matrix.os }}
3333
steps:

BUILDING.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Requirements:
88

99
* JDK 1.8+
1010
* Maven 3.6.3 or later
11-
* spotbugs 4.2.2 or later (if running spotbugs)
11+
* spotbugs 4.9.3 or later (if running spotbugs)
1212
* ProtocolBuffer 3.21.1
1313
* Internet connection for first build (to fetch all dependencies)
1414
* Hadoop version should be 2.7.0 or higher.

Jenkinsfile

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,8 @@ pipeline {
147147
# help keep the ASF boxes clean
148148
YETUS_ARGS+=("--sentinel")
149149
150-
# test with Java 8 and 11
151-
YETUS_ARGS+=("--java-home=/usr/lib/jvm/java-8-openjdk-amd64")
152-
YETUS_ARGS+=("--multijdkdirs=/usr/lib/jvm/java-11-openjdk-amd64")
153-
YETUS_ARGS+=("--multijdktests=compile")
150+
# test with Java 17
151+
YETUS_ARGS+=("--java-home=/usr/lib/jvm/java-17-openjdk-amd64")
154152
YETUS_ARGS+=("--debug")
155153
156154
# write Yetus report as GitHub comment (YETUS-1102)

build-tools/docker/Dockerfile

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -165,35 +165,24 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
165165
####
166166

167167
####
168-
# OpenJDK 8
169-
####
168+
# OpenJDK 17
170169
# hadolint ignore=DL3008
171-
RUN apt-get -q update && apt-get -q install --no-install-recommends -y openjdk-8-jdk-headless \
172-
&& apt-get clean \
173-
&& rm -rf /var/lib/apt/lists/*
170+
RUN apt-get -q update \
171+
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y openjdk-17-jdk \
172+
&& apt-get clean && rm -rf /var/lib/apt/lists/*
174173

175-
####
176-
# OpenJDK 11 (but keeps default to JDK8)
177-
# NOTE: This default only works when Apache Yetus is launched
178-
# _in_ the container and not outside of it!
179-
####
180-
# hadolint ignore=DL3008
181-
RUN apt-get -q update && apt-get -q install --no-install-recommends -y default-jre-headless openjdk-11-jdk-headless \
182-
&& apt-get clean \
183-
&& rm -rf /var/lib/apt/lists/* \
184-
&& update-java-alternatives -s java-1.8.0-openjdk-amd64 || :
185-
# since update alternatives might fail on executables that we don't really need (e.g. appletviewer)
186-
# and return with exit code <0 (actually: 2), we can simply do a sanity check if the version is
187-
# as expected for "java" executable after the update and go on
188-
RUN java -version 2>&1 | grep "1.8.0" && rm -f /usr/lib/jvm/default-java \
189-
&& ln -s java-8-openjdk-amd64 /usr/lib/jvm/default-java
190-
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
174+
# Set JAVA_HOME and PATH environment variables
175+
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
176+
ENV PATH="${JAVA_HOME}/bin:${PATH}"
177+
178+
# Set the default Java version using update-alternatives
179+
RUN update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1
191180

192181
#######
193-
# Install SpotBugs 4.2.2
182+
# Install SpotBugs 4.9.3
194183
#######
195184
RUN mkdir -p /opt/spotbugs \
196-
&& curl -L -s -S https://github.com/spotbugs/spotbugs/releases/download/4.2.2/spotbugs-4.2.2.tgz \
185+
&& curl -L -s -S https://github.com/spotbugs/spotbugs/releases/download/4.9.3/spotbugs-4.9.3.tgz \
197186
-o /opt/spotbugs.tgz \
198187
&& tar xzf /opt/spotbugs.tgz --strip-components 1 -C /opt/spotbugs \
199188
&& chmod +x /opt/spotbugs/bin/*

pom.xml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141

4242
<properties>
4343
<!-- Build Properties -->
44-
<maven.compiler.source>1.8</maven.compiler.source>
45-
<maven.compiler.target>1.8</maven.compiler.target>
44+
<maven.compiler.source>17</maven.compiler.source>
45+
<maven.compiler.target>17</maven.compiler.target>
4646
<maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
4747
<surefire.version>3.0.0-M4</surefire.version>
4848
<failIfNoTests>false</failIfNoTests>
@@ -70,8 +70,8 @@
7070
<commons-lang.version>2.6</commons-lang.version>
7171
<clover.license>${user.home}/clover.license</clover.license>
7272
<dependency-check-maven.version>3.2.0</dependency-check-maven.version>
73-
<spotbugs.version>4.2.2</spotbugs.version>
74-
<spotbugs-maven-plugin.version>4.2.0</spotbugs-maven-plugin.version>
73+
<spotbugs.version>4.9.3</spotbugs.version>
74+
<spotbugs-maven-plugin.version>4.9.3.0</spotbugs-maven-plugin.version>
7575
<frontend-maven-plugin.version>1.8.0</frontend-maven-plugin.version>
7676
<guava.version>32.0.1-jre</guava.version>
7777
<hadoop.version>3.4.1</hadoop.version>
@@ -102,6 +102,11 @@
102102
<snappy-java.version>1.1.10.4</snappy-java.version>
103103
<test.build.data>${project.build.directory}/tmp</test.build.data>
104104
<wro4j-maven-plugin.version>1.7.9</wro4j-maven-plugin.version>
105+
<test.jvm.args>
106+
--add-opens=java.base/java.lang=ALL-UNNAMED
107+
--add-opens=java.base/java.util=ALL-UNNAMED
108+
--add-opens java.base/java.io=ALL-UNNAMED
109+
</test.jvm.args>
105110

106111
<maven.javadoc.skip>true</maven.javadoc.skip> <!-- enabled only in relevant modules separately -->
107112
</properties>
@@ -922,7 +927,9 @@
922927
<forkCount>1</forkCount>
923928
<reuseForks>false</reuseForks>
924929
<forkedProcessTimeoutInSeconds>900</forkedProcessTimeoutInSeconds>
930+
<testFailureIgnore>true</testFailureIgnore>
925931
<argLine>-Xmx1024m -XX:+HeapDumpOnOutOfMemoryError</argLine>
932+
<argLine>${test.jvm.args}</argLine>
926933
<environmentVariables>
927934
<JAVA_HOME>${java.home}</JAVA_HOME>
928935
<MALLOC_ARENA_MAX>4</MALLOC_ARENA_MAX>

tez-api/src/main/java/org/apache/tez/client/TezClientUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,7 @@ static String constructAMLaunchOpts(TezConfiguration tezConf, Resource capabilit
10631063
amOpts = amOpts + tezConf.get(TezConfiguration.TEZ_AM_LAUNCH_CMD_OPTS,
10641064
TezConfiguration.TEZ_AM_LAUNCH_CMD_OPTS_DEFAULT);
10651065

1066+
amOpts = amOpts + TezConfiguration.TEZ_AM_LAUNCH_CLUSTER_JDK17_CMD_OPTS_DEFAULT;
10661067
amOpts = maybeAddDefaultMemoryJavaOpts(amOpts, capability,
10671068
tezConf.getDouble(TezConfiguration.TEZ_CONTAINER_MAX_JAVA_HEAP_FRACTION,
10681069
TezConfiguration.TEZ_CONTAINER_MAX_JAVA_HEAP_FRACTION_DEFAULT));

tez-api/src/main/java/org/apache/tez/dag/api/TezConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,8 @@ public TezConfiguration(boolean loadDefaults) {
399399
public static final String TEZ_AM_LAUNCH_CLUSTER_DEFAULT_CMD_OPTS_DEFAULT =
400400
"-server -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN";
401401

402+
public static final String TEZ_AM_LAUNCH_CLUSTER_JDK17_CMD_OPTS_DEFAULT =
403+
" --add-opens java.base/java.lang=ALL-UNNAMED";
402404
/**
403405
* String value. Command line options provided during the launch of the Tez
404406
* AppMaster process. Its recommended to not set any Xmx or Xms in these launch opts so that

tez-api/src/test/java/org/apache/tez/client/TestTezClientUtils.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,8 @@ public void testAMCommandOpts() {
534534
TezClientUtils.constructAMLaunchOpts(tezConf, Resource.newInstance(1024, 1));
535535
assertEquals(tmpOpts + " "
536536
+ TezConfiguration.TEZ_AM_LAUNCH_CLUSTER_DEFAULT_CMD_OPTS_DEFAULT + " "
537-
+ amCommandOpts,
537+
+ amCommandOpts
538+
+ TezConfiguration.TEZ_AM_LAUNCH_CLUSTER_JDK17_CMD_OPTS_DEFAULT,
538539
amOptsConstructed);
539540

540541
// Test2: Setup cluster-default command opts explicitly
@@ -543,7 +544,8 @@ public void testAMCommandOpts() {
543544
tezConf.set(TezConfiguration.TEZ_AM_LAUNCH_CLUSTER_DEFAULT_CMD_OPTS, clusterDefaultCommandOpts);
544545
amOptsConstructed =
545546
TezClientUtils.constructAMLaunchOpts(tezConf, Resource.newInstance(1024, 1));
546-
assertEquals(tmpOpts + " " + clusterDefaultCommandOpts + " " + amCommandOpts, amOptsConstructed);
547+
assertEquals(tmpOpts + " " + clusterDefaultCommandOpts + " " + amCommandOpts
548+
+ TezConfiguration.TEZ_AM_LAUNCH_CLUSTER_JDK17_CMD_OPTS_DEFAULT, amOptsConstructed);
547549

548550

549551
// Test3: Don't setup Xmx explicitly
@@ -555,7 +557,7 @@ public void testAMCommandOpts() {
555557
// It's OK for the Xmx value to show up before cluster default options, since Xmx will not be replaced if it already exists.
556558
assertEquals(
557559
" -Xmx" + ((int) (1024 * factor)) + "m" + " " + tmpOpts + " " + clusterDefaultCommandOpts + " " +
558-
amCommandOpts,
560+
amCommandOpts + TezConfiguration.TEZ_AM_LAUNCH_CLUSTER_JDK17_CMD_OPTS_DEFAULT,
559561
amOptsConstructed);
560562

561563
// Test4: Ensure admin options with Xmx does not cause them to be overridden. This should almost never be done though.
@@ -564,7 +566,8 @@ public void testAMCommandOpts() {
564566
tezConf.set(TezConfiguration.TEZ_AM_LAUNCH_CLUSTER_DEFAULT_CMD_OPTS, clusterDefaultCommandOpts);
565567
amOptsConstructed =
566568
TezClientUtils.constructAMLaunchOpts(tezConf, Resource.newInstance(1024, 1));
567-
assertEquals(tmpOpts + " " + clusterDefaultCommandOpts + " " + amCommandOpts, amOptsConstructed);
569+
assertEquals(tmpOpts + " " + clusterDefaultCommandOpts + " " + amCommandOpts
570+
+ TezConfiguration.TEZ_AM_LAUNCH_CLUSTER_JDK17_CMD_OPTS_DEFAULT, amOptsConstructed);
568571
}
569572

570573
@Test(timeout = 5000)

tez-dag/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@
200200
<groupId>org.apache.maven.plugins</groupId>
201201
<artifactId>maven-surefire-plugin</artifactId>
202202
<configuration>
203+
<argLine>${test.jvm.args}</argLine>
203204
<environmentVariables>
204205
<LOG_DIRS>${test.log.dir}</LOG_DIRS>
205206
</environmentVariables>

tez-ext-service-tests/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@
161161
<groupId>org.apache.maven.plugins</groupId>
162162
<artifactId>maven-surefire-plugin</artifactId>
163163
<configuration>
164+
<argLine>${test.jvm.args}</argLine>
164165
<environmentVariables>
165166
<LOG_DIRS>${test.log.dir}</LOG_DIRS>
166167
</environmentVariables>

0 commit comments

Comments
 (0)