Skip to content

Thrift 0.5 upgrade + Cassandra 0.7.0 #52

loretoparisi opened this Issue Jan 22, 2011 · 1 comment

1 participant


I successfully upgraded Pandra 0.2.1 to the new Thrift 0.5.
It works with Cassandra 0.6.5.

Cassandra 0.7.0 comes with a framed transport, so it's not compatible with Thrift < 0.5.
I tried to upgrade Cassandra as-it-is with Pandra 0.2.1 + Thrift 0.5, but it hangs on.

I'm not sure what's happing inside Pandra, because I have no error log fro my side apparently.

Before upgrading Thrift to 0.5, I had this error:

  ERROR [pool-1-thread-1] 2011-01-19 18:27:05,188 (line 175) Thrift error occurred during processing of message.
   org.apache.thrift.protocol.TProtocolException: Missing version in readMessageBegin, old client?
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(
    at org.apache.cassandra.thrift.Cassandra$Processor.process(
    at org.apache.cassandra.thrift.CustomTThreadPoolServer$
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
    at java.util.concurrent.ThreadPoolExecutor$

telling us that the client was too old (Thrift <0.5).

I just realized that downgrading to Cassandra 0.6.5 I have also an error on Cassandra startup, that prevents server to start:

Gemini:~ loretoparisi$ java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(
at org.apache.cassandra.dht.RandomPartitioner.convertFromDiskFormat(
at org.apache.cassandra.db.ColumnFamilyStore.(
at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(
at org.apache.cassandra.db.Table.(
at org.apache.cassandra.db.SystemTable.checkHealth(
at org.apache.cassandra.thrift.CassandraDaemon.setup(
at org.apache.cassandra.thrift.CassandraDaemon.main(

I'm reporting this strange behavior to guys at Cassandra.

I guess that PandraCore and some other classes are involved in calling the Socket transport as I did some modifications to PandraCore calling the Socket before.
Am I right?
Anyone know a possible point of failure of Pandra with Thrift 0.5 connecting to Cassandra 0.7.0?


I just realized that the problem is in the interface also:

In 0.6 you have

ColumnOrSuperColumn get(1:required string keyspace,
2:required string key,
3:required ColumnPath column_path,
4:required ConsistencyLevel consistency_level=ONE)
throws (1:InvalidRequestException ire,
2:NotFoundException nfe,
3:UnavailableException ue,
4:TimedOutException te),

In 0.7 you have

ColumnOrSuperColumn get(1:required binary key,
2:required ColumnPath column_path,
3:required ConsistencyLevel consistency_level=ConsistencyLevel.ONE)
throws (1:InvalidRequestException ire,
2:NotFoundException nfe,
3:UnavailableException ue,

Anyway it's possible to test Cassandra 0.7.0 with Pandra 0.2.1 using the unframed transport:

 thrift_framed_transport_size_in_mb: 0 // cassandra.yaml, default was 15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.