Dear all,

first of all let me introduce myself (or rather what I do). I am the
developer of the Infinispan Cassandra CacheStore (
http://community.jboss.org/wiki/CassandraCacheStore) which allows
persistence of Infinispan's cache to Cassandra's keyspaces. While developing
the cachestore I needed a connection pool for managing thrift connections.
Since none existed (apart from the ones developed within projects such as
Hector, Pelops and Lucandra), I decided to take Filip Hanik's excellent
jdbc-pool (http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html) and
"port" it to Cassandra.
During the development of the connection pool I had two needs which I solved
locally:

   - split the org.apache.cassandra.thrift class hierarchy from
   apache-cassandra-0.x.y.jar into a apache-cassandra-thrift-0.x.y.jar
   - have a standard org.apache.cassandra.thrift.CassandraDataSource
   interface, which I have defined as:

package org.apache.cassandra.thrift;

import org.apache.cassandra.thrift.Cassandra;
import org.apache.thrift.TException;

public interface CassandraThriftDataSource {
        Cassandra.Client getConnection() throws TException;
        void releaseConnection(Cassandra.Client connection);
}


In alternative a close() method on the Cassandra.Client interface,
which could be overridden to return the connection to the pool instead
of directly closing the underlying transport, although I believe this
might require changes to thrift.
This would provide a standard method for all client libraries to
obtain and release a connection (via a library, via JNDI, etc).

Would a patch against head be well accepted ?

Thanks for any suggestions

Tristan

Reply via email to