Return-Path: X-Original-To: apmail-hadoop-common-commits-archive@www.apache.org Delivered-To: apmail-hadoop-common-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 97B06106A9 for ; Thu, 6 Mar 2014 08:02:05 +0000 (UTC) Received: (qmail 8708 invoked by uid 500); 6 Mar 2014 08:02:04 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 8669 invoked by uid 500); 6 Mar 2014 08:02:03 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 8662 invoked by uid 99); 6 Mar 2014 08:02:03 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Mar 2014 08:02:03 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Mar 2014 08:02:01 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id E803223889E3; Thu, 6 Mar 2014 08:01:41 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1574789 - in /hadoop/common/branches/branch-2/hadoop-common-project: ./ hadoop-common/ hadoop-common/src/ hadoop-common/src/main/java/ hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java Date: Thu, 06 Mar 2014 08:01:41 -0000 To: common-commits@hadoop.apache.org From: cmccabe@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140306080141.E803223889E3@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cmccabe Date: Thu Mar 6 08:01:41 2014 New Revision: 1574789 URL: http://svn.apache.org/r1574789 Log: HDFS-6057. DomainSocketWatcher.watcherThread should be marked as a daemon thread (cmccabe) Modified: hadoop/common/branches/branch-2/hadoop-common-project/ (props changed) hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/ (props changed) hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/ (props changed) hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/ (props changed) hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java Propchange: hadoop/common/branches/branch-2/hadoop-common-project/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-common-project:r1574787 Propchange: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-common-project/hadoop-common:r1574787 Propchange: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/src:r1574787 Propchange: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/ ------------------------------------------------------------------------------ Merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java:r1574787 Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java?rev=1574789&r1=1574788&r2=1574789&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java (original) +++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java Thu Mar 6 08:01:41 2014 @@ -235,6 +235,7 @@ public final class DomainSocketWatcher i Preconditions.checkArgument(interruptCheckPeriodMs > 0); this.interruptCheckPeriodMs = interruptCheckPeriodMs; notificationSockets = DomainSocket.socketpair(); + watcherThread.setDaemon(true); watcherThread.start(); } @@ -263,6 +264,16 @@ public final class DomainSocketWatcher i Uninterruptibles.joinUninterruptibly(watcherThread); } + @VisibleForTesting + public boolean isClosed() { + lock.lock(); + try { + return closed; + } finally { + lock.unlock(); + } + } + /** * Add a socket. * @@ -274,7 +285,11 @@ public final class DomainSocketWatcher i public void add(DomainSocket sock, Handler handler) { lock.lock(); try { - checkNotClosed(); + if (closed) { + handler.handle(sock); + IOUtils.cleanup(LOG, sock); + return; + } Entry entry = new Entry(sock, handler); try { sock.refCount.reference(); @@ -295,7 +310,6 @@ public final class DomainSocketWatcher i if (!toAdd.contains(entry)) { break; } - checkNotClosed(); } } finally { lock.unlock(); @@ -310,7 +324,7 @@ public final class DomainSocketWatcher i public void remove(DomainSocket sock) { lock.lock(); try { - checkNotClosed(); + if (closed) return; toRemove.put(sock.fd, sock); kick(); while (true) { @@ -322,7 +336,6 @@ public final class DomainSocketWatcher i if (!toRemove.containsKey(sock.fd)) { break; } - checkNotClosed(); } } finally { lock.unlock(); @@ -342,17 +355,6 @@ public final class DomainSocketWatcher i } } - /** - * Check that the DomainSocketWatcher is not closed. - * Must be called while holding the lock. - */ - private void checkNotClosed() { - Preconditions.checkState(lock.isHeldByCurrentThread()); - if (closed) { - throw new RuntimeException("DomainSocketWatcher is closed."); - } - } - private void sendCallback(String caller, TreeMap entries, FdSet fdSet, int fd) { if (LOG.isTraceEnabled()) {