Hi, We are working to solve on a multi threaded distributed design which in which a thread reads current state from Cassandra (Single partition ~ 20 Rows), does some computation and saves it back in. But it needs to be ensured that in between reading and writing by that thread any other thread should not have saved any operation on that partition.
We have thought of a solution for the same - *having a write_time column* in the schema and making it static. Every time the thread picks up a job read will be performed with LOCAL_QUORUM. While writing into Cassandra batch will contain a LWT (IF write_time is read time) otherwise read will be performed and computation will be done again and so on. This will ensure that while saving partition is in a state it was read from. In order to avoid race condition we need to ensure couple of things: 1. While saving data in a batch with a single partition (*Rows may be Updates, Deletes, Inserts)* are they Isolated per replica node. (Not necessarily on a cluster as a whole). Is there a possibility of client reading partial rows? 2. If we do a LOCAL_QUORUM read and LOCAL_QUORUM writes in this case could there a chance of inconsistency in this case (When LWT is being used in batches). 3. Is it possible to use multiple LWT in a single Batch? In general how does LWT performs with Batch and is Paxos acted on before batch execution? Can someone help us with this? Thanks & Regards, Bhuvan