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
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 {
diff --git a/README.md b/README.md
index cd9db2b460c..6bc86742eb4 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
- 
+ 
@@ -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.
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 \
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 2811e0dfa06..5f30d4b1455 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 @@
- 1.8
- 1.8
+ 17
1691130453
false
2.22.1
@@ -556,7 +543,7 @@
1.48
5.6.2
1.6.2
- 4.9.0
+ 5.23.0
2.2
1.5.0
4.1.130.Final
@@ -568,11 +555,11 @@
1.78
4.4
4.1.12.1
- 4.0.2
+ 4.9.3
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
@@ -704,12 +691,6 @@
mockito-core
${mockito.version}
-
- org.mockito
- mockito-inline
- ${mockito.version}
- test
-
io.netty
netty-bom
@@ -887,10 +868,39 @@
com.github.spotbugs
spotbugs-maven-plugin
- 4.0.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
diff --git a/zookeeper-docs/src/main/resources/markdown/zookeeperAdmin.md b/zookeeper-docs/src/main/resources/markdown/zookeeperAdmin.md
index 1889faee341..775ad600b4a 100644
--- a/zookeeper-docs/src/main/resources/markdown/zookeeperAdmin.md
+++ b/zookeeper-docs/src/main/resources/markdown/zookeeperAdmin.md
@@ -125,8 +125,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
@@ -1897,11 +1897,7 @@ and [SASL authentication for ZooKeeper](https://cwiki.apache.org/confluence/disp
##### 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-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
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