Skip to content

Commit 409a7ba

Browse files
authored
Change language and bytecode levels to Java 25 (#3009)
Release/Build tested in alpha. Deployed in crash.
1 parent e85f48b commit 409a7ba

7 files changed

Lines changed: 30 additions & 17 deletions

File tree

.github/workflows/dependency-submission.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ jobs:
2020
uses: actions/setup-java@v4
2121
with:
2222
distribution: 'temurin'
23-
java-version: '21'
23+
java-version: '25'
2424
- name: Generate and submit dependency graph
2525
uses: gradle/actions/dependency-submission@v3

build.gradle

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -359,11 +359,13 @@ subprojects {
359359
// search for `flex-template-base-image` and update the parameter value.
360360
// There are at least two instances, one in core/build.gradle, one in
361361
// release/stage_beam_pipeline.sh
362+
// Also need to change:
363+
// - base images in Dockerfiles under core, jetty, and proxy.
364+
// - Java installation command in the builder image under release.
365+
// - cloudbuild-release.yaml under release.
362366
java {
363-
// TODO(b/457758757): change to V_25 once Java in all environments are
364-
// upgraded.
365-
sourceCompatibility = JavaVersion.VERSION_21
366-
targetCompatibility = JavaVersion.VERSION_21
367+
sourceCompatibility = JavaVersion.VERSION_25
368+
targetCompatibility = JavaVersion.VERSION_25
367369
}
368370

369371
project.tasks.test.dependsOn runPresubmits

core/build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@ task soyToJava {
383383
project.services.get(ExecOperations).javaexec {
384384
mainClass = "com.google.template.soy.SoyParseInfoGenerator"
385385
classpath = configurations.soy
386+
jvmArgs = ["--sun-misc-unsafe-memory-access=allow", "--enable-native-access=ALL-UNNAMED"]
386387
args = ["--javaPackage", "${javaPackage}",
387388
"--outputDirectory", "${outputDirectory}",
388389
"--javaClassNameSource", "filename",
@@ -438,7 +439,7 @@ artifacts {
438439
task findGoldenImages(type: JavaExec) {
439440
classpath = sourceSets.test.runtimeClasspath
440441
mainClass = 'google.registry.webdriver.GoldenImageFinder'
441-
442+
jvmArgs "--sun-misc-unsafe-memory-access=allow"
442443
def arguments = []
443444
arguments << "--screenshots_for_goldens_dir=${screenshotsForGoldensDir}"
444445
arguments << "--new_goldens_dir=${newGoldensDir}"
@@ -489,6 +490,7 @@ ext.createToolTask = {
489490
project.tasks.create(taskName, JavaExec) {
490491
classpath = sourceSet.runtimeClasspath
491492
mainClass = mainClassName
493+
jvmArgs "--sun-misc-unsafe-memory-access=allow", "--enable-native-access=ALL-UNNAMED"
492494

493495
doFirst {
494496
getToolArgsList().ifPresent {
@@ -506,6 +508,7 @@ createToolTask(
506508
project.tasks.create('generateSqlSchema', JavaExec) {
507509
classpath = sourceSets.nonprod.runtimeClasspath
508510
mainClass = 'google.registry.tools.DevTool'
511+
jvmArgs "--sun-misc-unsafe-memory-access=allow"
509512
args = [
510513
'-e', 'alpha',
511514
'generate_sql_schema', '--start_postgresql', '-o',
@@ -664,6 +667,7 @@ artifacts {
664667
task runTestServer(type: JavaExec) {
665668
mainClass = 'google.registry.server.RegistryTestServerMain'
666669
classpath = sourceSets.test.runtimeClasspath
670+
jvmArgs "--sun-misc-unsafe-memory-access=allow"
667671
dependsOn(rootProject.project('console-webapp').tasks.named('buildConsoleWebapp'))
668672
}
669673

java_common.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ test {
8888
// A typical use case is to run tests from desktop that accesses Cloud resources.
8989
tasks.withType(Test).configureEach {
9090
maxHeapSize = "4096m"
91+
jvmArgs "--sun-misc-unsafe-memory-access=allow", "--enable-native-access=ALL-UNNAMED"
9192
def gcp_integration_env_property = 'test.gcp_integration.env'
9293

9394
if (project.hasProperty(gcp_integration_env_property)) {

jetty/Dockerfile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1-
FROM jetty:12-jdk21
1+
FROM jetty:12-jdk25
22
ADD --chown=jetty:jetty build/jetty-base /jetty-base
33
ADD --chown=jetty:jetty start.sh /
44
ADD --chown=jetty:jetty logging.properties /
55

66
USER root
77

8+
# wget is not installed by default in :12-jdk25
9+
RUN apt-get update && \
10+
apt-get install -y wget && \
11+
rm -rf /var/lib/apt/lists/*
12+
813
# Create a directory, download and extract the Cloud Profiler agent, version locked to "cloud-profiler-java-agent_20241028_RC00.tar.gz".
914
RUN mkdir -p /opt/cprof && \
1015
wget -q -O- https://storage.googleapis.com/cloud-profiler/java/cloud-profiler-java-agent_20241028_RC00.tar.gz\
@@ -14,6 +19,6 @@ RUN mkdir -p /opt/cprof && \
1419
USER jetty
1520

1621
EXPOSE 8080
17-
# jetty:12-jdk21 has bash. We can afford the extra 200M in image size over
22+
# jetty:12-jdk25 has bash. We can afford the extra 200M in image size over
1823
# the -alpine flavor.
1924
ENTRYPOINT ["/bin/bash", "/start.sh"]

jetty/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ tasks.register('run', JavaExec) {
8585
}
8686
def jetty_home = System.getenv('JETTY_HOME')
8787
def environment = rootProject.environment
88+
jvmArgs "--sun-misc-unsafe-memory-access=allow", "--enable-native-access=ALL-UNNAMED"
8889
workingDir(layout.buildDirectory.dir('jetty-base'))
8990
classpath = files(jetty_home + '/start.jar')
9091
systemProperty('google.registry.environment', environment)

release/cloudbuild-release.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,14 @@ steps:
6767
docker tag gcr.io/${PROJECT_ID}/builder:${TAG_NAME} gcr.io/${PROJECT_ID}/builder:latest
6868
docker push gcr.io/${PROJECT_ID}/builder:${TAG_NAME}
6969
docker push gcr.io/${PROJECT_ID}/builder:latest
70-
docker pull jetty:12-jdk21
71-
docker tag jetty:12-jdk21 gcr.io/${PROJECT_ID}/jetty:${TAG_NAME}
72-
docker tag jetty:12-jdk21 gcr.io/${PROJECT_ID}/jetty:latest
70+
docker pull jetty:12-jdk25
71+
docker tag jetty:12-jdk25 gcr.io/${PROJECT_ID}/jetty:${TAG_NAME}
72+
docker tag jetty:12-jdk25 gcr.io/${PROJECT_ID}/jetty:latest
7373
docker push gcr.io/${PROJECT_ID}/jetty:${TAG_NAME}
7474
docker push gcr.io/${PROJECT_ID}/jetty:latest
75-
docker pull eclipse-temurin:21
76-
docker tag eclipse-temurin:21 gcr.io/${PROJECT_ID}/temurin:${TAG_NAME}
77-
docker tag eclipse-temurin:21 gcr.io/${PROJECT_ID}/temurin:latest
75+
docker pull eclipse-temurin:25
76+
docker tag eclipse-temurin:25 gcr.io/${PROJECT_ID}/temurin:${TAG_NAME}
77+
docker tag eclipse-temurin:25 gcr.io/${PROJECT_ID}/temurin:latest
7878
docker push gcr.io/${PROJECT_ID}/temurin:${TAG_NAME}
7979
docker push gcr.io/${PROJECT_ID}/temurin:latest
8080
dir: 'release/builder/'
@@ -91,9 +91,9 @@ steps:
9191
--format='get(digest)' --filter='tags = ${TAG_NAME}')
9292
temurin_digest=$(gcloud container images list-tags gcr.io/${PROJECT_ID}/temurin \
9393
--format='get(digest)' --filter='tags = ${TAG_NAME}')
94-
sed -i s%eclipse-temurin:21%gcr.io/${PROJECT_ID}/temurin@$temurin_digest%g proxy/Dockerfile
95-
sed -i s%eclipse-temurin:21%gcr.io/${PROJECT_ID}/temurin@$temurin_digest%g core/Dockerfile
96-
sed -i s%jetty:12-jdk21%gcr.io/${PROJECT_ID}/jetty@$jetty_digest%g jetty/Dockerfile
94+
sed -i s%eclipse-temurin:25%gcr.io/${PROJECT_ID}/temurin@$temurin_digest%g proxy/Dockerfile
95+
sed -i s%eclipse-temurin:25%gcr.io/${PROJECT_ID}/temurin@$temurin_digest%g core/Dockerfile
96+
sed -i s%jetty:12-jdk25%gcr.io/${PROJECT_ID}/jetty@$jetty_digest%g jetty/Dockerfile
9797
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-proxy.yaml
9898
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-nomulus.yaml
9999
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-deploy-gke.yaml

0 commit comments

Comments
 (0)