From 07d965d39331ed29af7208b87c7f9d0b2dfbee50 Mon Sep 17 00:00:00 2001 From: janehe Date: Wed, 22 Apr 2026 23:49:07 -0700 Subject: [PATCH 1/4] java 25 bump dependencies --- Jenkinsfile-datastax | 3 ++- pom.xml | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile-datastax b/Jenkinsfile-datastax index 602f33101ca..37cb38ec788 100644 --- a/Jenkinsfile-datastax +++ b/Jenkinsfile-datastax @@ -332,7 +332,8 @@ pipeline { '1.8', // Oracle JDK version 1.8 (current default) 'openjdk@1.11', // OpenJDK version 11 'openjdk@1.17', // OpenJDK version 17 - 'openjdk@1.21' // OpenJDK version 21 + 'openjdk@1.21', // OpenJDK version 21 + 'openjdk@1.25' // OpenJDK version 25 ], description: '''JDK version to use for TESTING when running adhoc BUILD-AND-EXECUTE-TESTS builds. All builds will use JDK8 for building the driver diff --git a/pom.xml b/pom.xml index 7e7a2bbc5de..f07e550c7b5 100644 --- a/pom.xml +++ b/pom.xml @@ -445,12 +445,12 @@ io.projectreactor.tools blockhound - 1.0.8.RELEASE + 1.0.16.RELEASE io.projectreactor.tools blockhound-junit-platform - 1.0.8.RELEASE + 1.0.16.RELEASE @@ -545,7 +545,7 @@ org.jacoco jacoco-maven-plugin - 0.8.10 + 0.8.14 org.apache.felix @@ -1068,6 +1068,19 @@ limitations under the License.]]> --add-opens=java.base/jdk.internal.util.random=ALL-UNNAMED + + + test-jdk-25 + + [25,) + + + + -XX:+AllowRedefinitionToAddDeleteMethods + + --add-opens=java.base/jdk.internal.util.random=ALL-UNNAMED + + From 2fc855cac0bf5174b05980148d5dcbd868c4e31c Mon Sep 17 00:00:00 2001 From: janehe Date: Thu, 23 Apr 2026 10:13:50 -0700 Subject: [PATCH 2/4] add 1.25 --- Jenkinsfile-datastax | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Jenkinsfile-datastax b/Jenkinsfile-datastax index 37cb38ec788..765c2fb329e 100644 --- a/Jenkinsfile-datastax +++ b/Jenkinsfile-datastax @@ -359,6 +359,10 @@ pipeline { + + + +
openjdk@1.21 OpenJDK version 21
openjdk@1.25OpenJDK version 25
''') booleanParam( name: 'SKIP_SERIAL_ITS', @@ -444,6 +448,7 @@ pipeline { 'openjdk@1.11', // jdk11 'openjdk@1.17', // jdk17 'openjdk@1.21' // jdk21 + 'openjdk@1.25' // jdk25 } } From 6ce41644d4c6b3695df8a5edf0af513a9700f16d Mon Sep 17 00:00:00 2001 From: janehe Date: Thu, 23 Apr 2026 10:24:15 -0700 Subject: [PATCH 3/4] , --- Jenkinsfile-datastax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile-datastax b/Jenkinsfile-datastax index 765c2fb329e..a21f98612c5 100644 --- a/Jenkinsfile-datastax +++ b/Jenkinsfile-datastax @@ -447,7 +447,7 @@ pipeline { values '1.8', // jdk8 'openjdk@1.11', // jdk11 'openjdk@1.17', // jdk17 - 'openjdk@1.21' // jdk21 + 'openjdk@1.21', // jdk21 'openjdk@1.25' // jdk25 } } From 44a207a130d9339422db302fbb94d91b67c539bd Mon Sep 17 00:00:00 2001 From: janehe Date: Wed, 29 Apr 2026 23:20:56 -0700 Subject: [PATCH 4/4] CompletableFuture.get() --- .../cql/continuous/ContinuousPagingIT.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/integration-tests/src/test/java/com/datastax/dse/driver/api/core/cql/continuous/ContinuousPagingIT.java b/integration-tests/src/test/java/com/datastax/dse/driver/api/core/cql/continuous/ContinuousPagingIT.java index 45cc84f0719..9eeca8caaff 100644 --- a/integration-tests/src/test/java/com/datastax/dse/driver/api/core/cql/continuous/ContinuousPagingIT.java +++ b/integration-tests/src/test/java/com/datastax/dse/driver/api/core/cql/continuous/ContinuousPagingIT.java @@ -391,9 +391,23 @@ public void should_cancel_with_asynchronous_paging() { CompletableFutures.getUninterruptibly(fetchNextPageFuture); fail("Expected an execution exception since paging was cancelled."); } catch (CancellationException e) { - assertThat(e) - .hasMessageContaining("Can't get more results") - .hasMessageContaining("query was cancelled"); + /** + * Since Java 25 has a breaking change in CompletableFuture.get() + * See: https://github.com/openjdk/jdk/commit/8a4315f833f3700075d65fae6bc566011c837c07 + * CancellationException will be wrapped in a new CancellationException, with "get" as the message, + * and the original CancellationException as the cause + */ + + boolean exceptionHasBothMessages = e.getMessage() != null + && e.getMessage().contains("Can't get more results") + && e.getMessage().contains("query was cancelled"); + + boolean causeHasBothMessages = e.getCause() != null + && e.getCause().getMessage() != null + && e.getCause().getMessage().contains("Can't get more results") + && e.getCause().getMessage().contains("query was cancelled"); + + assertThat(exceptionHasBothMessages || causeHasBothMessages).isTrue(); } int i = 0; for (Row row : pagingResult.currentPage()) {