Health check for Cassandra connection (using hector)?

cassandra, hector

Solution

The solution I'm currently using, and which seems to be the most robust so far (tested with Cassandra 1.1 and 1.2) is a simple query on "system":

`Query<String> query = Query.selectQuery("*", "system", null, 1, consistencyLevel, StringSerializer.get());`

It's not exactly what I wanted since it's a "real" query, but on the other hand it doesn't give any false positives.

Problem

For operations monitoring of my application, I am looking for something similar to the commonly used "SQL connection validation" query SELECT 1; in Cassandra, using the Hector driver. I have tried things like looking at Cluster.getKnownPoolHosts() and .getConnectionManager().getActivePools(). But it seems that their status is not continuously updated, only when I actually try to access Cassandra with a query. I'd like my health check to be independent of any keyspaces or user CFs that need to exist, so just running a "dummy" query seems difficult (against what?). And of course it shouldn't take a lot of memory or generate any significant load. Can I force Hector somehow to update its connection pool status without running a real query? (BTW: CQL doesn't even accept "SELECT 1" as a valid query.)

Original source