From 61d5ce633765321680e439398b74e775ca1f7ca9 Mon Sep 17 00:00:00 2001 From: furaul Date: Fri, 4 Jun 2021 14:54:53 +0800 Subject: [PATCH 1/2] fix typo (#1815) --- boot/src/main/java/com/taobao/arthas/boot/ProcessUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boot/src/main/java/com/taobao/arthas/boot/ProcessUtils.java b/boot/src/main/java/com/taobao/arthas/boot/ProcessUtils.java index fb8ea89cc..ce0b11afa 100644 --- a/boot/src/main/java/com/taobao/arthas/boot/ProcessUtils.java +++ b/boot/src/main/java/com/taobao/arthas/boot/ProcessUtils.java @@ -313,8 +313,8 @@ public class ProcessUtils { // find arthas-client.jar URLClassLoader classLoader = new URLClassLoader( new URL[]{new File(arthasHomeDir, "arthas-client.jar").toURI().toURL()}); - Class telnetConsoleClas = classLoader.loadClass("com.taobao.arthas.client.TelnetConsole"); - Method processMethod = telnetConsoleClas.getMethod("process", String[].class); + Class telnetConsoleClass = classLoader.loadClass("com.taobao.arthas.client.TelnetConsole"); + Method processMethod = telnetConsoleClass.getMethod("process", String[].class); //redirect System.out/System.err PrintStream originSysOut = System.out; From 00faa3c4c9e5033defc654b106bcd8f6ebdda4dc Mon Sep 17 00:00:00 2001 From: yangxb2010000 Date: Fri, 4 Jun 2021 14:59:53 +0800 Subject: [PATCH 2/2] Close ResultDistributor and foreground job when close session #1808 --- .../shell/session/impl/SessionManagerImpl.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/taobao/arthas/core/shell/session/impl/SessionManagerImpl.java b/core/src/main/java/com/taobao/arthas/core/shell/session/impl/SessionManagerImpl.java index 8c65b2bf8..e8e4d4cca 100644 --- a/core/src/main/java/com/taobao/arthas/core/shell/session/impl/SessionManagerImpl.java +++ b/core/src/main/java/com/taobao/arthas/core/shell/session/impl/SessionManagerImpl.java @@ -71,6 +71,22 @@ public class SessionManagerImpl implements SessionManager { @Override public Session removeSession(String sessionId) { + Session session = sessions.get(sessionId); + if (session == null) { + return null; + } + + //interrupt foreground job + Job job = session.getForegroundJob(); + if (job != null) { + job.interrupt(); + } + + SharingResultDistributor resultDistributor = session.getResultDistributor(); + if (resultDistributor != null) { + resultDistributor.close(); + } + return sessions.remove(sessionId); } @@ -92,7 +108,6 @@ public class SessionManagerImpl implements SessionManager { SharingResultDistributor resultDistributor = session.getResultDistributor(); if (resultDistributor != null) { resultDistributor.appendResult(new MessageModel("arthas server is going to shutdown.")); - resultDistributor.close(); } logger.info("Removing session before shutdown: {}, last access time: {}", session.getSessionId(), session.getLastAccessTime()); this.removeSession(session.getSessionId());