Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 814e55af4 -> b701dd52f


Make native server start block until properly bound

patch by slebresne; reviewed by xedin for CASSANDRA-7885


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b701dd52
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b701dd52
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b701dd52

Branch: refs/heads/cassandra-2.1
Commit: b701dd52fd3b2a53edc995308260d56641cce3d3
Parents: 814e55a
Author: Sylvain Lebresne <[email protected]>
Authored: Thu Oct 2 10:20:56 2014 +0200
Committer: Sylvain Lebresne <[email protected]>
Committed: Thu Oct 2 10:20:56 2014 +0200

----------------------------------------------------------------------
 CHANGES.txt                                         | 1 +
 src/java/org/apache/cassandra/transport/Server.java | 8 ++++++--
 test/unit/org/apache/cassandra/cql3/DeleteTest.java | 5 -----
 3 files changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/b701dd52/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9fb1274..d83b86f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.1
+ * Make native server start block until properly bound (CASSANDRA-7885)
  * (cqlsh) Fix IPv6 support (CASSANDRA-7988)
  * Ignore fat clients when checking for endpoint collision (CASSANDRA-7939)
  * Make sstablerepairedset take a list of files (CASSANDRA-7995)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/b701dd52/src/java/org/apache/cassandra/transport/Server.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/transport/Server.java 
b/src/java/org/apache/cassandra/transport/Server.java
index d10b934..d6f01c2 100644
--- a/src/java/org/apache/cassandra/transport/Server.java
+++ b/src/java/org/apache/cassandra/transport/Server.java
@@ -163,8 +163,12 @@ public class Server implements CassandraDaemon.Server
         // Bind and start to accept incoming connections.
         logger.info("Using Netty Version: {}", Version.identify().entrySet());
         logger.info("Starting listening for CQL clients on {}...", socket);
-        Channel channel = bootstrap.bind(socket).channel();
-        connectionTracker.allChannels.add(channel);
+
+        ChannelFuture bindFuture = bootstrap.bind(socket);
+        if (!bindFuture.awaitUninterruptibly().isSuccess())
+            throw new IllegalStateException(String.format("Failed to bind port 
%d on %s.", socket.getPort(), socket.getAddress().getHostAddress()));
+
+        connectionTracker.allChannels.add(bindFuture.channel());
         isRunning.set(true);
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/b701dd52/test/unit/org/apache/cassandra/cql3/DeleteTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/DeleteTest.java 
b/test/unit/org/apache/cassandra/cql3/DeleteTest.java
index 6ca6b41..c8aa660 100644
--- a/test/unit/org/apache/cassandra/cql3/DeleteTest.java
+++ b/test/unit/org/apache/cassandra/cql3/DeleteTest.java
@@ -57,11 +57,6 @@ public class DeleteTest extends SchemaLoader
         cassandra = new EmbeddedCassandraService();
         cassandra.start();
 
-        // Currently the native server start method return before the server 
is fully binded to the socket,
-        // so we need to wait slightly before trying to connect to it. We 
should fix this but in the meantime
-        // using a sleep.
-        Thread.sleep(500);
-
         cluster = 
Cluster.builder().addContactPoint("127.0.0.1").withPort(DatabaseDescriptor.getNativeTransportPort()).build();
         session = cluster.connect();
 

Reply via email to