incubator-cassandra-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Hodges <j...@somethingsimilar.com>
Subject Re: moving to framed transport (client breakage inevitable)
Date Sun, 21 Jun 2009 18:05:11 GMT
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<eweaver@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<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