Re: moving to framed transport (client breakage inevitable)

2009-06-24 Thread Jonathan Ellis
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)

2009-06-21 Thread Jeff Hodges
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)

2009-06-21 Thread Michael Greene
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)

2009-06-20 Thread Chris Goffinet

+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)

2009-06-20 Thread Evan Weaver
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)

2009-06-19 Thread Michael Greene
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)

2009-06-19 Thread Ian Holsman

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)

2009-06-19 Thread Jonathan Ellis
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