From 7c19b86c6f6016bb5774a9bb7753b2dbf0438381 Mon Sep 17 00:00:00 2001 From: Alexander Dejanovski Date: Wed, 21 Oct 2020 19:26:58 +0200 Subject: [PATCH] Fix Astra migrations with LWTs not being properly allowed. --- .../cassandrareaper/storage/CassandraStorage.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/server/src/main/java/io/cassandrareaper/storage/CassandraStorage.java b/src/server/src/main/java/io/cassandrareaper/storage/CassandraStorage.java index 4449d449d..8673fa7ce 100644 --- a/src/server/src/main/java/io/cassandrareaper/storage/CassandraStorage.java +++ b/src/server/src/main/java/io/cassandrareaper/storage/CassandraStorage.java @@ -211,7 +211,7 @@ public CassandraStorage( this.reaperInstanceId = reaperInstanceId; CassandraFactory cassandraFactory = config.getCassandraFactory(); - overrideQueryOptions(cassandraFactory); + overrideQueryOptions(cassandraFactory, mode); overrideRetryPolicy(cassandraFactory); overridePoolingOptions(cassandraFactory); @@ -1676,13 +1676,19 @@ public void saveHeartbeat() { } - private static void overrideQueryOptions(CassandraFactory cassandraFactory) { - // all INSERT and DELETE stmt prepared in this class are idempoten + private static void overrideQueryOptions(CassandraFactory cassandraFactory, CassandraMode mode) { + // all INSERT and DELETE stmt prepared in this class are idempotent + ConsistencyLevel requiredCl = mode.equals(CassandraMode.ASTRA) + ? ConsistencyLevel.LOCAL_QUORUM + : ConsistencyLevel.LOCAL_ONE; if (cassandraFactory.getQueryOptions().isPresent() && ConsistencyLevel.LOCAL_ONE != cassandraFactory.getQueryOptions().get().getConsistencyLevel()) { LOG.warn("Customization of cassandra's queryOptions is not supported and will be overridden"); } - cassandraFactory.setQueryOptions(java.util.Optional.of(new QueryOptions().setDefaultIdempotence(true))); + cassandraFactory.setQueryOptions(java.util.Optional.of( + new QueryOptions() + .setConsistencyLevel(requiredCl) + .setDefaultIdempotence(true))); } private static void overrideRetryPolicy(CassandraFactory cassandraFactory) {