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 @@

- 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. 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