We have not yet provided a newer version (0.6) but we changed the code quite a bit to do two things:
1) make use of CQL instead of thrift
2) have an intermediate proxy so the website system can connect to the proxy, really fast, instead of directly connecting to ONE Cassandra node which could be dead at that time (i.e. the proxy can connect to any number of nodes at leisure and let you free of dealing with that problem.) What this gives a snap_child process is the ability to connect to one place and get database answers from any number of databases. This generally makes it a lot faster.... read more
The Cassandra lock uses a couple of rows in the lock table. One introduced by "entering::..." which is attached to a "drop that row as soon as this function exits" and the other, "ticket::...". which is the actual lock.
The problem here was that the "entering::..." row was not given a TTL and thus it could survive a crash or a KILL or such fatal error that would end the function call before it had a chance to call the dropCell() function before exiting the function.... read more
Here is version 0.4.7!
It includes an implementation of the Lamport bakery algorithm in order to lock things where you cannot otherwise but must guarantee unicity.
This is after I found this page on the Cassandra wiki:
As I was working on this algorithm I found all sorts of little problems that I fixed (documentation, incorrect implementations, synchronization on clusters, etc. see the README.txt for details)... read more
Posted version 0.4.5, mainly fixes, although the Column Predicate can now be used to read indexes of any size as it can automatically read the next set of columns without you having to do anything (makes it really easy!)
Otherwise the predicates could not be QObject's so I fixed that too.
This version introduce support for counters. For example, you can now write something like:
to increment a counter. You can also use --, += and -= to increment and decrement as needed. The get and set work seamlessly so you can use the normal libQtCassandra syntax for those:
cassandra["context"]["table"]["row"]["column"] = 81; cassandra["context"]["table"]["row"]["column"] += 9; QCassandraValue value(cassandra["context"]["table"]["row"]["column"]); // value is 90... [read more](/p/libqtcassandra/blog/2012/08/version-043/)
Uploaded version 0.4.2 with the main purpose of fixing the readRows() function which would otherwise return the same rows over and over again. Now it can be called repetitively and it returns what's expected.
Also upgraded the library to work with Cassandra version 1.0 and 1.1.