incubator-cassandra-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Ellis <jbel...@gmail.com>
Subject Re: moving to framed transport (client breakage inevitable)
Date Sat, 20 Jun 2009 04:56:29 GMT
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<ian@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<eevans@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
>
>
>
>

Mime
View raw message