Hi

Using Cassandra 2.0.0.
3 node cluster
Replication 2.
Using consistency ALL for both read and writes.

I have a single thread that reads a value, updates it and writes it back to
the table. The column type is big int. Updating counts for a timestamp.

With single thread and consistency ALL , I expect no lost updates. But as
seem from my application log below,

10 07:01:58,507 [Thread-10] BeaconCountersCAS2DAO [INFO] 1389366000  H
 old=59614 val =252 new =59866
10 07:01:58,611 [Thread-10] BeaconCountersCAS2DAO [INFO] 1389366000  H
 old=59866 val =252 new =60118
10 07:01:59,136 [Thread-10] BeaconCountersCAS2DAO [INFO] 1389366000  H
 old=60118 val =255 new =60373
10 07:02:00,242 [Thread-10] BeaconCountersCAS2DAO [INFO] 1389366000  H
 old=60373 val =243 new =60616
10 07:02:00,244 [Thread-10] BeaconCountersCAS2DAO [INFO] 1389366000  H
 old=60616 val =19 new =60635
10 07:02:00,326 [Thread-10] BeaconCountersCAS2DAO [INFO] 1389366000  H
 old=60616 val =233 new =60849

See the last 2 lines of above log.
value 60116 is updated to 60635. but the next operation reads the old value
60616 again.

I am not using counter column type because it does not support TTL and i
hear there are lot of open issues with counters.

Is there anything else I can do to further tighten the consistency or is
this pattern of high volume read - update - write not going to work in C* ?

regards
MJ

--

Reply via email to