You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ju...@apache.org on 2009/08/31 17:44:42 UTC

svn commit: r809629 - /incubator/cassandra/trunk/src/java/org/apache/cassandra/net/SelectorManager.java

Author: junrao
Date: Mon Aug 31 15:44:42 2009
New Revision: 809629

URL: http://svn.apache.org/viewvc?rev=809629&view=rev
Log:
Deadlock with SelectorManager.doProcess and TcpConnection.write; patch by Sammy Yu and junrao; reviewed by Chris Goffinet for CASSANDRA-392

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/net/SelectorManager.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/net/SelectorManager.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/net/SelectorManager.java?rev=809629&r1=809628&r2=809629&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/net/SelectorManager.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/net/SelectorManager.java Mon Aug 31 15:44:42 2009
@@ -113,35 +113,32 @@
         {
             selector.selectedKeys().remove(key);
 
-            synchronized (key)
+            SelectionKeyHandler skh = (SelectionKeyHandler) key.attachment();
+
+            if (skh != null)
             {
-                SelectionKeyHandler skh = (SelectionKeyHandler) key.attachment();
+                // accept
+                if (key.isValid() && key.isAcceptable())
+                {
+                    skh.accept(key);
+                }
+
+                // connect
+                if (key.isValid() && key.isConnectable())
+                {
+                    skh.connect(key);
+                }
+
+                // read
+                if (key.isValid() && key.isReadable())
+                {
+                    skh.read(key);
+                }
 
-                if (skh != null)
+                // write
+                if (key.isValid() && key.isWritable())
                 {
-                    // accept
-                    if (key.isValid() && key.isAcceptable())
-                    {
-                        skh.accept(key);
-                    }
-
-                    // connect
-                    if (key.isValid() && key.isConnectable())
-                    {
-                        skh.connect(key);
-                    }
-
-                    // read
-                    if (key.isValid() && key.isReadable())
-                    {
-                        skh.read(key);
-                    }
-
-                    // write
-                    if (key.isValid() && key.isWritable())
-                    {
-                        skh.write(key);
-                    }
+                    skh.write(key);
                 }
             }
         }