incubator-cassandra-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Evan Weaver <ewea...@gmail.com>
Subject Re: moving to framed transport (client breakage inevitable)
Date Sat, 20 Jun 2009 20:32:47 GMT
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<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
>>>
>>>
>>>
>>>
>
>



-- 
Evan Weaver

Mime
View raw message