Repository: cassandra Updated Branches: refs/heads/cassandra-2.2 437bb9de7 -> 506068b18 refs/heads/trunk fa7103ffd -> 2eda224d2
JDK bug prevents clean shutdown on OSX with Java 1.8.0_20 patch by Robert Stupp; reviewed by Aleksey Yeschenko for CASSANDRA-8220 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/506068b1 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/506068b1 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/506068b1 Branch: refs/heads/cassandra-2.2 Commit: 506068b181075281f160fde5fd7ffecf45177b2d Parents: 437bb9d Author: Robert Stupp <[email protected]> Authored: Sat Jul 18 14:01:39 2015 +0200 Committer: Robert Stupp <[email protected]> Committed: Sat Jul 18 14:07:28 2015 +0200 ---------------------------------------------------------------------- .../org/apache/cassandra/net/MessagingService.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/506068b1/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 83bc337..dec7550 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -934,8 +934,21 @@ public final class MessagingService implements MessagingServiceMBean void close() throws IOException { logger.debug("Closing accept() thread"); - server.close(); - for (Closeable connection : connections) + + try + { + server.close(); + } + catch (IOException e) + { + // dirty hack for clean shutdown on OSX w/ Java >= 1.8.0_20 + // see https://issues.apache.org/jira/browse/CASSANDRA-8220 + // see https://bugs.openjdk.java.net/browse/JDK-8050499 + if (!"Unknown error: 316".equals(e.getMessage()) || !"Mac OS X".equals(System.getProperty("os.name"))) + throw e; + } + + for (Closeable connection : connections) { connection.close(); }
