Re: moving to framed transport (client breakage inevitable)
If we were talking about any other project I would say great idea! But with Thrift, simple patches can take 6+ weeks to be committed. (I am not exaggerating.) So I would vote for making it configurable to avoid screwing over people on those platforms. -Jonathan On Sat, Jun 20, 2009 at 3:32 PM, Evan Weaverewea...@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 Goffinetc...@chrisgoffinet.com wrote: +1 for making it an option in runtime. List of langs without Framed transport: C# Cocoa Haskell Ocaml Smalltalk
Re: moving to framed transport (client breakage inevitable)
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 Weaverewea...@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 Goffinetc...@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 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 -- Evan Weaver
Re: moving to framed transport (client breakage inevitable)
Evan's input makes sense. I'll see if I can clean up that patch and test appropriately. I'd also worry about Cocoa support, but the Cocoa developers, though few, seem active and willing to review patches. I recant my previous objection, though it would be nice to see it as an option at runtime until all languages receive Framed support. Michael On Sun, Jun 21, 2009 at 1:05 PM, Jeff Hodgesj...@somethingsimilar.com wrote: 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 Weaverewea...@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 Goffinetc...@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 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 -- Evan Weaver
Re: moving to framed transport (client breakage inevitable)
+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 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
Re: moving to framed transport (client breakage inevitable)
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 Goffinetc...@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 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 -- Evan Weaver
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