Author: jbellis
Date: Wed Apr 29 02:04:18 2009
New Revision: 769631

URL: http://svn.apache.org/viewvc?rev=769631&view=rev
Log:
start SelectorManager after all the selector registration is done, to 
workaround a bug in some linux environments.  (Debian etch under vmware player 
or under EC2 seem to exhibit this problem consistently.)  the bug symptom is, 
the selector register hangs indefinitely even though the select() call is only 
for 100ms (after which it should stop blocking and let the register through).
patch by jbellis; reviewed by Eric Evans for #97

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

Modified: 
incubator/cassandra/trunk/src/org/apache/cassandra/net/SelectorManager.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/net/SelectorManager.java?rev=769631&r1=769630&r2=769631&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/net/SelectorManager.java 
(original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/net/SelectorManager.java 
Wed Apr 29 02:04:18 2009
@@ -52,7 +52,6 @@
         }
 
         setDaemon(false);
-        start();
     }
 
     /**

Modified: 
incubator/cassandra/trunk/src/org/apache/cassandra/service/StorageService.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/service/StorageService.java?rev=769631&r1=769630&r2=769631&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/org/apache/cassandra/service/StorageService.java 
(original)
+++ 
incubator/cassandra/trunk/src/org/apache/cassandra/service/StorageService.java 
Wed Apr 29 02:04:18 2009
@@ -82,8 +82,9 @@
 import org.apache.cassandra.net.IVerbHandler;
 import org.apache.cassandra.net.Message;
 import org.apache.cassandra.net.MessagingService;
-import org.apache.cassandra.net.io.StreamContextManager;
+import org.apache.cassandra.net.SelectorManager;
 import org.apache.cassandra.net.http.HttpConnection;
+import org.apache.cassandra.net.io.StreamContextManager;
 import org.apache.cassandra.locator.IEndPointSnitch;
 import org.apache.cassandra.locator.TokenMetadata;
 import org.apache.cassandra.locator.IReplicaPlacementStrategy;
@@ -427,11 +428,8 @@
     
     public void start() throws IOException
     {
-        /* Start the DB */
-        storageMetadata_ = DBManager.instance().start();  
-        /* Set up TCP endpoint */
+        storageMetadata_ = DBManager.instance().start();
         tcpAddr_ = new EndPoint(DatabaseDescriptor.getStoragePort());
-        /* Set up UDP endpoint */
         udpAddr_ = new EndPoint(DatabaseDescriptor.getControlPort());
         /* Listen for application messages */
         MessagingService.getMessagingInstance().listen(tcpAddr_, false);
@@ -439,6 +437,10 @@
         MessagingService.getMessagingInstance().listenUDP(udpAddr_);
         /* Listen for HTTP messages */
         MessagingService.getMessagingInstance().listen( new 
EndPoint(DatabaseDescriptor.getHttpPort() ), true );
+
+        SelectorManager.getSelectorManager().start();
+        SelectorManager.getUdpSelectorManager().start();
+
         /* start the analytics context package */
         AnalyticsContext.instance().start();
         /* starts a load timer thread */


Reply via email to