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
