Re: moving to framed transport (client breakage inevitable)
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 Evanseev...@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 eev...@rackspace.com
Re: moving to framed transport (client breakage inevitable)
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 Evanseev...@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 eev...@rackspace.com -- Ian Holsman i...@holsman.net
Re: moving to framed transport (client breakage inevitable)
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 Holsmani...@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 Evanseev...@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 eev...@rackspace.com -- Ian Holsman i...@holsman.net