Commit Graph

183 Commits

Author SHA1 Message Date
Benedict Elliott Smith 763bcf2de5 Fast single-partition "Ephemeral Reads"
Introduce a special kind of non-durable read that provides only per-key linearizable isolation; i.e. strict-serializable isolation for single partition-key reads.
This read creates only a happens-before edge, by collecting dependencies for execution and ensuring that execution happens strictly after these dependencies
have executed, but at no precise time otherwise. So later writes may be witnessed, and if multiple keys are read they may represents different points in time.

patch by Benedict; reviewed by Ariel Weisberg for CASSANDRA-19305

Refactor CommandsForKey for efficiency, and to support transitive dependency elision

patch by Benedict; reviewed by Aleksey Yeshchenko for CASSANDRA-19310
2025-04-17 11:59:50 -07:00
Benedict Elliott Smith 8de3dfc711 CASSANDRA-18365: Protocol fixes 2025-04-17 11:59:49 -07:00
Aleksey Yeschenko 20af77031a Pre-requisite changes for CASSANDRA-18888
patch by Aleksey Yeschenko; reviewed by Ariel Weisberg for
CASSANDRA-18888
2025-04-17 11:59:49 -07:00
David Capwell 633bbee1a6 (Accord): Bug fixes from CASSANDRA-18675 to better support adding keyspaces
patch by David Capwell; reviewed by Benedict Elliott Smith, Blake Eggleston for CASSANDRA-18804
2025-04-17 11:59:49 -07:00
David Capwell a95f072e35 (Accord) NPE while trying to serialize FoundKnownMap as value is null half the time but unexpected while serializing
patch by David Capwell; reviewed by Blake Eggleston for CASSANDRA-19253
2025-04-17 11:59:49 -07:00
Blake Eggleston cb1a05c5d4 Schema based accord fast path configuration
Patch by Blake Eggleston; Reviewed by David Capwell and Alex Petrov for CASSANDRA-19009
2025-04-17 11:59:49 -07:00
Ariel Weisberg 1f4675a902 Fix AccordCommandsPurger universal durability check 2025-04-17 11:59:49 -07:00
Ariel Weisberg a9cb71833a Fix additional live migration/interop merge issues
s fc83325fa9 Fix AccordObjectSizes empty sizes
s 44bce6a08c Fix error handling when there are no column families to repair
s f1459540e5 Fix broken nowInSec deserialization
s 91c1befd1c Fix Mutation serializedSize
s b11467c200 Using simulated clock instead of raw nanoTime
s 6412b35924 Accord repair needs to use sentinel tokens
s d19c01ff01 Enable Accord repair with HappyPathFuzzTest
s 2da87f91b8 Implement abort in AccordRepairJob
s e12877c4fa move barrier to accord spec

Patch by Ariel Weisberg; Reviewed by David Capwell for CASSANDRA-19023
2025-04-17 11:59:49 -07:00
Blake Eggleston d07a36106d Reduce command deps
Patch by Blake Eggleston; Reviewed by Benedict Elliott Smith for CASSANDRA-18784
2025-04-17 11:59:49 -07:00
Benedict Elliott Smith 050688228f Improve validation and address various discovered faults
patch by Benedict; reviewed by Ariel Weisberg for CASSANDRA-19045
2025-04-17 11:59:49 -07:00
Ariel Weisberg c10c84b9cd Accord/non-Accord interoperability and support for live migration
Patch by Ariel Weisberg; Reviewed by Blake Eggleston for CASSANDRA-18129

Co-authored-by: Blake Eggleston <beggleston@apple.com>
2025-04-17 11:59:49 -07:00
Jon Meredith 9e766f46a3 Several simulator fixes not yet merged to cep-15-accord
s c4bf1533b4 Add more JVM arg checks to the paxos simulation runner
s 1b650a0636 break circular dependency between FileSystemOwnershipCheck and CassandraRelevantProperties
s e0111748dd fix verify with-rng and interrupts
s f8475f2a18 make SimulatedFailureDetector deterministic
s ee77734bbe Deterministic transformation
s 890f23696a Add mechanism forsimulator to intercept password salting
s 5205b99874 Specify Paxos V2 because it is the only linearizable option

Patch by Ariel Weisberg; Reviewed by David Capwell for CASSANDRA-19008
2025-04-17 11:59:49 -07:00
David Capwell 18d3aa47bc CEP-15: (C*) Implement TopologySorter to prioritise hosts based on DynamicSnitch and/or topology layout
patch by Blake Eggleston, David Capwell; reviewed by Blake Eggleston for CASSANDRA-18929
2025-04-17 11:59:49 -07:00
Jacek Lewandowski dfd1e99fd1 CEP-15: Add Accord configuration stub
Patch by Jacek Lewandowski; reviewed by David Capwell for CASSANDRA-18221
2025-04-17 11:59:49 -07:00
Jacek Lewandowski 27a9313970 CEP-15: Accord metrics
Patch by Jacek Lewandowski, reviewed by Caleb Rackliffe, David Capwell and Henrik Ingo for CASSANDRA-18580
2025-04-17 11:59:49 -07:00
Caleb Rackliffe cffe1cc61a ninja-fix: minor post-TCM-rebase cleanup 2025-04-17 11:59:49 -07:00
Aleksey Yeschenko c0a63c9164 CEP-15: Minimize transaction state kept in system tables
patch by Aleksey Yeschenko; reviewed by Ariel Weisberg for CASSANDRA-18573
2025-04-17 11:59:48 -07:00
Caleb Rackliffe 08428a2750 - Avoid persisting fragments that do not require completion as Updates in TxnWrite, as they can simply be pulled from PartialTxn when needed in Write#apply()
- Avoid serializing full TxnData instances to Accord state tables

patch by Caleb Rackliffe; reviewed by David Capwell, Benedict Elliot Smith, and Ariel Weisberg for CASSANDRA-18355
2025-04-17 11:59:48 -07:00
David Capwell 10e065ffe5 Fix Accord compaction purger tombstone logic
Accord compaction purgers see random slices of Accord state during compaction (based on randomly selected compaction inputs).

For at least the `durability` column in the `commands` table the tombstone being created when truncating was deleting the latest value since we can get enough information to truncate without actuall yhaving the latest `durability` value.

To fix we can wait to emit a tombstone until we are erasing the entire command row when truncating or truncating with outcome and meanwhile we can drop the extra columns that are no longer needed instead of using a tombstone. We don't need to emit cell tombstones we can drop them from the purger when processing each row.

patch by Ariel Weisberg; reviewed by David Capwell for CASSANDRA-18795
2025-04-17 11:59:48 -07:00
David Capwell 6167e436c3 CEP-15 (C*): when loading commands that have empty waiting_on, make sure not to loose the partial deps (#3590)
patch by David Capwell; reviewed by Aleksey Yeschenko for CASSANDRA-18783
2025-04-17 11:59:48 -07:00
Ariel Weisberg 82acd3e950 Allow exceptions to be propagated remotely
https://github.com/apache/cassandra-accord/pull/56

Patch by Ariel Weisberg; Reviewed by David Capwell for CASSANDRA-18779
2025-04-17 11:59:48 -07:00
David Capwell 76994f8196 CEP-15 (C*) When a host replacement happens don't loose the peer mapping right away (#3575)
patch by David Capwell; reviewed by Blake Eggleston for CASSANDRA-18764
2025-04-17 11:59:48 -07:00
Benedict Elliott Smith a6bb08d926 Support state eviction (i.e. permit the state machine to erase transactions that are known to be applied across the cluster)
patch by Benedict Elliott Smith; reviewed by Ariel Weisberg, Aleksey Yeschenko, and David Capwell for CASSANDRA-18883

Co-authored-by: Benedict Elliott Smith <benedict@apache.org>
Co-authored-by: Ariel Weisberg <aweisberg@apple.com>
Co-authored-by: Aleksey Yeschenko <aleksey@apache.org>
Co-authored-by: David Capwell <dcapwell@gmail.com>
2025-04-17 11:59:48 -07:00
Blake Eggleston 00bbf4ec8e CEP-15: Accord Bootstrap Integration
Patch by Blake Eggleston and Benedict Elliott Smith; Reviewed by David
Capwell for CASSANDRA-17101

CEP-15: Accord TCM integration

Patch by Blake Eggleston; Reviewed by David Capwell for CASSANDRA-18444
2025-04-17 11:59:48 -07:00
Aleksey Yeschenko 8f156fc5dc CEP-15: Extend Accord MessageType with a side effect flag
patch by Aleksey Yeschenko; reviewed by Benedic Elliott Smith for
CASSANDRA-18561
2025-04-17 11:59:48 -07:00
David Capwell f76f806de1 CEP-15: (C*) Add notion of CommandsForRanges and make this durable in C*
patch by David Capwell; reviewed by Ariel Weisberg for CASSANDRA-18519
2025-04-17 11:59:48 -07:00
Benedict Elliott Smith 537c1f991a (Accord only) Permit nodes to join a cluster without the full transaction history
patch by Benedict; reviewed by Blake Eggleston for CASSANDRA-18523
2025-04-17 11:59:48 -07:00
David Capwell 8633a301f7 CEP-15: (C*) Accord message processing should avoid being passed on to a Stage and run directly in the messageing handler
patch by David Capwell; reviewed by Ariel Weisberg, Benedict Elliott Smith for CASSANDRA-18364
2025-04-17 11:59:48 -07:00
David Capwell 7ad2bf672c CEP-15 (Accord) Original and recover coordinators may hit a race condition with PreApply where reads and writes are interleaved, causing one of the coordinators to see the writes from the other
patch by David Capwell; reviewed by Ariel Weisberg for CASSANDRA-18422
2025-04-17 11:59:48 -07:00
David Capwell f092461114 CEP-15: (Accord) Migrate Accord away from JDK random to a new interface RandomSource
patch by David Capwell; reviewed by Blake Eggleston for CASSANDRA-18213
2025-04-17 11:59:48 -07:00
Blake Eggleston 34bd73e2a7 CEP-15/Accord Immutable State Refactor
Patch by Blake Eggleston; Reviewed by David Capwell and Benedict Elliott Smith for Cassandra-18192
2025-04-17 11:59:48 -07:00
Blake Eggleston e6a8c030c1 add AsyncChain implementations and tests
Patch by Blake Eggleston; Reviewed by David Capwell & Benedict Elliott Smith for CASSANDRA-18004
2025-04-17 11:59:47 -07:00
Blake Eggleston 09c8fa1030 CEP-15 (C*): Messaging and storage engine integration
patch by Blake Eggleston; reviewed by Benedict Elliott Smith, David Capwell for CASSANDRA-17103
2025-04-17 11:59:47 -07:00