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<[email protected]> 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<[email protected]> 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<[email protected]> 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<[email protected]> 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 >>>>>> [email protected] >>>>>> >>>>>> >>>> >>>> -- >>>> Ian Holsman >>>> [email protected] >>>> >>>> >>>> >>>> >> >> > > > > -- > Evan Weaver >
