Hi I am trying to update my dependencies to the latest cassandara 1.2.x version currently 1.2.6.
There seems to be binary incompatibility in cassandra thirft TBinaryProtocol.
The constructor signature has been changed. :(.
I think that using TBinaryProtocol.Factory instead of TBinaryProtocol will fix the problem.
cassandraClient = new Cassandra.Client(new TBinaryProtocol(transport));
in ThriftConnection.open should become
cassandraClient = new Cassandra.Client(new TBinaryProtocol.Factory().getProtocol(transport));
Here is the stack trace for reference.
java.lang.NoSuchMethodError: org.apache.cassandra.thrift.TBinaryProtocol: method <init>(Lorg/apache/thrift/transport/TTransport;)V not found
The text was updated successfully, but these errors were encountered:
Any particular reason you need 1.2.6 on the client? Cassandra jars are being pulled in for convenience so astyanax won't need to implement things already in the cassandra code (such as partitioner). You can actually run a client with Cassandra 1.1 jars against a server running Cassandra 1.2.
Our server is running Cassandra 1.0.8 (we are in the process of upgrading). Our tests fail because astyanax client wouldn't connect to cassandra (stack trace same as above). So we now force version 1.2.5 for cassandra. It would be nice not to do that. I hope it gives you a little more context.
Also I am planning to run tests for my queries which will run EmbeddedCassandra. Having different versions for client and server in this case (if at all possible) will be a lot of pain.
And yes of course I prefer to run the tests against the actual Cassandra version used. Which in my case (early stage of development) is the latest one.