You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Eric Evans (JIRA)" <ji...@apache.org> on 2009/06/19 21:44:07 UTC

[jira] Created: (CASSANDRA-241) move daemon to framed transport (thrift)

move daemon to framed transport (thrift)
----------------------------------------

                 Key: CASSANDRA-241
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
             Project: Cassandra
          Issue Type: Bug
    Affects Versions: 0.4
            Reporter: Eric Evans
            Assignee: Eric Evans
             Fix For: 0.4


The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 

CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).

This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741015#action_12741015 ] 

Jonathan Ellis commented on CASSANDRA-241:
------------------------------------------

I guess it's up to Eric or other people who need Framed.  I'm okay either way.

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Esteve Fernandez (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12777596#action_12777596 ] 

Esteve Fernandez commented on CASSANDRA-241:
--------------------------------------------

THRIFT-210 is fixed as of rev 835006. As for THRIFT-538, I think nobody is working on it, the Cocoa, Haskell, Ocaml and Smalltalk ports are not actively maintained, AFAIK.

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt, v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt, v2-0001-CASSANDRA-241-optional-support-for-framed-transport.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12740827#action_12740827 ] 

Jonathan Ellis commented on CASSANDRA-241:
------------------------------------------

Should we move this to 0.5?

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Evans updated CASSANDRA-241:
---------------------------------

    Attachment: 241.txt

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Michael Greene (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12740840#action_12740840 ] 

Michael Greene commented on CASSANDRA-241:
------------------------------------------

It shouldn't be too difficult to make framed an option.  I think we should add the option to 0.4 (keeping the existing non-framed as default) until further evaluation for 0.5.

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Michael Greene (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Greene updated CASSANDRA-241:
-------------------------------------

    Component/s: Core

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt, v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt, v2-0001-CASSANDRA-241-optional-support-for-framed-transport.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12721967#action_12721967 ] 

Jonathan Ellis commented on CASSANDRA-241:
------------------------------------------

Does Thrift give a meaningful error if you try connecting w/ non-framed client to framed Cassandra server or does it just silently do nonsense?

If the latter, please post to -dev and -users that this change is going to happen Monday in trunk and then I will commit it.


> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Evans updated CASSANDRA-241:
---------------------------------

    Attachment: v2-0001-CASSANDRA-241-optional-support-for-framed-transport.txt

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt, v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt, v2-0001-CASSANDRA-241-optional-support-for-framed-transport.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741385#action_12741385 ] 

Eric Evans commented on CASSANDRA-241:
--------------------------------------

I was trying to make this as optional as possible, and the pattern cited above doesn't support that.

For the vast majority of users this doesn't make any sense whatsoever; tweaking it is more likely to break, rather than enable. I really didn't even want to draw the sort of attention to it that an example entry in the sample config provides (and I'm still sort of wishing it was less "documented").

However, since I already feel "beaten" by this issue I'll update the patch if you feel it should be mandatory. :)

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt, v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741018#action_12741018 ] 

Eric Evans commented on CASSANDRA-241:
--------------------------------------

I'll follow up with a patch shortly.

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741361#action_12741361 ] 

Jonathan Ellis commented on CASSANDRA-241:
------------------------------------------

can you add boolean sanity checking like this?

            String syncRaw = xmlUtils.getNodeValue("/Storage/CommitLogSync");
            if (!"false".equals(syncRaw) && !"true".equals(syncRaw))
            {
                // Bool.valueOf will silently assume false for values it doesn't recognize
                throw new ConfigurationException("Unrecognized value for CommitLogSync.  Use 'true' or 'false'.");
            }
            commitLogSync_ = Boolean.valueOf(syncRaw);


> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt, v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12721969#action_12721969 ] 

Eric Evans commented on CASSANDRA-241:
--------------------------------------

It silently does nonsense. I will post to the lists.

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12721982#action_12721982 ] 

Eric Evans edited comment on CASSANDRA-241 at 6/19/09 1:36 PM:
---------------------------------------------------------------

Also, once this is committed, http://wiki.apache.org/cassandra/ClientExamples will need to be updated accordingly.

      was (Author: urandom):
    Also, once this is committed, http://wiki.apache.org/cassandra/ClientExamples will need to updated accordingly.
  
> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12722614#action_12722614 ] 

Eric Evans commented on CASSANDRA-241:
--------------------------------------

A non-blocking client is one that uses a non-blocking socket and select/poll to determine when it is ready to read/write from/to the server.

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Hudson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741841#action_12741841 ] 

Hudson commented on CASSANDRA-241:
----------------------------------

Integrated in Cassandra #164 (See [http://hudson.zones.apache.org/hudson/job/Cassandra/164/])
     optional support for framed transport


> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt, v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt, v2-0001-CASSANDRA-241-optional-support-for-framed-transport.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741488#action_12741488 ] 

Jonathan Ellis commented on CASSANDRA-241:
------------------------------------------

+1

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt, v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt, v2-0001-CASSANDRA-241-optional-support-for-framed-transport.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12724902#action_12724902 ] 

Jonathan Ellis commented on CASSANDRA-241:
------------------------------------------

I think the consensus on the list was that we should make the transport to use an option given that the following Thrift languages lack the Framed option.

C#
Cocoa
Haskell
Ocaml
Smalltalk

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Evans updated CASSANDRA-241:
---------------------------------

    Attachment: v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt, v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12721982#action_12721982 ] 

Eric Evans commented on CASSANDRA-241:
--------------------------------------

Also, once this is committed, http://wiki.apache.org/cassandra/ClientExamples will need to updated accordingly.

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Jun Rao (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12722042#action_12722042 ] 

Jun Rao commented on CASSANDRA-241:
-----------------------------------

could you explain a bit more what exactly are non-blocking clients?

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12733885#action_12733885 ] 

Eric Evans commented on CASSANDRA-241:
--------------------------------------

Just to provide some update:

There are a couple of reasons why I've been avoiding a configuration option to enable/disable framed transport.

1. Whether or not the transport is framed or not is an implementation detail of Thrift, it sucks that we would be forced to expose this to our users.

2. Until THRIFT-210 is complete (better yet, THRIFT-538), there won't be any one setting that will let you run a server compatible with all clients. For example, with a framed transport enabled C# clients currently aren't possible, conversely without a framed transport, Twisted clients are left out in the cold.
 
It has been my hope that the Thrift team would close at least THRIFT-210 (there is a patch attached), so that we could accommodate all of our users with a framed transport (and without requiring it to be configured).

However, considering how long THRIFT-210 has been open (and considering the complete lack of response to THRIFT-538), it may in fact be necessary to add an option so that our users can at least choose what (not  )to support.



> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-241) move daemon to framed transport (thrift)

Posted by "Michael Greene (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741491#action_12741491 ] 

Michael Greene commented on CASSANDRA-241:
------------------------------------------

+1, looks good.  Thanks for accommodating, Eric.

> move daemon to framed transport (thrift)
> ----------------------------------------
>
>                 Key: CASSANDRA-241
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-241
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.4
>            Reporter: Eric Evans
>            Assignee: Eric Evans
>             Fix For: 0.4
>
>         Attachments: 241.txt, v1-0001-CASSANDRA-241-optional-support-for-framed-transport.txt, v2-0001-CASSANDRA-241-optional-support-for-framed-transport.txt
>
>
> The framed transports in thrift wrap the underlying transport to prepend the message size as a 4 byte value.  There are purported benefits to buffering, but the main purpose of these wrappers is to allow non-blocking servers to perform reads without deserialization. Of course, if the server transport is framed, the client's must be as well, and vice versa, (framed and non-framed transports are incompatible). 
> CassandraDaemon is currently a threaded server with the default transport, I believe we should change it to being framed, for compatibility with non-blocking clients (this actually came up during an attempt to use a Twisted client).
> This will break all existing client apps, (even if fixing them is trivial).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.