incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Algermissen <jan.algermis...@nordsc.com>
Subject All subsequent CAS requests time out after heavy use of new CAS feature
Date Mon, 16 Sep 2013 16:09:08 GMT
Hi,

I am experimenting with C* 2.0 ( and today's java-driver 2.0 snapshot) for implementing distributed
locks.

Basically, I have a table  of 'states' I want to serialize access to:

  create table state ( id text , lock uuid , data text, primary key (id) )   (3 nodes, replication
level 3)

  insert into state (id) values ( 'foo')

I try to akquire the lock for state 'foo' like this:

  update state set lock = myUUID where id = 'foo' if lock = null;

and check whether I got it by comparing the lock against my supplied UUID:

   select lock from state where id = 'foo'; 

... do work on 'foo' state ....

release lock:

 update state set lock = null where id = 'foo' if lock = myUUID;


This works pretty well and if I increase the number of clients competing for the lock I start
seeing timeouts on the client side. Natural so far and the lock also remains in a consistent
state (it works to work around the failing clients and the uncertainty whether they got the
lock or not).

However, after pausing the clients for a while the timeouts do not disappear. Meaning that
when I send a single request after everything calms down , I still get a timeout:

   Caused by: com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra timeout
during write query at consistency SERIAL (-1 replica were required but only -1 acknowledged
the write)

I do not see any reaction in the C* logs for these follow-up requests that still time out.

Any idea how to approach this problem?

Jan





Mime
View raw message