incubator-cassandra-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Goffinet ...@chrisgoffinet.com>
Subject Re: moving to framed transport (client breakage inevitable)
Date Sat, 20 Jun 2009 20:05:39 GMT
+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<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