You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Eric Evans <ee...@rackspace.com> on 2009/06/19 22:22:11 UTC

moving to framed transport (client breakage inevitable)

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


Re: moving to framed transport (client breakage inevitable)

Posted by Michael Greene <mi...@gmail.com>.
Evan's input makes sense.  I'll see if I can clean up that patch and
test appropriately.  I'd also worry about Cocoa support, but the Cocoa
developers, though few, seem active and willing to review patches.

I recant my previous objection, though it would be nice to see it as
an option at runtime until all languages receive Framed support.

Michael

On Sun, Jun 21, 2009 at 1:05 PM, Jeff Hodges<je...@somethingsimilar.com> wrote:
> I have to agree with Weaver here. This is a Good Thing to change and I
> imagine the C# developers could use some impetus to implement it.
> There is a JIRA ticket for adding this to C# in progress here:
>
> https://issues.apache.org/jira/browse/THRIFT-210
> --
> Jeff
>
> On Sat, Jun 20, 2009 at 1:32 PM, Evan Weaver<ew...@gmail.com> wrote:
>> Would this be sufficient motivation for a C# user to add framed support
>> in Thrift? This seems like a cart/horse issue.
>>
>> Evan
>>
>> On Sat, Jun 20, 2009 at 1:05 PM, Chris Goffinet<cg...@chrisgoffinet.com> wrote:
>>> +1 for making it an option in runtime.
>>>
>>> List of langs without Framed transport:
>>>
>>> C#
>>> Cocoa
>>> Haskell
>>> Ocaml
>>> Smalltalk
>>>
>>>
>>> On Jun 19, 2009, at 9:56 PM, Jonathan Ellis wrote:
>>>
>>>> That's probably what we'll have to do if C# et al don't support
>>>> Framed.  Which is a shame, because framed makes a lot more sense --
>>>> there's really no reason to keep non-framed around.  But that's Thrift
>>>> for you.
>>>>
>>>> -Jonathan
>>>>
>>>> On Fri, Jun 19, 2009 at 11:44 PM, Ian Holsman<ia...@holsman.net> wrote:
>>>>>
>>>>> Hey guys.
>>>>> is it possible to make this a run time option or something?
>>>>>
>>>>> On 20/06/2009, at 10:03 AM, Michael Greene wrote:
>>>>>
>>>>>> Hopping on a plane so this will be brief, but C# does not have a
>>>>>> Framed Transport, nor do a few of the other languages, so I'd have to
>>>>>> be -1 on this change.
>>>>>>
>>>>>> On Fri, Jun 19, 2009 at 3:22 PM, Eric Evans<ee...@rackspace.com> wrote:
>>>>>>>
>>>>>>> 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
>>>>>>>
>>>>>>>
>>>>>
>>>>> --
>>>>> Ian Holsman
>>>>> Ian@Holsman.net
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>>
>>
>> --
>> Evan Weaver
>>
>

Re: moving to framed transport (client breakage inevitable)

Posted by Jeff Hodges <je...@somethingsimilar.com>.
I have to agree with Weaver here. This is a Good Thing to change and I
imagine the C# developers could use some impetus to implement it.
There is a JIRA ticket for adding this to C# in progress here:

https://issues.apache.org/jira/browse/THRIFT-210
--
Jeff

On Sat, Jun 20, 2009 at 1:32 PM, Evan Weaver<ew...@gmail.com> wrote:
> Would this be sufficient motivation for a C# user to add framed support
> in Thrift? This seems like a cart/horse issue.
>
> Evan
>
> On Sat, Jun 20, 2009 at 1:05 PM, Chris Goffinet<cg...@chrisgoffinet.com> wrote:
>> +1 for making it an option in runtime.
>>
>> List of langs without Framed transport:
>>
>> C#
>> Cocoa
>> Haskell
>> Ocaml
>> Smalltalk
>>
>>
>> On Jun 19, 2009, at 9:56 PM, Jonathan Ellis wrote:
>>
>>> That's probably what we'll have to do if C# et al don't support
>>> Framed.  Which is a shame, because framed makes a lot more sense --
>>> there's really no reason to keep non-framed around.  But that's Thrift
>>> for you.
>>>
>>> -Jonathan
>>>
>>> On Fri, Jun 19, 2009 at 11:44 PM, Ian Holsman<ia...@holsman.net> wrote:
>>>>
>>>> Hey guys.
>>>> is it possible to make this a run time option or something?
>>>>
>>>> On 20/06/2009, at 10:03 AM, Michael Greene wrote:
>>>>
>>>>> Hopping on a plane so this will be brief, but C# does not have a
>>>>> Framed Transport, nor do a few of the other languages, so I'd have to
>>>>> be -1 on this change.
>>>>>
>>>>> On Fri, Jun 19, 2009 at 3:22 PM, Eric Evans<ee...@rackspace.com> wrote:
>>>>>>
>>>>>> 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
>>>>>>
>>>>>>
>>>>
>>>> --
>>>> Ian Holsman
>>>> Ian@Holsman.net
>>>>
>>>>
>>>>
>>>>
>>
>>
>
>
>
> --
> Evan Weaver
>

Re: moving to framed transport (client breakage inevitable)

Posted by Jonathan Ellis <jb...@gmail.com>.
If we were talking about any other project I would say "great idea!"
But with Thrift, simple patches can take 6+ weeks to be committed.  (I
am not exaggerating.)

So I would vote for making it configurable to avoid screwing over
people on those platforms.

-Jonathan

On Sat, Jun 20, 2009 at 3:32 PM, Evan Weaver<ew...@gmail.com> wrote:
> Would this be sufficient motivation for a C# user to add framed support
> in Thrift? This seems like a cart/horse issue.
>
> Evan
>
> On Sat, Jun 20, 2009 at 1:05 PM, Chris Goffinet<cg...@chrisgoffinet.com> wrote:
>> +1 for making it an option in runtime.
>>
>> List of langs without Framed transport:
>>
>> C#
>> Cocoa
>> Haskell
>> Ocaml
>> Smalltalk

Re: moving to framed transport (client breakage inevitable)

Posted by Evan Weaver <ew...@gmail.com>.
Would this be sufficient motivation for a C# user to add framed support
in Thrift? This seems like a cart/horse issue.

Evan

On Sat, Jun 20, 2009 at 1:05 PM, Chris Goffinet<cg...@chrisgoffinet.com> wrote:
> +1 for making it an option in runtime.
>
> List of langs without Framed transport:
>
> C#
> Cocoa
> Haskell
> Ocaml
> Smalltalk
>
>
> On Jun 19, 2009, at 9:56 PM, Jonathan Ellis wrote:
>
>> That's probably what we'll have to do if C# et al don't support
>> Framed.  Which is a shame, because framed makes a lot more sense --
>> there's really no reason to keep non-framed around.  But that's Thrift
>> for you.
>>
>> -Jonathan
>>
>> On Fri, Jun 19, 2009 at 11:44 PM, Ian Holsman<ia...@holsman.net> wrote:
>>>
>>> Hey guys.
>>> is it possible to make this a run time option or something?
>>>
>>> On 20/06/2009, at 10:03 AM, Michael Greene wrote:
>>>
>>>> Hopping on a plane so this will be brief, but C# does not have a
>>>> Framed Transport, nor do a few of the other languages, so I'd have to
>>>> be -1 on this change.
>>>>
>>>> On Fri, Jun 19, 2009 at 3:22 PM, Eric Evans<ee...@rackspace.com> wrote:
>>>>>
>>>>> 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
>>>>>
>>>>>
>>>
>>> --
>>> Ian Holsman
>>> Ian@Holsman.net
>>>
>>>
>>>
>>>
>
>



-- 
Evan Weaver

Re: moving to framed transport (client breakage inevitable)

Posted by Chris Goffinet <cg...@chrisgoffinet.com>.
+1 for making it an option in runtime.

List of langs without Framed transport:

C#
Cocoa
Haskell
Ocaml
Smalltalk


On Jun 19, 2009, at 9:56 PM, Jonathan Ellis wrote:

> That's probably what we'll have to do if C# et al don't support
> Framed.  Which is a shame, because framed makes a lot more sense --
> there's really no reason to keep non-framed around.  But that's Thrift
> for you.
>
> -Jonathan
>
> On Fri, Jun 19, 2009 at 11:44 PM, Ian Holsman<ia...@holsman.net> wrote:
>> Hey guys.
>> is it possible to make this a run time option or something?
>>
>> On 20/06/2009, at 10:03 AM, Michael Greene wrote:
>>
>>> Hopping on a plane so this will be brief, but C# does not have a
>>> Framed Transport, nor do a few of the other languages, so I'd have  
>>> to
>>> be -1 on this change.
>>>
>>> On Fri, Jun 19, 2009 at 3:22 PM, Eric Evans<ee...@rackspace.com>  
>>> wrote:
>>>>
>>>> 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
>>>>
>>>>
>>
>> --
>> Ian Holsman
>> Ian@Holsman.net
>>
>>
>>
>>


Re: moving to framed transport (client breakage inevitable)

Posted by Jonathan Ellis <jb...@gmail.com>.
That's probably what we'll have to do if C# et al don't support
Framed.  Which is a shame, because framed makes a lot more sense --
there's really no reason to keep non-framed around.  But that's Thrift
for you.

-Jonathan

On Fri, Jun 19, 2009 at 11:44 PM, Ian Holsman<ia...@holsman.net> wrote:
> Hey guys.
> is it possible to make this a run time option or something?
>
> On 20/06/2009, at 10:03 AM, Michael Greene wrote:
>
>> Hopping on a plane so this will be brief, but C# does not have a
>> Framed Transport, nor do a few of the other languages, so I'd have to
>> be -1 on this change.
>>
>> On Fri, Jun 19, 2009 at 3:22 PM, Eric Evans<ee...@rackspace.com> wrote:
>>>
>>> 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
>>>
>>>
>
> --
> Ian Holsman
> Ian@Holsman.net
>
>
>
>

Re: moving to framed transport (client breakage inevitable)

Posted by Ian Holsman <ia...@holsman.net>.
Hey guys.
is it possible to make this a run time option or something?

On 20/06/2009, at 10:03 AM, Michael Greene wrote:

> Hopping on a plane so this will be brief, but C# does not have a
> Framed Transport, nor do a few of the other languages, so I'd have to
> be -1 on this change.
>
> On Fri, Jun 19, 2009 at 3:22 PM, Eric Evans<ee...@rackspace.com>  
> wrote:
>>
>> 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
>>
>>

--
Ian Holsman
Ian@Holsman.net




Re: moving to framed transport (client breakage inevitable)

Posted by Michael Greene <mi...@gmail.com>.
Hopping on a plane so this will be brief, but C# does not have a
Framed Transport, nor do a few of the other languages, so I'd have to
be -1 on this change.

On Fri, Jun 19, 2009 at 3:22 PM, Eric Evans<ee...@rackspace.com> wrote:
>
> 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
>
>