incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eric Evans <eev...@rackspace.com>
Subject moving to framed transport (client breakage inevitable)
Date Fri, 19 Jun 2009 20:22:11 GMT

As explained in CASSANDRA-241[1], the daemon process, which is currently
using a non-framed thrift transport is incompatible with (some?)
non-blocking client implementations. The solution is to standardize on a
framed transport which is compatible with all client implementations.

[1] https://issues.apache.org/jira/browse/CASSANDRA-241

Unfortunately this is going to break everyone's client apps. Fortunately
the fix is trivial.

For Java clients that look something like ...

    socket = new TSocket(hostname, port);
    TProtocol protocol = new TBinaryProtocol(socket);
    client = new Cassandra.Client(protocol);

... changing them to look like ...


    socket = new TSocket(hostname, port);
    TTransport transport = new TFramedTransport(socket)
    TProtocol protocol = new TBinaryProtocol(transport);
    client = new Cassandra.Client(protocol);

... should do the trick.

For a Python client that looks something like ...

    socket = TSocket.TSocket(host, port)
    transport = TTransport.TBufferedTransport(socket)
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    client = Cassandra.Client(protocol)

... change it to look like ...

    socket = TSocket.TSocket(host, port)
    transport = TTransport.TFramedTransport(socket)
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    client = Cassandra.Client(protocol)


Unless confronted with compelling arguments, Jonathan has agreed to
commit this change on Monday, so speak soon or forever hold your
peace. :)

--
Eric Evans
eevans@rackspace.com


Mime
View raw message