This is an automated email from the ASF dual-hosted git repository.

ifesdjeen pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 9db161f038bfc756614795dc8616bb85572b5eaa
Author: Alex Petrov <oleksandr.pet...@gmail.com>
AuthorDate: Thu Dec 7 19:13:19 2023 +0100

    Fix ShortPaxosSimulationTest.simulationTest
    
    Patch by Alex Petrov, reviewed by Sam Tunnicliffe for CASSANDRA-19058
---
 .../cassandra/config/CassandraRelevantProperties.java    |  2 +-
 .../org/apache/cassandra/config/DatabaseDescriptor.java  |  2 +-
 src/java/org/apache/cassandra/net/MessagingService.java  | 15 ++++++++++++++-
 .../apache/cassandra/repair/messages/PrepareMessage.java |  8 +++++---
 .../simulator}/AlwaysDeliverNetworkScheduler.java        | 10 +++-------
 .../apache/cassandra/simulator/ClusterSimulation.java    |  1 +
 .../cassandra/simulator}/FixedLossNetworkScheduler.java  |  6 ++----
 .../cassandra/simulator/RunnableActionScheduler.java     |  2 +-
 .../cassandra/simulator/cluster/KeyspaceActions.java     | 16 ++++++++--------
 .../simulator/paxos/PaxosClusterSimulation.java          |  1 +
 .../cassandra/simulator/test/HarrySimulatorTest.java     | 10 ++++++++--
 11 files changed, 45 insertions(+), 28 deletions(-)

diff --git 
a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java 
b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
index 2af142a92a..b7330956ff 100644
--- a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
+++ b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
@@ -320,7 +320,7 @@ public enum CassandraRelevantProperties
      *
      * This is a dev/CI only property. Do not use otherwise.
      */
-    
JUNIT_STORAGE_COMPATIBILITY_MODE("cassandra.junit_storage_compatibility_mode", 
StorageCompatibilityMode.CASSANDRA_4.toString()),
+    
JUNIT_STORAGE_COMPATIBILITY_MODE("cassandra.junit_storage_compatibility_mode", 
StorageCompatibilityMode.NONE.toString()),
     /** startup checks properties */
     LIBJEMALLOC("cassandra.libjemalloc"),
     /** Line separator ("\n" on UNIX). */
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java 
b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index 4b0f036914..940fd2d733 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -5023,7 +5023,7 @@ public class DatabaseDescriptor
     {
         // Config is null for junits that don't load the config. Get from env 
var that CI/build.xml sets
         if (conf == null)
-            return 
CassandraRelevantProperties.JUNIT_STORAGE_COMPATIBILITY_MODE.getEnum(StorageCompatibilityMode.CASSANDRA_4);
+            return 
CassandraRelevantProperties.JUNIT_STORAGE_COMPATIBILITY_MODE.getEnum(StorageCompatibilityMode.NONE);
         else
             return conf.storage_compatibility_mode;
     }
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java 
b/src/java/org/apache/cassandra/net/MessagingService.java
index a0f40d3126..d8512103da 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -224,7 +224,20 @@ public class MessagingService extends 
MessagingServiceMBeanImpl implements Messa
         VERSION_50(13),
         VERSION_51(14);
 
-        public static final Version CURRENT = 
DatabaseDescriptor.getStorageCompatibilityMode().isBefore(5) ? VERSION_40 : 
VERSION_51;
+        public static final Version CURRENT;
+
+        static
+        {
+             if (DatabaseDescriptor.getStorageCompatibilityMode().isBefore(5))
+             {
+                 logger.warn("Starting in storage compatibility mode " + 
DatabaseDescriptor.getStorageCompatibilityMode());
+                 CURRENT = VERSION_40;
+             }
+             else
+             {
+                 CURRENT = VERSION_51;
+             }
+        }
 
         public final int value;
 
diff --git a/src/java/org/apache/cassandra/repair/messages/PrepareMessage.java 
b/src/java/org/apache/cassandra/repair/messages/PrepareMessage.java
index bf76190fc3..a2951ef304 100644
--- a/src/java/org/apache/cassandra/repair/messages/PrepareMessage.java
+++ b/src/java/org/apache/cassandra/repair/messages/PrepareMessage.java
@@ -89,13 +89,14 @@ public class PrepareMessage extends RepairMessage
     }
 
     private static final String MIXED_MODE_ERROR = "Some nodes involved in 
repair are on an incompatible major version. " +
-                                                   "Repair is not supported in 
mixed major version clusters.";
+                                                   "Repair is not supported in 
mixed major version clusters (%d vs %d).";
 
     public static final IVersionedSerializer<PrepareMessage> serializer = new 
IVersionedSerializer<PrepareMessage>()
     {
         public void serialize(PrepareMessage message, DataOutputPlus out, int 
version) throws IOException
         {
-            Preconditions.checkArgument(version == 
MessagingService.current_version, MIXED_MODE_ERROR);
+            Preconditions.checkArgument(version == 
MessagingService.current_version,
+                                        String.format(MIXED_MODE_ERROR, 
version, MessagingService.current_version));
 
             out.writeInt(message.tableIds.size());
             for (TableId tableId : message.tableIds)
@@ -115,7 +116,8 @@ public class PrepareMessage extends RepairMessage
 
         public PrepareMessage deserialize(DataInputPlus in, int version) 
throws IOException
         {
-            Preconditions.checkArgument(version == 
MessagingService.current_version, MIXED_MODE_ERROR);
+            Preconditions.checkArgument(version == 
MessagingService.current_version,
+                                        String.format(MIXED_MODE_ERROR, 
version, MessagingService.current_version));
 
             int tableIdCount = in.readInt();
             List<TableId> tableIds = new ArrayList<>(tableIdCount);
diff --git 
a/test/simulator/test/org/apache/cassandra/simulator/test/AlwaysDeliverNetworkScheduler.java
 
b/test/simulator/main/org/apache/cassandra/simulator/AlwaysDeliverNetworkScheduler.java
similarity index 82%
rename from 
test/simulator/test/org/apache/cassandra/simulator/test/AlwaysDeliverNetworkScheduler.java
rename to 
test/simulator/main/org/apache/cassandra/simulator/AlwaysDeliverNetworkScheduler.java
index 59b274c335..601f308194 100644
--- 
a/test/simulator/test/org/apache/cassandra/simulator/test/AlwaysDeliverNetworkScheduler.java
+++ 
b/test/simulator/main/org/apache/cassandra/simulator/AlwaysDeliverNetworkScheduler.java
@@ -16,12 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.cassandra.simulator.test;
+package org.apache.cassandra.simulator;
 
 import java.util.concurrent.TimeUnit;
 
 import org.apache.cassandra.simulator.FutureActionScheduler;
-import org.apache.cassandra.simulator.RandomSource;
 import org.apache.cassandra.simulator.systems.SimulatedTime;
 import org.apache.cassandra.simulator.utils.LongRange;
 
@@ -35,19 +34,16 @@ import static java.util.concurrent.TimeUnit.NANOSECONDS;
 public class AlwaysDeliverNetworkScheduler implements FutureActionScheduler
 {
     private final SimulatedTime time;
-    private final RandomSource randomSource;
-    private final LongRange schedulerDelay = new LongRange(0, 50, 
MICROSECONDS, NANOSECONDS);
 
     private final long delayNanos;
 
-    AlwaysDeliverNetworkScheduler(SimulatedTime time, RandomSource 
randomSource)
+    public AlwaysDeliverNetworkScheduler(SimulatedTime time, RandomSource 
randomSource)
     {
         this(time, randomSource, TimeUnit.MILLISECONDS.toNanos(10));
     }
-    AlwaysDeliverNetworkScheduler(SimulatedTime time, RandomSource 
randomSource, long dealayNanos)
+    public AlwaysDeliverNetworkScheduler(SimulatedTime time, RandomSource 
randomSource, long dealayNanos)
     {
         this.time = time;
-        this.randomSource = randomSource;
         this.delayNanos = dealayNanos;
     }
     public Deliver shouldDeliver(int from, int to)
diff --git 
a/test/simulator/main/org/apache/cassandra/simulator/ClusterSimulation.java 
b/test/simulator/main/org/apache/cassandra/simulator/ClusterSimulation.java
index 7eb5618ba7..b775ae22a6 100644
--- a/test/simulator/main/org/apache/cassandra/simulator/ClusterSimulation.java
+++ b/test/simulator/main/org/apache/cassandra/simulator/ClusterSimulation.java
@@ -500,6 +500,7 @@ public class ClusterSimulation<S extends Simulation> 
implements AutoCloseable
                 switch (Choices.random(random, kinds).choose(random))
                 {
                     default: throw new AssertionError();
+                    case IMMEDIATE: return new 
RunnableActionScheduler.Immediate();
                     case SEQUENTIAL: return new 
RunnableActionScheduler.Sequential();
                     case UNIFORM: return new 
RunnableActionScheduler.RandomUniform(random);
                     case RANDOM_WALK: return new 
RunnableActionScheduler.RandomWalk(random);
diff --git 
a/test/simulator/test/org/apache/cassandra/simulator/test/FixedLossNetworkScheduler.java
 
b/test/simulator/main/org/apache/cassandra/simulator/FixedLossNetworkScheduler.java
similarity index 95%
rename from 
test/simulator/test/org/apache/cassandra/simulator/test/FixedLossNetworkScheduler.java
rename to 
test/simulator/main/org/apache/cassandra/simulator/FixedLossNetworkScheduler.java
index d2f6a2eb02..923b691de8 100644
--- 
a/test/simulator/test/org/apache/cassandra/simulator/test/FixedLossNetworkScheduler.java
+++ 
b/test/simulator/main/org/apache/cassandra/simulator/FixedLossNetworkScheduler.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.cassandra.simulator.test;
+package org.apache.cassandra.simulator;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -26,8 +26,6 @@ import java.util.concurrent.TimeUnit;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.cassandra.simulator.FutureActionScheduler;
-import org.apache.cassandra.simulator.RandomSource;
 import org.apache.cassandra.simulator.systems.SimulatedTime;
 import org.apache.cassandra.simulator.utils.ChanceRange;
 import org.apache.cassandra.simulator.utils.KindOfSequence;
@@ -53,7 +51,7 @@ public class FixedLossNetworkScheduler implements 
FutureActionScheduler
     final KindOfSequence.Decision delayChance;
     final LongRange delayNanos, longDelayNanos;
 
-    FixedLossNetworkScheduler(int nodes, RandomSource random, SimulatedTime 
time, KindOfSequence kind, float min, float max)
+    public FixedLossNetworkScheduler(int nodes, RandomSource random, 
SimulatedTime time, KindOfSequence kind, float min, float max)
     {
         this.random = random;
         this.time = time;
diff --git 
a/test/simulator/main/org/apache/cassandra/simulator/RunnableActionScheduler.java
 
b/test/simulator/main/org/apache/cassandra/simulator/RunnableActionScheduler.java
index 95be9296fd..69efe3486b 100644
--- 
a/test/simulator/main/org/apache/cassandra/simulator/RunnableActionScheduler.java
+++ 
b/test/simulator/main/org/apache/cassandra/simulator/RunnableActionScheduler.java
@@ -26,7 +26,7 @@ import org.apache.cassandra.simulator.utils.KindOfSequence;
 
 public abstract class RunnableActionScheduler implements Consumer<Action>
 {
-    public enum Kind { RANDOM_WALK, UNIFORM, SEQUENTIAL }
+    public enum Kind { RANDOM_WALK, UNIFORM, SEQUENTIAL, IMMEDIATE }
 
     public static class Immediate extends RunnableActionScheduler
     {
diff --git 
a/test/simulator/main/org/apache/cassandra/simulator/cluster/KeyspaceActions.java
 
b/test/simulator/main/org/apache/cassandra/simulator/cluster/KeyspaceActions.java
index 7d5699d5d3..7551d31bbf 100644
--- 
a/test/simulator/main/org/apache/cassandra/simulator/cluster/KeyspaceActions.java
+++ 
b/test/simulator/main/org/apache/cassandra/simulator/cluster/KeyspaceActions.java
@@ -183,7 +183,7 @@ public class KeyspaceActions extends ClusterActions
         }));
     }
 
-    private PlacementSimulator.ReplicatedRanges placements(NodesByDc 
nodesByDc, NodeLookup lookup, int[] rfs)
+    private PlacementSimulator.ReplicatedRanges placements(NodesByDc 
nodesByDc, int[] rfs)
     {
         List<PlacementSimulator.Node> nodes = new ArrayList<>();
         for (int dcIdx = 0; dcIdx < nodesByDc.dcs.length; dcIdx++)
@@ -262,10 +262,10 @@ public class KeyspaceActions extends ClusterActions
                 case JOIN:
                 {
                     Topology before = topology;
-                    PlacementSimulator.ReplicatedRanges placementsBefore = 
placements(joined, nodeLookup, currentRf);
+                    PlacementSimulator.ReplicatedRanges placementsBefore = 
placements(joined, currentRf);
                     int join = registered.removeRandom(random, dc);
                     joined.add(join);
-                    PlacementSimulator.ReplicatedRanges placementsAfter = 
placements(joined, nodeLookup, currentRf);
+                    PlacementSimulator.ReplicatedRanges placementsAfter = 
placements(joined, currentRf);
                     Topology during = recomputeTopology(placementsBefore, 
placementsAfter);
                     updateTopology(during);
                     Topology after = recomputeTopology(placementsAfter, 
placementsAfter);
@@ -275,13 +275,13 @@ public class KeyspaceActions extends ClusterActions
                 case REPLACE:
                 {
                     Topology before = topology;
-                    PlacementSimulator.ReplicatedRanges placementsBefore = 
placements(joined, nodeLookup, currentRf);
+                    PlacementSimulator.ReplicatedRanges placementsBefore = 
placements(joined, currentRf);
                     int join = registered.removeRandom(random, dc);
                     int leave = joined.selectRandom(random, dc);
                     joined.add(join);
                     joined.remove(leave);
                     left.add(leave);
-                    PlacementSimulator.ReplicatedRanges placementsAfter = 
placements(joined, nodeLookup, currentRf);
+                    PlacementSimulator.ReplicatedRanges placementsAfter = 
placements(joined, currentRf);
                     nodeLookup.setTokenOf(join, nodeLookup.tokenOf(leave));
                     Topology during = recomputeTopology(placementsBefore, 
placementsAfter);
                     updateTopology(during);
@@ -296,10 +296,10 @@ public class KeyspaceActions extends ClusterActions
                 case LEAVE:
                 {
                     Topology before = topology;
-                    PlacementSimulator.ReplicatedRanges placementsBefore = 
placements(joined, nodeLookup, currentRf);
+                    PlacementSimulator.ReplicatedRanges placementsBefore = 
placements(joined, currentRf);
                     int leave = joined.removeRandom(random, dc);
                     left.add(leave);
-                    PlacementSimulator.ReplicatedRanges placementsAfter = 
placements(joined, nodeLookup, currentRf);
+                    PlacementSimulator.ReplicatedRanges placementsAfter = 
placements(joined, currentRf);
                     Topology during = recomputeTopology(placementsBefore, 
placementsAfter);
                     updateTopology(during);
                     Topology after = recomputeTopology(placementsAfter, 
placementsAfter);
@@ -375,7 +375,7 @@ public class KeyspaceActions extends ClusterActions
 
     private Topology recomputeTopology()
     {
-        PlacementSimulator.ReplicatedRanges ranges = placements(joined, 
nodeLookup, currentRf);
+        PlacementSimulator.ReplicatedRanges ranges = placements(joined, 
currentRf);
         return recomputeTopology(ranges, ranges);
     }
 
diff --git 
a/test/simulator/main/org/apache/cassandra/simulator/paxos/PaxosClusterSimulation.java
 
b/test/simulator/main/org/apache/cassandra/simulator/paxos/PaxosClusterSimulation.java
index 0fd9135f5b..03d7e61e7f 100644
--- 
a/test/simulator/main/org/apache/cassandra/simulator/paxos/PaxosClusterSimulation.java
+++ 
b/test/simulator/main/org/apache/cassandra/simulator/paxos/PaxosClusterSimulation.java
@@ -75,6 +75,7 @@ class PaxosClusterSimulation extends 
ClusterSimulation<PaxosSimulation> implemen
     {
         super(random, seed, uniqueNum, builder,
               config -> config.set("paxos_variant", 
builder.initialPaxosVariant.name())
+                              .set("storage_compatibility_mode", "NONE")
                               .set("paxos_cache_size", (builder.stateCache != 
null ? builder.stateCache : random.uniformFloat() < 0.5) ? null : "0MiB")
                               .set("paxos_state_purging", "repaired")
                               .set("paxos_on_linearizability_violations", 
"log")
diff --git 
a/test/simulator/test/org/apache/cassandra/simulator/test/HarrySimulatorTest.java
 
b/test/simulator/test/org/apache/cassandra/simulator/test/HarrySimulatorTest.java
index 80d39a51a6..d138b96f1c 100644
--- 
a/test/simulator/test/org/apache/cassandra/simulator/test/HarrySimulatorTest.java
+++ 
b/test/simulator/test/org/apache/cassandra/simulator/test/HarrySimulatorTest.java
@@ -71,8 +71,10 @@ import org.apache.cassandra.simulator.Action;
 import org.apache.cassandra.simulator.ActionList;
 import org.apache.cassandra.simulator.ActionSchedule;
 import org.apache.cassandra.simulator.Actions;
+import org.apache.cassandra.simulator.AlwaysDeliverNetworkScheduler;
 import org.apache.cassandra.simulator.ClusterSimulation;
 import org.apache.cassandra.simulator.Debug;
+import org.apache.cassandra.simulator.FixedLossNetworkScheduler;
 import org.apache.cassandra.simulator.FutureActionScheduler;
 import org.apache.cassandra.simulator.OrderOn;
 import org.apache.cassandra.simulator.RandomSource;
@@ -394,6 +396,11 @@ public class HarrySimulatorTest
             this.schedule = schedule;
         }
 
+        public HarrySimulation withScheduler(RunnableActionScheduler scheduler)
+        {
+            return new HarrySimulation(simulated, scheduler, cluster, 
harryRun, (ignore) -> nodeState, schedule);
+        }
+
         public HarrySimulation withSchedulers(Function<HarrySimulation, 
Map<Verb, FutureActionScheduler>> schedulers)
         {
             Map<Verb, FutureActionScheduler> perVerbFutureActionScheduler = 
schedulers.apply(this);
@@ -523,7 +530,7 @@ public class HarrySimulatorTest
                     {
                         HarrySimulation current = simulation;
                         if (i == 0)
-                            current = current.withSchedulers((s) -> 
Collections.emptyMap());
+                            current = current.withScheduler(new 
RunnableActionScheduler.Immediate()).withSchedulers((s) -> 
Collections.emptyMap());
                         current.withSchedule(phases[i]).run();
                     }
                 }
@@ -534,7 +541,6 @@ public class HarrySimulatorTest
                 }
             }
         }
-        ;
     }
 
     /**


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to