You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (JIRA)" <ji...@apache.org> on 2010/01/15 20:20:54 UTC

[jira] Created: (CASSANDRA-705) explore replacing socket nio with blocking io

explore replacing socket nio with blocking io
---------------------------------------------

                 Key: CASSANDRA-705
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
             Project: Cassandra
          Issue Type: Task
            Reporter: Jonathan Ellis
            Assignee: Jonathan Ellis
            Priority: Minor


MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment: 0009-debug-logging.patch

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-avoid-killing-ourselves-w-connection-retries-when-a-.patch, 0008-cleanup-conn-pooling-add-debug-logging.patch, 0009-debug-logging.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment: 0008-cleanup-conn-pooling-add-debug-logging.patch

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-avoid-killing-ourselves-w-connection-retries-when-a-.patch, 0008-cleanup-conn-pooling-add-debug-logging.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

-- 
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-705) explore replacing socket nio with blocking io

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

Jaakko Laine edited comment on CASSANDRA-705 at 1/21/10 12:41 AM:
------------------------------------------------------------------

Sorry for chiming in so late. Did not notice this involved the Gossiper too.

There are some problems currently:

(1) Gossiper routinely tries to contact dead nodes, which causes connection refused exceptions a lot
(2) Using tcp will always re-create connection pool to the dead node
(3) If there are network partitions (or anything that causes connection attempt not to return immediately), connection.write will block. This may cause Gossiper to block in sendGossip for minutes.
(4) If a node is stuck for some reason and is not reading from its sockets, other Gossipers writing to it will block as soon as their socket send buffer is full. Once this happens, also their incoming sockets will not be read from. Unless the stuck node either manages to continue or closes its connections (or crashes), this will eventually cause all Gossipers in the whole cluster to block.

Edit: on a second thought, don't know if messagingservice is reading from the sockets, so they might not block. Connection timeout problem is real, though.

      was (Author: jaakko):
    Sorry for chiming in so late. Did not notice this involved the Gossiper too.

There are some problems currently:

(1) Gossiper routinely tries to contact dead nodes, which causes connection refused exceptions a lot
(2) Using tcp will always re-create connection pool to the dead node
(3) If there are network partitions (or anything that causes connection attempt not to return immediately), connection.write will block. This may cause Gossiper to block in sendGossip for minutes.
(4) If a node is stuck for some reason and is not reading from its sockets, other Gossipers writing to it will block as soon as their socket send buffer is full. Once this happens, also their incoming sockets will not be read from. Unless the stuck node either manages to continue or closes its connections (or crashes), this will eventually cause all Gossipers in the whole cluster to block.

  
> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment:     (was: 0002-replace-tcp-socket-reads-w-blocking-i-o.txt)

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment:     (was: 0008-cleanup-conn-pooling-add-debug-logging.patch)

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment: 0007-avoid-killing-ourselves-w-connection-retries-when-a-.patch

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-avoid-killing-ourselves-w-connection-retries-when-a-.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment:     (was: 0006-handle-node-failure.patch)

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment: 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt
                0004-implement-streaming-w-blocking-io.txt
                0003-replace-tcp-writes-w-blocking-i-o.txt
                0002-replace-tcp-socket-reads-w-blocking-i-o.txt
                0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Resolved: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis resolved CASSANDRA-705.
--------------------------------------

    Resolution: Fixed

rebased & committed

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Commented: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jaakko Laine commented on CASSANDRA-705:
----------------------------------------

Sorry for chiming in so late. Did not notice this involved the Gossiper too.

There are some problems currently:

(1) Gossiper routinely tries to contact dead nodes, which causes connection refused exceptions a lot
(2) Using tcp will always re-create connection pool to the dead node
(3) If there are network partitions (or anything that causes connection attempt not to return immediately), connection.write will block. This may cause Gossiper to block in sendGossip for minutes.
(4) If a node is stuck for some reason and is not reading from its sockets, other Gossipers writing to it will block as soon as their socket send buffer is full. Once this happens, also their incoming sockets will not be read from. Unless the stuck node either manages to continue or closes its connections (or crashes), this will eventually cause all Gossipers in the whole cluster to block.


> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Commented: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Hudson commented on CASSANDRA-705:
----------------------------------

Integrated in Cassandra #331 (See [http://hudson.zones.apache.org/hudson/job/Cassandra/331/])
    

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment: 0003-replace-tcp-writes-w-blocking-i-o.txt
                0002-replace-tcp-socket-reads-w-blocking-i-o.txt
                0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment:     (was: 0003-replace-tcp-writes-w-blocking-i-o.txt)

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment:     (was: 0007-avoid-killing-ourselves-w-connection-retries-when-a-.patch)

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment: 0006-handle-node-failure.patch

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Commented: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis commented on CASSANDRA-705:
------------------------------------------

(3) I will code up the thread refactor then, I think that will deal with this problem.  Not having to worry about packet size limitations is a pretty good reason to use TCP.  (Although I haven't changed that yet, now that you mention it. :)

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

      Component/s: Core
    Fix Version/s: 0.6

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-avoid-killing-ourselves-w-connection-retries-when-a-.patch, 0008-cleanup-conn-pooling-add-debug-logging.patch, 0009-debug-logging.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment:     (was: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt)

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Commented: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jun Rao commented on CASSANDRA-705:
-----------------------------------

How does the blocking socket performance compare with the non-blocking one?

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Commented: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jaakko Laine commented on CASSANDRA-705:
----------------------------------------

(1) No objection, just an observation on the longish stacktraces I got :)
(2) What I was referring to is the recent addition of cancelling connection pool when Gossiper finds out a node is dead. Now Gossiper will cause this connection pool to be immediately created again.
(3) IMHO Gossiper should never block for any reason. If it blocks, it will not send gossip at proper time, which may cause other nodes to think it is dead. Also, if it is not handling gossip from other nodes, it might think all other nodes in the cluster are dead. Is there a reason for not using UDP with gossiper?
(4) Did not check the code, just a thought (just recently in another project had the whole system stop because of similar issue :)


> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Commented: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Brandon Williams commented on CASSANDRA-705:
--------------------------------------------

+1, tested performance and boostrap/decommission (for streaming.)

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment: 0006-handle-node-failure.patch

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment: 0007-simplify-header-code.patch

last? patch: simplify the header code by using ints directly instead of byte[], and use a 4-byte "magic number" as a sanity check instead of 16

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Commented: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis commented on CASSANDRA-705:
------------------------------------------

finished streaming & gossip support

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Commented: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis commented on CASSANDRA-705:
------------------------------------------

Jun:
Brandon's tests showed throughput about the same, and latency somewhat better with this patchset.  The code is, as predicted, significantly simpler and more concise.

Jaakko:
(1) sure, but we know the exception is possible and can deal with it cleanly.  Are you objecting on the grounds of aesthetics?
(2) ditto -- note that throttling reconnect attempts to once per 100ms deals with performance issues fine, in practice
(3) yes, it is probably better to make the thread-per-connection persistent in the pool class and handle the connect retry.  but at some point blocking is necessary (if FD hasn't kicked in) because OOMing from queuing up messages w/ no bound is Bad with either nio or blocking (CASSANDRA-685)
(4) at some level this is a possibility w/ any code using TCP, but the queue/executor design (where a message that causes an exception merely causes the executor to continue to the next -- here, the IncomingTcpConnection thread reads and enqueues onto the MessageDeserialization executor, which in turn enqueues onto the correct message Stage) seems to deal with this fine in practice.  So don't write code that loops infinitely and you are ok...  extending that pattern to Gossip doesn't seem like a big deal to me.  Am I missing something?

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment: 0008-fix-streaming.patch

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch, 0007-simplify-header-code.patch, 0008-fix-streaming.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Commented: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis commented on CASSANDRA-705:
------------------------------------------

proof of concept: streaming is not supported, and udp has been left nio.

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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


[jira] Updated: (CASSANDRA-705) explore replacing socket nio with blocking io

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

Jonathan Ellis updated CASSANDRA-705:
-------------------------------------

    Attachment:     (was: 0009-debug-logging.patch)

> explore replacing socket nio with blocking io
> ---------------------------------------------
>
>                 Key: CASSANDRA-705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-705
>             Project: Cassandra
>          Issue Type: Task
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 0.6
>
>         Attachments: 0001-make-shutdown-non-reentrant-and-make-MS-a-true-singlet.txt, 0002-replace-tcp-socket-reads-w-blocking-i-o.txt, 0003-replace-tcp-writes-w-blocking-i-o.txt, 0004-implement-streaming-w-blocking-io.txt, 0005-convert-gossip-to-use-tcp.-this-finishes-the-removal-o.txt, 0006-handle-node-failure.patch
>
>
> MessagingService's nonblocking io has been a source of bugs both in our code and in the JVM in every release of Cassandra.  Time to explore moving to blocking i/o, which is simpler, more robust (in terms of the JVM implementation), and possibly more performant as well (http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html).

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