You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/11/16 17:26:30 UTC

[2/3] git commit: Recover from IOException in accept() thread patch by Mihial Stepura; reviewed by jbellis for CASSANDRA-6349

Recover from IOException in accept() thread
patch by Mihial Stepura; reviewed by jbellis for CASSANDRA-6349


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

Branch: refs/heads/trunk
Commit: 917bc05c9fe5397714025678e990160722807aa4
Parents: 09b2470
Author: Jonathan Ellis <jb...@apache.org>
Authored: Sat Nov 16 10:26:15 2013 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sat Nov 16 10:26:15 2013 -0600

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../org/apache/cassandra/net/MessagingService.java    | 14 +++++++++-----
 2 files changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/917bc05c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index b6d2e73..b21e7a7 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.3
+ * Recover from IOException in accept() thread (CASSANDRA-6349)
  * Improve Gossip tolerance of abnormally slow tasks (CASSANDRA-6338)
  * Fix trying to hint timed out counter writes (CASSANDRA-6322)
  * Allow restoring specific columnfamilies from archived CL (CASSANDRA-4809)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/917bc05c/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java
index 9a9b997..36d5382 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -27,15 +27,16 @@ import java.util.*;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
+
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
 import com.google.common.base.Function;
 import com.google.common.collect.Lists;
+
 import org.cliffc.high_scale_lib.NonBlockingHashMap;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
 import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
 import org.apache.cassandra.concurrent.Stage;
 import org.apache.cassandra.concurrent.StageManager;
@@ -50,6 +51,7 @@ import org.apache.cassandra.gms.GossipDigestAck;
 import org.apache.cassandra.gms.GossipDigestAck2;
 import org.apache.cassandra.gms.GossipDigestSyn;
 import org.apache.cassandra.io.IVersionedSerializer;
+import org.apache.cassandra.io.util.FileUtils;
 import org.apache.cassandra.locator.ILatencySubscriber;
 import org.apache.cassandra.metrics.ConnectionMetrics;
 import org.apache.cassandra.metrics.DroppedMessageMetrics;
@@ -857,9 +859,10 @@ public final class MessagingService implements MessagingServiceMBean
         {
             while (true)
             {
+                Socket socket = null;
                 try
                 {
-                    Socket socket = server.accept();
+                    socket = server.accept();
                     if (authenticate(socket))
                     {
                         socket.setKeepAlive(true);
@@ -889,17 +892,18 @@ public final class MessagingService implements MessagingServiceMBean
                 catch (AsynchronousCloseException e)
                 {
                     // this happens when another thread calls close().
-                    logger.info("MessagingService shutting down server thread.");
+                    logger.info("MessagingService shutting down server thread");
                     break;
                 }
                 catch (ClosedChannelException e)
                 {
-                    logger.debug("MessagingService server thread already closed.");
+                    logger.debug("MessagingService server thread already closed");
                     break;
                 }
                 catch (IOException e)
                 {
-                    throw new RuntimeException(e);
+                    logger.debug("Error reading the socket " + socket, e);
+                    FileUtils.closeQuietly(socket);
                 }
             }
         }