From 88cd989118635e1e49d2ad4406368b0c9c712d9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Thu, 23 Apr 2026 13:46:26 +0200 Subject: [PATCH 01/19] ZOOKEEPER-5039: Upgrade Mockito to 5.23.0 for JDK25 As of Mockito 5.x, the mockito-inline mock-maker became the default, so mockito-inline as a separate artifact is no longer needed. --- pom.xml | 8 +------- zookeeper-server/pom.xml | 5 ----- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 2e14fe6abd3..1a4f35f3e53 100644 --- a/pom.xml +++ b/pom.xml @@ -556,7 +556,7 @@ 1.48 5.6.2 1.6.2 - 4.9.0 + 5.23.0 2.2 1.5.0 4.1.130.Final @@ -704,12 +704,6 @@ mockito-core ${mockito.version} - - org.mockito - mockito-inline - ${mockito.version} - test - io.netty netty-bom diff --git a/zookeeper-server/pom.xml b/zookeeper-server/pom.xml index f4b76095d2e..1ad5afd34eb 100644 --- a/zookeeper-server/pom.xml +++ b/zookeeper-server/pom.xml @@ -145,11 +145,6 @@ mockito-core test - - org.mockito - mockito-inline - test - org.jmockit jmockit From 077fbdda4257be21e4235534fb4810384ad83944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Mon, 4 May 2026 10:44:02 +0200 Subject: [PATCH 02/19] ZOOKEEPER-5039: Switch GH: Action workflows to JDK 17 and 25 --- .github/workflows/ci.yaml | 12 ++++++------ .github/workflows/e2e.yaml | 2 +- .github/workflows/manual.yaml | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6f09ab5c914..5d9bb1742b4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -32,17 +32,17 @@ jobs: strategy: matrix: profile: - - name: 'full-build-jdk8' - jdk: 8 + - name: 'full-build-jdk17' + jdk: 17 args: '-Pfull-build apache-rat:check verify -DskipTests spotbugs:check checkstyle:check' - - name: 'full-build-jdk11' - jdk: 11 + - name: 'full-build-jdk25' + jdk: 25 args: '-Pfull-build apache-rat:check verify -DskipTests spotbugs:check checkstyle:check' - name: 'full-build-java-tests' - jdk: 11 + jdk: 25 args: '-Pfull-build verify -Dsurefire-forkcount=1 -DskipCppUnit -Dsurefire.rerunFailingTestsCount=5' - name: 'full-build-cppunit-tests' - jdk: 11 + jdk: 25 args: '-Pfull-build verify -Dtest=_ -DfailIfNoTests=false' fail-fast: false timeout-minutes: 360 diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index d20eba55b0d..daec0197b37 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -25,7 +25,7 @@ jobs: compatibility: strategy: matrix: - jdk: [8, 11] + jdk: [17, 25] zk: [3.5.9, 3.6.3, 3.7.0, nightly] fail-fast: false timeout-minutes: 360 diff --git a/.github/workflows/manual.yaml b/.github/workflows/manual.yaml index 8b50b8be361..0c9d01565d2 100644 --- a/.github/workflows/manual.yaml +++ b/.github/workflows/manual.yaml @@ -46,10 +46,10 @@ jobs: - uses: actions/checkout@v6 with: ref: ${{ github.event.inputs.buildRef }} - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v5 with: - java-version: 11 + java-version: 17 distribution: temurin cache: 'maven' - name: Show the first log message From e0684dea2574057c0aa20181fe5d7d15515dd7d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Mon, 4 May 2026 13:43:14 +0200 Subject: [PATCH 03/19] ZOOKEEPER-5039: Switch Jenkins workflows to JDK 17 and 25 --- Jenkinsfile | 2 +- Jenkinsfile-PreCommit | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 40fcdd5bbad..5d235336434 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -39,7 +39,7 @@ pipeline { axes { axis { name 'JAVA_VERSION' - values 'jdk_1.8_latest', 'jdk_11_latest' + values 'jdk_17_latest', 'jdk_25_latest' } } diff --git a/Jenkinsfile-PreCommit b/Jenkinsfile-PreCommit index 8390e05b929..8c11430496c 100644 --- a/Jenkinsfile-PreCommit +++ b/Jenkinsfile-PreCommit @@ -30,7 +30,7 @@ pipeline { tools { maven "maven_latest" - jdk "jdk_1.8_latest" + jdk "jdk_17_latest" } stages { From a07e58e42114b7878c8f2cf6de4cf1577ccc1473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Mon, 4 May 2026 13:45:25 +0200 Subject: [PATCH 04/19] ZOOKEEPER-5039: Upgrade spotbugs to support JDK 17 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 1a4f35f3e53..0312f5f18b1 100644 --- a/pom.xml +++ b/pom.xml @@ -568,7 +568,7 @@ 1.78 4.4 4.1.12.1 - 4.0.2 + 4.8.3 8.39 3.0.0-M3 2.17.0 @@ -881,7 +881,7 @@ com.github.spotbugs spotbugs-maven-plugin - 4.0.0 + 4.8.3.0 excludeFindBugsFilter.xml From 3c3df59423cec2118036e3e7b1eac3432f6ea76c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Thu, 7 May 2026 10:49:37 +0200 Subject: [PATCH 05/19] ZOOKEEPER-5039: Upgrade spotbugs to support Java 25 - Upgraded spotbugs-maven-plugin to 4.9.3.0 and annotations to 4.9.3. - Overrode ASM to 9.9.1 in the plugin dependencies to support JDK 25 (class file version 69). - Added newly found bug patterns to excludeFindBugsFilter.xml - these are all pre-existing issues in the codebase that the newer SpotBugs detects but the old version couldn't. --- excludeFindBugsFilter.xml | 18 ++++++++++++++++++ pom.xml | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/excludeFindBugsFilter.xml b/excludeFindBugsFilter.xml index a2965944837..573c76b2b83 100644 --- a/excludeFindBugsFilter.xml +++ b/excludeFindBugsFilter.xml @@ -7,5 +7,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index 0312f5f18b1..a2fffc7ff0e 100644 --- a/pom.xml +++ b/pom.xml @@ -568,7 +568,7 @@ 1.78 4.4 4.1.12.1 - 4.8.3 + 4.9.3 8.39 3.0.0-M3 2.17.0 @@ -881,10 +881,39 @@ com.github.spotbugs spotbugs-maven-plugin - 4.8.3.0 + 4.9.3.0 excludeFindBugsFilter.xml + + + + org.ow2.asm + asm + 9.9.1 + + + org.ow2.asm + asm-analysis + 9.9.1 + + + org.ow2.asm + asm-commons + 9.9.1 + + + org.ow2.asm + asm-tree + 9.9.1 + + + org.ow2.asm + asm-util + 9.9.1 + + org.owasp From 0a74e3b9e0a4922f82b4ca63582d7ef47083afd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Fri, 24 Apr 2026 10:55:15 +0200 Subject: [PATCH 06/19] ZOOKEEPER-5039: Upgrade burningwave mockdns to 0.27.2 for JDK25 to fix test issue: Caused by: io.github.toolfactory.jvm.util.ObjectProvider$BuildingException: Exception occurred while retrieving the implementation of class io.github.toolfactory.jvm.function.catalog.ConstructorInvokeFunction (jvm architecture: x64, jvm version: 25, jvm vendor: Eclipse Adoptium) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a2fffc7ff0e..2ada98618e9 100644 --- a/pom.xml +++ b/pom.xml @@ -572,7 +572,7 @@ 8.39 3.0.0-M3 2.17.0 - 0.25.4 + 0.27.2 3.5.1 4.4.1 3.7.0.1746 From 9a95d369d837824769b4db1e1ad6060143689bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Thu, 7 May 2026 12:58:56 +0200 Subject: [PATCH 07/19] ZOOKEEPER-5039: Fix PrometheusMetricsProviderConfigTest Exception message differs now a bit. --- .../prometheus/PrometheusMetricsProviderConfigTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/zookeeper-metrics-providers/zookeeper-prometheus-metrics/src/test/java/org/apache/zookeeper/metrics/prometheus/PrometheusMetricsProviderConfigTest.java b/zookeeper-metrics-providers/zookeeper-prometheus-metrics/src/test/java/org/apache/zookeeper/metrics/prometheus/PrometheusMetricsProviderConfigTest.java index 66a01fb95e7..68cc26abd08 100644 --- a/zookeeper-metrics-providers/zookeeper-prometheus-metrics/src/test/java/org/apache/zookeeper/metrics/prometheus/PrometheusMetricsProviderConfigTest.java +++ b/zookeeper-metrics-providers/zookeeper-prometheus-metrics/src/test/java/org/apache/zookeeper/metrics/prometheus/PrometheusMetricsProviderConfigTest.java @@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.FileInputStream; import java.io.IOException; import java.security.KeyStore; @@ -107,8 +108,10 @@ public void testInvalidAddr() throws MetricsProviderLifeCycleException { assertThrows(MetricsProviderLifeCycleException.class, provider::start); assertEquals("Failed to start Prometheus Jetty server", exception.getMessage()); - assertNotNull(exception.getCause()); - assertEquals("Failed to bind to master:0", exception.getCause().getMessage()); + Throwable cause = exception.getCause(); + assertNotNull(cause); + assertTrue(cause.getMessage().contains("Failed to bind to master")); + assertTrue(cause.getMessage().contains(":0")); } @Test From 9cad6d5f7eaf786d88df2238467337ee861644c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Fri, 8 May 2026 17:07:58 +0200 Subject: [PATCH 08/19] ZOOKEEPER-5039: Upgrade zookeeper/dev Docker image to JDK 17 Also update Maven to 3.9.6 - it includes several improvements. Since the old `jdk` and `openjdk` tags are deprecated, we should use the newer vendor-specific tags. Use Eclipse Temurin since we already use it in our GH: Actions workflows. --- dev/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/docker/Dockerfile b/dev/docker/Dockerfile index 4d8a5d08dd1..2de45f37816 100644 --- a/dev/docker/Dockerfile +++ b/dev/docker/Dockerfile @@ -17,7 +17,7 @@ # under the License. # -FROM maven:3.8.4-jdk-11 +FROM maven:3.9.6-eclipse-temurin-17 RUN apt-get update RUN apt-get install -y \ From 58762ddc9393ec0c5260c6f77ab2e470b2b3a1ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Thu, 21 May 2026 15:15:38 +0200 Subject: [PATCH 09/19] ZOOKEEPER-5039: Change Maven compiler source and target to 17 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 2ada98618e9..f9af5ad0223 100644 --- a/pom.xml +++ b/pom.xml @@ -540,8 +540,8 @@ - 1.8 - 1.8 + 17 + 17 1691130453 false 2.22.1 From 891909cc7b5388523fe34bd9cab2f0d81557aa43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Thu, 21 May 2026 15:31:27 +0200 Subject: [PATCH 10/19] ZOOKEEPER-5039: Align Maven compiler Java versions - Replaced maven.compiler.source=17 + maven.compiler.target=17 with a single maven.compiler.release=17 - Removed maven.compiler.release property from m2e profile (it now inherits from main properties). --- pom.xml | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index f9af5ad0223..da9198517c8 100644 --- a/pom.xml +++ b/pom.xml @@ -350,9 +350,6 @@ m2e.version - - 8 - @@ -436,15 +433,6 @@ - - jdk-release-flag - - [9,) - - - 8 - - clover @@ -540,8 +528,7 @@ - 17 - 17 + 17 1691130453 false 2.22.1 From a6dff1ecda6578c26fd9604a7564c5adba9018c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Thu, 21 May 2026 15:43:32 +0200 Subject: [PATCH 11/19] ZOOKEEPER-5039: Update documentation --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index cd9db2b460c..6bc86742eb4 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

- https://zookeeper.apache.org/
+ https://zookeeper.apache.org/

@@ -39,11 +39,6 @@ is voted on and approved by the Apache ZooKeeper PMC: https://repo1.maven.org/maven2/org/apache/zookeeper/zookeeper -## Java 8 - -If you are going to compile with Java 1.8, you should use a -recent release at u211 or above. - # Contributing We always welcome new contributors to the project! See [How to Contribute](https://cwiki.apache.org/confluence/display/ZOOKEEPER/HowToContribute) for details on how to submit patches as pull requests and other aspects of our contribution workflow. From 6a61f35f7be04140f9e2743abf9bda9855d97669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Tue, 16 Jun 2026 19:46:47 +0200 Subject: [PATCH 12/19] ZOOKEEPER-5039: Use Maven 3.8.8 in Dockerfile --- dev/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/docker/Dockerfile b/dev/docker/Dockerfile index 2de45f37816..b63cbeeaf44 100644 --- a/dev/docker/Dockerfile +++ b/dev/docker/Dockerfile @@ -17,7 +17,7 @@ # under the License. # -FROM maven:3.9.6-eclipse-temurin-17 +FROM maven:3.8.8-eclipse-temurin-17 RUN apt-get update RUN apt-get install -y \ From 56f47a7991a71b1e35cba95d5a2f7b11d4730d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Wed, 17 Jun 2026 10:37:16 +0200 Subject: [PATCH 13/19] ZOOKEEPER-5039: Fix SpotBugs VO_VOLATILE_INCREMENT in JvmPauseMonitor Replace volatile long fields with AtomicLong to ensure atomic read-modify-write operations for increment and add. Co-Authored-By: Claude Opus 4.6 --- .../server/util/JvmPauseMonitor.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/util/JvmPauseMonitor.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/util/JvmPauseMonitor.java index 4a06f3db92d..7e2fa9c3e83 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/util/JvmPauseMonitor.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/util/JvmPauseMonitor.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicLong; import org.apache.zookeeper.server.ServerConfig; import org.apache.zookeeper.server.ServerMetrics; import org.apache.zookeeper.server.quorum.QuorumPeerConfig; @@ -64,9 +65,9 @@ public class JvmPauseMonitor { public static final String INFO_THRESHOLD_KEY = "jvm.pause.info-threshold.ms"; public static final long INFO_THRESHOLD_DEFAULT = 1000; - private volatile long numGcWarnThresholdExceeded = 0; - private volatile long numGcInfoThresholdExceeded = 0; - private volatile long totalGcExtraSleepTime = 0; + private final AtomicLong numGcWarnThresholdExceeded = new AtomicLong(0); + private final AtomicLong numGcInfoThresholdExceeded = new AtomicLong(0); + private final AtomicLong totalGcExtraSleepTime = new AtomicLong(0); private Thread monitorThread; private volatile boolean shouldRun = true; @@ -106,15 +107,15 @@ public boolean isStarted() { } public long getNumGcWarnThresholdExceeded() { - return numGcWarnThresholdExceeded; + return numGcWarnThresholdExceeded.get(); } public long getNumGcInfoThresholdExceeded() { - return numGcInfoThresholdExceeded; + return numGcInfoThresholdExceeded.get(); } public long getTotalGcExtraSleepTime() { - return totalGcExtraSleepTime; + return totalGcExtraSleepTime.get(); } private String formatMessage(long extraSleepTime, Map gcTimesAfterSleep, Map gcTimesBeforeSleep) { @@ -133,8 +134,8 @@ private String formatMessage(long extraSleepTime, Map gcTimesAf String ret = String.format("Detected pause in JVM or host machine (eg GC): pause of approximately %d ms, " + "total pause: info level: %d, warn level: %d %n", extraSleepTime, - numGcInfoThresholdExceeded, - numGcWarnThresholdExceeded); + numGcInfoThresholdExceeded.get(), + numGcWarnThresholdExceeded.get()); if (gcDiffs.isEmpty()) { ret += ("No GCs detected"); } else { @@ -197,13 +198,13 @@ public void run() { } Map gcTimesAfterSleep = getGcTimes(); if (extraSleepTime > warnThresholdMs) { - ++numGcWarnThresholdExceeded; + numGcWarnThresholdExceeded.incrementAndGet(); LOG.warn(formatMessage(extraSleepTime, gcTimesAfterSleep, gcTimesBeforeSleep)); } else if (extraSleepTime > infoThresholdMs) { - ++numGcInfoThresholdExceeded; + numGcInfoThresholdExceeded.incrementAndGet(); LOG.info(formatMessage(extraSleepTime, gcTimesAfterSleep, gcTimesBeforeSleep)); } - totalGcExtraSleepTime += extraSleepTime; + totalGcExtraSleepTime.addAndGet(extraSleepTime); gcTimesBeforeSleep = gcTimesAfterSleep; } } From 859ba6f4e87ddc6682ad251e06f4e509a8b18caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Mon, 22 Jun 2026 11:21:54 +0200 Subject: [PATCH 14/19] ZOOKEEPER-5039: Install gnugpg in dev/docker/Dockerfile so that gpg command can be used by Maven. --- dev/docker/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/docker/Dockerfile b/dev/docker/Dockerfile index b63cbeeaf44..8bccb05e8f0 100644 --- a/dev/docker/Dockerfile +++ b/dev/docker/Dockerfile @@ -31,4 +31,5 @@ RUN apt-get install -y \ libssl-dev \ libsasl2-modules-gssapi-mit \ libsasl2-modules \ - libsasl2-dev + libsasl2-dev \ + gnupg From e49e12c654c9260a07c60bd6f3af8b543542c10e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Mon, 22 Jun 2026 11:22:29 +0200 Subject: [PATCH 15/19] ZOOKEEPER-5039: Added a small README for dev/docker/Dockerfile to clarify what it is used for. --- dev/docker/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 dev/docker/README.md diff --git a/dev/docker/README.md b/dev/docker/README.md new file mode 100644 index 00000000000..02338da61e4 --- /dev/null +++ b/dev/docker/README.md @@ -0,0 +1,3 @@ +# About + +Just run `dev/docker/run.sh` and you will have a Linux environment with all that is needed to build ZooKeeper, even on MacOs. From 21a1c02b49084612a6bcf906ca616bf5d9270702 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Mon, 22 Jun 2026 12:48:11 +0200 Subject: [PATCH 16/19] ZOOKEEPER-5039: Update Java version related documentation in the new website. --- .../administrators-guide/configuration-parameters.mdx | 6 +----- .../docs/_mdx/admin-ops/administrators-guide/deployment.mdx | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/zookeeper-website/app/pages/_docs/docs/_mdx/admin-ops/administrators-guide/configuration-parameters.mdx b/zookeeper-website/app/pages/_docs/docs/_mdx/admin-ops/administrators-guide/configuration-parameters.mdx index 5277504a96b..bc4cef4246a 100644 --- a/zookeeper-website/app/pages/_docs/docs/_mdx/admin-ops/administrators-guide/configuration-parameters.mdx +++ b/zookeeper-website/app/pages/_docs/docs/_mdx/admin-ops/administrators-guide/configuration-parameters.mdx @@ -1390,11 +1390,7 @@ server if this feature is enabled with sasl as authentication scheme. ## TLS Cipher Suites From 3.5.5 to 3.9 a hard coded default cipher list was used, with the ordering -dependent on whether it is run Java 8 or a later version. - -The list on Java 8 includes TLSv1.2 CBC, GCM and TLSv1.3 ciphers in ordering: _TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256_ - -The list on Java 9+ includes TLSv1.2 GCM, CBC and TLSv1.3 ciphers in ordering: _TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256_ +dependent on whether it was run Java 8 or a later version. Since 3.10 there is no hardcoded list, and the JDK defaults are used. diff --git a/zookeeper-website/app/pages/_docs/docs/_mdx/admin-ops/administrators-guide/deployment.mdx b/zookeeper-website/app/pages/_docs/docs/_mdx/admin-ops/administrators-guide/deployment.mdx index 7bd2e9ea057..a37e895dc45 100644 --- a/zookeeper-website/app/pages/_docs/docs/_mdx/admin-ops/administrators-guide/deployment.mdx +++ b/zookeeper-website/app/pages/_docs/docs/_mdx/admin-ops/administrators-guide/deployment.mdx @@ -54,8 +54,8 @@ is no full support. ### Required Software -ZooKeeper runs in Java, release 1.8 or greater -(JDK 8 LTS, JDK 11 LTS, JDK 12 - Java 9 and 10 are not supported). +ZooKeeper runs in Java, release 17 or greater +(JDK 17 LTS, JDK 21 LTS, JDK 25 LTS - other Java versions are not supported). It runs as an _ensemble_ of ZooKeeper servers. Three ZooKeeper servers is the minimum recommended size for an ensemble, and we also recommend that they run on separate From ccb70d75d635e9a851b217fffcb127dca6e8bf33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Tue, 23 Jun 2026 09:27:52 +0200 Subject: [PATCH 17/19] ZOOKEEPER-5039: Add Maven enforcer rules for minimum Java and Maven versions Co-Authored-By: anmolnar --- pom.xml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pom.xml b/pom.xml index da9198517c8..1aacd272b04 100644 --- a/pom.xml +++ b/pom.xml @@ -563,6 +563,8 @@ 3.5.1 4.4.1 3.7.0.1746 + 3.5.0 + ${maven.compiler.release} yes @@ -1167,6 +1169,38 @@ maven-enforcer-plugin ${enforcer.version} + + display-info + + display-info + + initialize + false + + + zookeeper-min-maven-min-java + + enforce + + + + + [${maven.min.version},) + Maven is out of date. + ZooKeeper requires at least version ${maven.min.version} of Maven to properly build from source. + You appear to be using an older version. You can use either "mvn -version" or + "mvn enforcer:display-info" to verify what version is active. + + + [${java.min.version},) + Java is out of date. + ZooKeeper requires at least version ${java.min.version} of the JDK to properly build from source. + You appear to be using an older version. You can use either "mvn -version" or + "mvn enforcer:display-info" to verify what version is active. + + + + banned-commons-lang From 53e4717b686bc952b711dae538413e35a49f8333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Tue, 23 Jun 2026 09:50:30 +0200 Subject: [PATCH 18/19] ZOOKEEPER-5039: Use Java 25 in website GH Actions workflow instead of Java 11. --- .github/workflows/website.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/website.yaml b/.github/workflows/website.yaml index c4a4a456640..a5110130824 100644 --- a/.github/workflows/website.yaml +++ b/.github/workflows/website.yaml @@ -33,10 +33,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - name: Set up JDK 11 + - name: Set up JDK 25 uses: actions/setup-java@v5 with: - java-version: 11 + java-version: 25 distribution: temurin cache: 'maven' - name: Set up Node.js 22 From 3958476271fea2cbc6b1a35bfa0b48097d4c8e7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Paksy?= Date: Wed, 24 Jun 2026 07:54:59 +0200 Subject: [PATCH 19/19] ZOOKEEPER-5039: Use newer ZooKeeper versions in "End to End Tests" GH Actions workflow --- .github/workflows/e2e.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index daec0197b37..d912c3929fa 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -26,7 +26,7 @@ jobs: strategy: matrix: jdk: [17, 25] - zk: [3.5.9, 3.6.3, 3.7.0, nightly] + zk: [3.7.2, 3.8.6, 3.9.5, nightly] fail-fast: false timeout-minutes: 360 runs-on: ubuntu-latest