You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cm...@apache.org on 2014/02/13 04:10:49 UTC
svn commit: r1567835 - in
/hadoop/common/trunk/hadoop-common-project/hadoop-common/src:
main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java
test/java/org/apache/hadoop/net/unix/TestDomainSocketWatcher.java
Author: cmccabe
Date: Thu Feb 13 03:10:48 2014
New Revision: 1567835
URL: http://svn.apache.org/r1567835
Log:
HDFS-5940. Minor cleanups to ShortCircuitReplica, FsDatasetCache, and DomainSocketWatcher (cmccabe)
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/unix/TestDomainSocketWatcher.java
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java?rev=1567835&r1=1567834&r2=1567835&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/net/unix/DomainSocketWatcher.java Thu Feb 13 03:10:48 2014
@@ -37,6 +37,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.util.NativeCodeLoader;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.Uninterruptibles;
@@ -48,7 +49,7 @@ import com.google.common.util.concurrent
* See {@link DomainSocket} for more information about UNIX domain sockets.
*/
@InterfaceAudience.LimitedPrivate("HDFS")
-public final class DomainSocketWatcher extends Thread implements Closeable {
+public final class DomainSocketWatcher implements Closeable {
static {
if (SystemUtils.IS_OS_WINDOWS) {
loadingFailureReason = "UNIX Domain sockets are not available on Windows.";
@@ -281,7 +282,7 @@ public final class DomainSocketWatcher e
try {
processedCond.await();
} catch (InterruptedException e) {
- this.interrupt();
+ Thread.currentThread().interrupt();
}
if (!toAdd.contains(entry)) {
break;
@@ -308,7 +309,7 @@ public final class DomainSocketWatcher e
try {
processedCond.await();
} catch (InterruptedException e) {
- this.interrupt();
+ Thread.currentThread().interrupt();
}
if (!toRemove.containsKey(sock.fd)) {
break;
@@ -381,7 +382,8 @@ public final class DomainSocketWatcher e
}
}
- private final Thread watcherThread = new Thread(new Runnable() {
+ @VisibleForTesting
+ final Thread watcherThread = new Thread(new Runnable() {
@Override
public void run() {
LOG.info(this + ": starting with interruptCheckPeriodMs = " +
@@ -443,6 +445,7 @@ public final class DomainSocketWatcher e
} catch (IOException e) {
LOG.error(toString() + " terminating on IOException", e);
} finally {
+ kick(); // allow the handler for notificationSockets[0] to read a byte
for (Entry entry : entries.values()) {
sendCallback("close", entries, fdSet, entry.getDomainSocket().fd);
}
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/unix/TestDomainSocketWatcher.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/unix/TestDomainSocketWatcher.java?rev=1567835&r1=1567834&r2=1567835&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/unix/TestDomainSocketWatcher.java (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/net/unix/TestDomainSocketWatcher.java Thu Feb 13 03:10:48 2014
@@ -73,9 +73,10 @@ public class TestDomainSocketWatcher {
*/
@Test(timeout=60000)
public void testInterruption() throws Exception {
- DomainSocketWatcher watcher = new DomainSocketWatcher(10);
- watcher.interrupt();
- Uninterruptibles.joinUninterruptibly(watcher);
+ final DomainSocketWatcher watcher = new DomainSocketWatcher(10);
+ watcher.watcherThread.interrupt();
+ Uninterruptibles.joinUninterruptibly(watcher.watcherThread);
+ watcher.close();
}
@Test(timeout=300000)