YARN-9072. Send exit command to terminate docker exec on connection close. 
Contributed by Eric Yang


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/c5c73182
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/c5c73182
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/c5c73182

Branch: refs/heads/HDFS-12943
Commit: c5c73182e5adab2299bfb27886bfd3ecc229009c
Parents: 99b5061
Author: Billie Rinaldi <[email protected]>
Authored: Tue Dec 18 08:43:09 2018 -0800
Committer: Billie Rinaldi <[email protected]>
Committed: Tue Dec 18 10:06:33 2018 -0800

----------------------------------------------------------------------
 .../yarn/server/nodemanager/webapp/ContainerShellWebSocket.java  | 4 ++++
 .../hadoop/yarn/server/nodemanager/webapp/TestNMWebTerminal.java | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/c5c73182/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerShellWebSocket.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerShellWebSocket.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerShellWebSocket.java
index 2fc1d16..ade1211 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerShellWebSocket.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerShellWebSocket.java
@@ -113,6 +113,7 @@ public class ContainerShellWebSocket {
           .fromString(cId));
       if (!checkAuthorization(session, container)) {
         session.close(1008, "Forbidden");
+        return;
       }
       LOG.info(session.getRemoteAddress().getHostString() + " connected!");
       LOG.info(
@@ -135,6 +136,9 @@ public class ContainerShellWebSocket {
   public void onClose(Session session, int status, String reason) {
     try {
       LOG.info(session.getRemoteAddress().getHostString() + " closed!");
+      String exit = "exit\r\n";
+      pair.out.write(exit.getBytes(Charset.forName("UTF-8")));
+      pair.out.flush();
       pair.in.close();
       pair.out.close();
     } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/hadoop/blob/c5c73182/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/TestNMWebTerminal.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/TestNMWebTerminal.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/TestNMWebTerminal.java
index 8589b94..ec7d62c 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/TestNMWebTerminal.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/TestNMWebTerminal.java
@@ -48,7 +48,7 @@ import com.sun.jersey.api.client.WebResource.Builder;
 public class TestNMWebTerminal {
   private static final File TESTROOTDIR = new File("target",
       TestNMWebServer.class.getSimpleName());
-  private static File TESTLOGDIR = new File("target",
+  private static final File TESTLOGDIR = new File("target",
       TestNMWebServer.class.getSimpleName() + "LogDir");
   private NodeHealthCheckerService healthChecker;
   private WebServer server;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to