cassandra/test
Sylvain Lebresne 2d0b168047 Fix serial read/non-applying CAS linearizability
Before this patch, a SERIAL read or a non-applying CAS replay any
in-progress commit by calling `beginAndRepairPaxos`, but only a quorum
of nodes is contacted, so a minority of nodes could have an unfinished
in-progress proposal in their Paxos state. If such in-progress proposal
is not replayed by a SERIAL read/non-applying CAS, it should never be
replayed by any following operation as that would break serializability,
but nothing was done to avoid this.

This patch ensures that both a SERIAL read or a non-applying CAS commit
an empty update before succeeding. This ensures that no prior incomplete
in-progress proposal can be replayed (such proposal will be discarded as
older than the last committed ballot).

As this fix has a performance impact on SERIAL reads, a flag is provided
to disable the new code (even if this is discouraged by a warning).

Patch by Sylvain Lebresne, reviewed by Benjamin Lerer for CASSANDRA-12126
2020-11-27 17:04:56 +01:00
..
burn/org/apache/cassandra Remove the SEPExecutor blocking behavior 2020-11-10 09:55:20 +01:00
conf Merge branch 'cassandra-2.2' into cassandra-3.0 2020-10-07 17:03:51 -07:00
data Allow recovery from the cases when CQL-created compact sense tables have bytes in EmptyType columns. 2020-06-04 20:04:27 +02:00
distributed/org/apache/cassandra Fix serial read/non-applying CAS linearizability 2020-11-27 17:04:56 +01:00
long/org/apache/cassandra Fix updating base table rows with TTL not removing materialized view entries 2017-12-07 08:17:06 +11:00
microbench/org/apache/cassandra/test/microbench StreamingHistogram is not thread safe 2017-09-05 09:54:27 -07:00
resources Fixed a NullPointerException when calling nodetool enablethrift 2020-10-12 11:04:37 -07:00
unit/org/apache/cassandra Avoid potential NPE in JVMStabilityInspector 2020-11-23 15:27:40 +00:00