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

Reply via email to