Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 394D9183AD for ; Mon, 19 Oct 2015 12:59:21 +0000 (UTC) Received: (qmail 13911 invoked by uid 500); 19 Oct 2015 12:59:16 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 13877 invoked by uid 500); 19 Oct 2015 12:59:16 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 13866 invoked by uid 99); 19 Oct 2015 12:59:15 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 19 Oct 2015 12:59:15 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 9EA09E00CC; Mon, 19 Oct 2015 12:59:15 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: snazy@apache.org To: commits@cassandra.apache.org Message-Id: <6ef9e4512aee487c92a68ab6458cd7e3@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: cassandra git commit: JDK bug from CASSANDRA-8220 makes drain die early also Date: Mon, 19 Oct 2015 12:59:15 +0000 (UTC) Repository: cassandra Updated Branches: refs/heads/cassandra-2.1 27c80117d -> b84ed1176 JDK bug from CASSANDRA-8220 makes drain die early also patch by Jeremiah Jordan; reviewed by Robert Stupp for CASSANDRA-10545 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b84ed117 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b84ed117 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b84ed117 Branch: refs/heads/cassandra-2.1 Commit: b84ed1176c015552550f30629e240c320a00001b Parents: 27c8011 Author: Jeremiah Jordan Authored: Mon Oct 19 14:56:02 2015 +0200 Committer: Robert Stupp Committed: Mon Oct 19 14:56:02 2015 +0200 ---------------------------------------------------------------------- .../apache/cassandra/net/MessagingService.java | 30 ++++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/b84ed117/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 d7825d4..724518c 100644 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@ -743,7 +743,15 @@ public final class MessagingService implements MessagingServiceMBean try { for (SocketThread th : socketThreads) - th.close(); + try + { + th.close(); + } + catch (IOException e) + { + // see https://issues.apache.org/jira/browse/CASSANDRA-10545 + handleIOException(e); + } } catch (IOException e) { @@ -1013,8 +1021,16 @@ public final class MessagingService implements MessagingServiceMBean void close() throws IOException { - logger.debug("Closing accept() thread"); - server.close(); + logger.trace("Closing accept() thread"); + try + { + server.close(); + } + catch (IOException e) + { + // see https://issues.apache.org/jira/browse/CASSANDRA-8220 + handleIOException(e); + } for (Closeable connection : connections) { connection.close(); @@ -1027,6 +1043,14 @@ public final class MessagingService implements MessagingServiceMBean } } + private static void handleIOException(IOException e) throws IOException + { + // dirty hack for clean shutdown on OSX w/ Java >= 1.8.0_20 + // 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; + } + public Map getCommandPendingTasks() { Map pendingTasks = new HashMap();