From bb8b12bc5488febecef7849527e2db7d7848c9b2 Mon Sep 17 00:00:00 2001 From: Alessandro Solimando Date: Sun, 4 Feb 2024 15:09:44 +0100 Subject: [PATCH] [CALCITE-6243] Upgrade Cassandra to 4.1.3 and DataStax driver for Cassandra to 4.17.0 --- .../calcite/test/CassandraAdapterTest.java | 3 -- .../calcite/test/CassandraExtension.java | 53 ++++++++++--------- gradle.properties | 4 +- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/cassandra/src/test/java/org/apache/calcite/test/CassandraAdapterTest.java b/cassandra/src/test/java/org/apache/calcite/test/CassandraAdapterTest.java index 73e9abe618b..411ffdbb65b 100644 --- a/cassandra/src/test/java/org/apache/calcite/test/CassandraAdapterTest.java +++ b/cassandra/src/test/java/org/apache/calcite/test/CassandraAdapterTest.java @@ -46,9 +46,6 @@ class CassandraAdapterTest { private static final ImmutableMap TWISSANDRA = CassandraExtension.getDataset("/model.json"); - private static final ImmutableMap TWISSANDRA_WITHOUT_KEYSPACE = - CassandraExtension.getDataset("/model-without-keyspace.json"); - @BeforeAll static void load(CqlSession session) { new CQLDataLoader(session) diff --git a/cassandra/src/test/java/org/apache/calcite/test/CassandraExtension.java b/cassandra/src/test/java/org/apache/calcite/test/CassandraExtension.java index 14b72b6eaed..fc635dd170b 100644 --- a/cassandra/src/test/java/org/apache/calcite/test/CassandraExtension.java +++ b/cassandra/src/test/java/org/apache/calcite/test/CassandraExtension.java @@ -17,16 +17,14 @@ package org.apache.calcite.test; import org.apache.calcite.config.CalciteSystemProperty; -import org.apache.calcite.util.Bug; import org.apache.calcite.util.Sources; import org.apache.calcite.util.TestUtil; import org.apache.cassandra.concurrent.Stage; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.db.WindowsFailedSnapshotTracker; import org.apache.cassandra.service.CassandraDaemon; import org.apache.cassandra.service.StorageService; -import org.apache.cassandra.utils.FBUtilities; +import org.apache.commons.lang3.SystemUtils; import com.datastax.oss.driver.api.core.CqlSession; import com.google.common.collect.ImmutableMap; @@ -43,8 +41,6 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.lang.reflect.Field; -import java.nio.file.Files; -import java.nio.file.Paths; import java.time.Duration; import java.util.Locale; import java.util.Objects; @@ -53,10 +49,11 @@ /** * JUnit5 extension to start and stop embedded Cassandra server. * - *

Note that tests will be skipped if running on JDK11+ or Eclipse OpenJ9 JVM - * (not supported by cassandra-unit and Cassandra, respectively) see + *

Note that tests will be skipped if running on JDK11+, Eclipse OpenJ9 JVM or Windows + * (the first isn't supported by cassandra-unit, the last two by Cassandra) see * cassandra-unit issue #294 - * and CASSANDRA-14883, + * CASSANDRA-14883, + * and CASSANDRA-16956, * respectively. */ class CassandraExtension implements ParameterResolver, ExecutionCondition { @@ -121,22 +118,39 @@ private static CassandraResource getOrCreate(ExtensionContext context) { * {@link com.google.common.collect.ImmutableSet#builderWithExpectedSize(int)} * and therefore Guava 23 or higher. * + *

Cassandra dropped support for Windows in 4.1.x + * @see CASSANDRA-16956 + * * @return {@code true} if test is compatible with current environment, * {@code false} otherwise */ @Override public ConditionEvaluationResult evaluateExecutionCondition( final ExtensionContext context) { boolean enabled = CalciteSystemProperty.TEST_CASSANDRA.value(); - Bug.upgrade("remove JDK version check once cassandra-unit supports JDK11+"); + // remove JDK version check once cassandra-unit supports JDK11+ boolean compatibleJdk = TestUtil.getJavaMajorVersion() < 11; boolean compatibleGuava = TestUtil.getGuavaMajorVersion() >= 23; - Bug.upgrade("remove JVM check once Cassandra supports Eclipse OpenJ9 JVM"); + // remove JVM check once Cassandra supports Eclipse OpenJ9 JVM boolean compatibleJVM = !"Eclipse OpenJ9".equals(TestUtil.getJavaVirtualMachineVendor()); - if (enabled && compatibleJdk && compatibleGuava && compatibleJVM) { - return ConditionEvaluationResult.enabled("Cassandra enabled"); - } else { - return ConditionEvaluationResult.disabled("Cassandra tests disabled"); + boolean compatibleOS = !SystemUtils.IS_OS_WINDOWS; + if (enabled && compatibleJdk && compatibleGuava && compatibleJVM && compatibleOS) { + return ConditionEvaluationResult.enabled("Cassandra tests enabled"); + } + + final StringBuilder sb = new StringBuilder("Cassandra tests disabled:"); + if (!compatibleJdk) { + sb.append("\n - JDK11+ is not supported"); + } + if (!compatibleGuava) { + sb.append("\n - Guava versions < 23 are not supported"); + } + if (!compatibleJVM) { + sb.append("\n - Eclipse OpenJ9 JVM is not supported"); } + if (!compatibleOS) { + sb.append("\n - Cassandra doesn't support Windows"); + } + return ConditionEvaluationResult.disabled(sb.toString()); } /** Cassandra resource. */ @@ -157,7 +171,7 @@ private CassandraResource() { * during close, clean shutdown (as part of unit test) is not * straightforward. */ - @Override public void close() throws IOException { + @Override public void close() { session.close(); CassandraDaemon daemon = extractDaemon(); @@ -175,14 +189,6 @@ private CassandraResource() { Thread.currentThread().interrupt(); } Stage.shutdownNow(); - - if (FBUtilities.isWindows) { - // for some reason .toDelete stale folder is not deleted on cassandra shutdown - // doing it manually here - WindowsFailedSnapshotTracker.resetForTests(); - // manually delete stale file(s) - Files.deleteIfExists(Paths.get(WindowsFailedSnapshotTracker.TODELETEFILE)); - } } private static void startCassandra() { @@ -223,5 +229,4 @@ private static CassandraDaemon extractDaemon() { } } } - } diff --git a/gradle.properties b/gradle.properties index ea5695024ad..51e13a26c70 100644 --- a/gradle.properties +++ b/gradle.properties @@ -85,8 +85,8 @@ aggdesigner-algorithm.version=6.0 apiguardian-api.version=1.1.2 asm.version=7.2 byte-buddy.version=1.9.3 -cassandra-all.version=4.0.1 -cassandra-java-driver-core.version=4.13.0 +cassandra-all.version=4.1.3 +cassandra-java-driver-core.version=4.17.0 cassandra-unit.version=4.3.1.0 chinook-data-hsqldb.version=0.2 commons-codec.version=1.16.0