commit 98f1fda14029de8dbc7b8f87ba6efbd7c93aeb42 Author: Eric Yang Date: Thu Jul 12 17:05:45 2018 -0400 YARN-8525. Improve interrupt handling for YARN RegistryDNS. Contributed by Eric Yang diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java index 0022843..54f66f5 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java @@ -81,6 +81,7 @@ import java.nio.channels.DatagramChannel; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; +import java.nio.channels.ClosedByInterruptException; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; @@ -838,9 +839,8 @@ private int getMessgeLength(ByteBuffer buf) throws EOFException { */ public void serveNIOTCP(ServerSocketChannel serverSocketChannel, InetAddress addr, int port) throws Exception { - try { - - while (true) { + while (true) { + try { final SocketChannel socketChannel = serverSocketChannel.accept(); if (socketChannel != null) { executor.submit(new Callable() { @@ -852,12 +852,17 @@ public Boolean call() throws Exception { }); } else { - Thread.sleep(500); + Thread.sleep(50); + } + } catch (InterruptedException i) { + Thread.currentThread().interrupt(); + } catch (IOException e) { + if (e instanceof ClosedByInterruptException) { + } else { + throw NetUtils.wrapException(addr.getHostName(), port, + addr.getHostName(), port, e); } } - } catch (IOException e) { - throw NetUtils.wrapException(addr.getHostName(), port, - addr.getHostName(), port, e); } }