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);
}
}
}