Upgrade to Cassandra 5.

Closes #1503
This commit is contained in:
Mark Paluch
2025-02-12 14:29:27 +01:00
parent 4bb860fd87
commit 8cdef82f0a
8 changed files with 21 additions and 132 deletions

63
Jenkinsfile vendored
View File

@@ -20,10 +20,10 @@ pipeline {
stages {
stage("Docker images") {
parallel {
stage('Publish JDK 17 + Cassandra 3.11') {
stage('Publish JDK 17 + Cassandra 5') {
when {
anyOf {
changeset "ci/openjdk17-8-cassandra-3.11/**"
changeset "ci/openjdk17-cassandra-5/**"
changeset "ci/pipeline.properties"
}
}
@@ -31,25 +31,7 @@ pipeline {
options { timeout(time: 30, unit: 'MINUTES') }
steps {
script {
def image = docker.build("springci/spring-data-with-cassandra-3.11:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg CASSANDRA=${p['docker.cassandra.3.version']} ci/openjdk17-8-cassandra-3.11/")
docker.withRegistry(p['docker.registry'], p['docker.credentials']) {
image.push()
}
}
}
}
stage('Publish JDK.next + Cassandra 3.11') {
when {
anyOf {
changeset "ci/openjdk23-8-cassandra-3.11/**"
changeset "ci/pipeline.properties"
}
}
agent { label 'data' }
options { timeout(time: 30, unit: 'MINUTES') }
steps {
script {
def image = docker.build("springci/spring-data-with-cassandra-3.11:${p['java.next.tag']}", "--build-arg BASE=${p['docker.java.next.image']} --build-arg CASSANDRA=${p['docker.cassandra.3.version']} ci/openjdk23-8-cassandra-3.11/")
def image = docker.build("springci/spring-data-with-cassandra-5:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg CASSANDRA=${p['docker.cassandra.3.version']} ci/openjdk17-cassandra-5/")
docker.withRegistry(p['docker.registry'], p['docker.credentials']) {
image.push()
}
@@ -78,9 +60,9 @@ pipeline {
steps {
script {
docker.withRegistry(p['docker.proxy.registry'], p['docker.proxy.credentials']) {
docker.image("springci/spring-data-with-cassandra-3.11:${p['java.main.tag']}").inside(p['docker.java.inside.docker']) {
docker.image("springci/spring-data-with-cassandra-5:${p['java.main.tag']}").inside(p['docker.java.inside.docker']) {
sh 'mkdir -p /tmp/jenkins-home'
sh 'JAVA_HOME=/opt/java/openjdk8 /opt/cassandra/bin/cassandra -R &'
sh 'JAVA_HOME=/opt/java/openjdk17 /opt/cassandra/bin/cassandra -R &'
sh 'MAVEN_OPTS="-Duser.name=' + "${p['jenkins.user.name']}" + ' -Duser.home=/tmp/jenkins-home" ' +
"./mvnw -s settings.xml -Pci,external-cassandra -Ddevelocity.storage.directory=/tmp/jenkins-home/.develocity-root -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-cassandra " +
"clean dependency:list verify -Dsort -U -B"
@@ -90,41 +72,6 @@ pipeline {
}
}
stage("Test other configurations") {
when {
beforeAgent(true)
allOf {
branch(pattern: "main|(\\d\\.\\d\\.x)", comparator: "REGEXP")
not { triggeredBy 'UpstreamCause' }
}
}
parallel {
stage("test: baseline (next)") {
agent {
label 'data'
}
options { timeout(time: 30, unit: 'MINUTES') }
environment {
ARTIFACTORY = credentials("${p['artifactory.credentials']}")
DEVELOCITY_ACCESS_KEY = credentials("${p['develocity.access-key']}")
}
steps {
script {
docker.withRegistry(p['docker.proxy.registry'], p['docker.proxy.credentials']) {
docker.image("springci/spring-data-with-cassandra-3.11:${p['java.next.tag']}").inside(p['docker.java.inside.docker']) {
sh 'mkdir -p /tmp/jenkins-home'
sh 'JAVA_HOME=/opt/java/openjdk8 /opt/cassandra/bin/cassandra -R &'
sh 'MAVEN_OPTS="-Duser.name=' + "${p['jenkins.user.name']}" + ' -Duser.home=/tmp/jenkins-home" ' +
"./mvnw -s settings.xml -Pci,external-cassandra -Ddevelocity.storage.directory=/tmp/jenkins-home/.develocity-root -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-cassandra " +
"clean dependency:list verify -Dsort -U -B"
}
}
}
}
}
}
}
stage('Release to artifactory') {
when {
beforeAgent(true)

View File

@@ -15,13 +15,12 @@ RUN set -eux; \
useradd -d /home/jenkins-docker -m -u 1001 -U jenkins-docker;
RUN set -eux; \
BINARY_URL='https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz'; \
BINARY_URL='https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.14%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz'; \
curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
mkdir -p /opt/java/openjdk8; \
cd /opt/java/openjdk8; \
mkdir -p /opt/java/openjdk17; \
cd /opt/java/openjdk17; \
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
rm -rf /tmp/openjdk.tar.gz;
ENV PATH="/opt/java/openjdk8/bin:$PATH"
ENV MAX_HEAP_SIZE=1500M
ENV HEAP_NEWSIZE=300M

View File

@@ -1,34 +0,0 @@
ARG BASE
FROM ${BASE}
# Any ARG statements before FROM are cleared.
ARG CASSANDRA
RUN set -eux; \
# sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
apt-get update ; \
apt-get install -y curl; \
apt-get clean; \
rm -rf /var/lib/apt/lists/*;
RUN set -eux; \
CASSANDRA_URL="https://archive.apache.org/dist/cassandra/${CASSANDRA}/apache-cassandra-${CASSANDRA}-bin.tar.gz"; \
sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
curl -LfsSo /tmp/cassandra.tar.gz ${CASSANDRA_URL}; \
mkdir -p /opt/cassandra /opt/cassandra/data /opt/cassandra/logs; \
cd /opt/cassandra; \
tar -xf /tmp/cassandra.tar.gz --strip-components=1; \
rm -rf /tmp/cassandra.tar.gz; \
chmod -R a+rwx /opt/cassandra; \
useradd -d /home/jenkins-docker -m -u 1001 -U jenkins-docker;
RUN set -eux; \
BINARY_URL='https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz'; \
curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
mkdir -p /opt/java/openjdk8; \
cd /opt/java/openjdk8; \
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
rm -rf /tmp/openjdk.tar.gz;
ENV PATH="/opt/java/openjdk8/bin:$PATH"
ENV MAX_HEAP_SIZE=1500M
ENV HEAP_NEWSIZE=300M

View File

@@ -18,7 +18,7 @@ docker.redis.6.version=6.2.13
docker.redis.7.version=7.2.4
# Supported versions of Cassandra
docker.cassandra.3.version=3.11.16
docker.cassandra.5.version=5.0.3
# Docker environment settings
docker.java.inside.basic=-v $HOME:/tmp/jenkins-home

19
pom.xml
View File

@@ -89,7 +89,7 @@
<build.cassandra.rpc_port>19160</build.cassandra.rpc_port>
<build.cassandra.ssl_storage_port>17001</build.cassandra.ssl_storage_port>
<build.cassandra.storage_port>17000</build.cassandra.storage_port>
<cassandra.version>3.11.12</cassandra.version>
<cassandra.version>5.0.3</cassandra.version>
<cassandra-driver.version>4.19.0</cassandra-driver.version>
<dist.id>spring-data-cassandra</dist.id>
<el.version>1.0</el.version>
@@ -130,23 +130,6 @@
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-thrift</artifactId>
<version>${cassandra.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>

View File

@@ -108,6 +108,13 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
<scope>test</scope>
</dependency>
<!-- Reactor -->
<dependency>
<groupId>io.projectreactor</groupId>
@@ -163,11 +170,6 @@
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-thrift</artifactId>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>cassandra</artifactId>

View File

@@ -33,7 +33,7 @@ import org.springframework.lang.NonNull;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.testcontainers.containers.CassandraContainer;
import org.testcontainers.cassandra.CassandraContainer;
import org.testcontainers.utility.DockerImageName;
import org.testcontainers.utility.MountableFile;
@@ -61,7 +61,7 @@ import com.datastax.oss.driver.api.core.metadata.Node;
*/
class CassandraDelegate {
private static CassandraContainer<?> container;
private static CassandraContainer container;
private static final Logger log = LoggerFactory.getLogger(CassandraDelegate.class);
@@ -276,7 +276,8 @@ class CassandraDelegate {
if (container == null) {
container = getCassandraDockerImageName().map(CassandraContainer::new).orElseGet(CassandraContainer::new);
container = getCassandraDockerImageName().map(CassandraContainer::new)
.orElseGet(() -> new CassandraContainer("cassandra:5.0.3"));
DockerImageName imageName = DockerImageName.parse(container.getDockerImageName());
String versionPart = imageName.getVersionPart();

View File

@@ -101,15 +101,6 @@ class EmbeddedCassandraServerHelper {
return DatabaseDescriptor.getNativeTransportPort();
}
/**
* Get embedded cassandra RPC port.
*
* @return the cassandra RPC port
*/
public static int getRpcPort() {
return DatabaseDescriptor.getRpcPort();
}
/**
* Start an embedded Cassandra instance.
*