From 28de1df47d341274f003c0e675b4fd9eea997458 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Fri, 12 Feb 2021 09:25:34 +0100 Subject: [PATCH] Avoid possible class loading deadlock --- .../src/main/java/org/mvndaemon/mvnd/common/Message.java | 8 ++++---- .../org/mvndaemon/mvnd/common/logging/TerminalOutput.java | 4 ++-- .../java/org/mvndaemon/mvnd/daemon/ClientDispatcher.java | 4 ++-- .../src/main/java/org/mvndaemon/mvnd/daemon/Server.java | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/Message.java b/common/src/main/java/org/mvndaemon/mvnd/common/Message.java index f9f865e1..a8a99bb8 100644 --- a/common/src/main/java/org/mvndaemon/mvnd/common/Message.java +++ b/common/src/main/java/org/mvndaemon/mvnd/common/Message.java @@ -55,10 +55,6 @@ public abstract class Message { public static final int TRANSFER_SUCCEEDED = 21; public static final int TRANSFER_FAILED = 22; - public static final BareMessage KEEP_ALIVE_SINGLETON = new BareMessage(KEEP_ALIVE); - public static final BareMessage STOP_SINGLETON = new BareMessage(STOP); - public static final BareMessage CANCEL_BUILD_SINGLETON = new BareMessage(CANCEL_BUILD); - final int type; Message(int type) { @@ -588,6 +584,10 @@ public abstract class Message { public static class BareMessage extends Message { + public static final BareMessage KEEP_ALIVE_SINGLETON = new BareMessage(KEEP_ALIVE); + public static final BareMessage STOP_SINGLETON = new BareMessage(STOP); + public static final BareMessage CANCEL_BUILD_SINGLETON = new BareMessage(CANCEL_BUILD); + private BareMessage(int type) { super(type); } diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/logging/TerminalOutput.java b/common/src/main/java/org/mvndaemon/mvnd/common/logging/TerminalOutput.java index e0af7a42..ca7028b9 100644 --- a/common/src/main/java/org/mvndaemon/mvnd/common/logging/TerminalOutput.java +++ b/common/src/main/java/org/mvndaemon/mvnd/common/logging/TerminalOutput.java @@ -152,12 +152,12 @@ public class TerminalOutput implements ClientOutput { terminal.enterRawMode(); Thread mainThread = Thread.currentThread(); daemonDispatch = m -> { - if (m == Message.CANCEL_BUILD_SINGLETON) { + if (m == Message.BareMessage.CANCEL_BUILD_SINGLETON) { mainThread.interrupt(); } }; this.previousIntHandler = terminal.handle(Terminal.Signal.INT, - sig -> daemonDispatch.accept(Message.CANCEL_BUILD_SINGLETON)); + sig -> daemonDispatch.accept(Message.BareMessage.CANCEL_BUILD_SINGLETON)); this.display = new Display(terminal, false); this.log = logFile == null ? new MessageCollector() : new FileLog(logFile); if (!dumb) { diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/ClientDispatcher.java b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/ClientDispatcher.java index ecdc10e5..eec22859 100644 --- a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/ClientDispatcher.java +++ b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/ClientDispatcher.java @@ -103,12 +103,12 @@ public class ClientDispatcher extends BuildEventListener { public void finish(int exitCode) throws Exception { queue.add(new Message.BuildFinished(exitCode)); - queue.add(Message.STOP_SINGLETON); + queue.add(Message.BareMessage.STOP_SINGLETON); } public void fail(Throwable t) throws Exception { queue.add(new BuildException(t)); - queue.add(Message.STOP_SINGLETON); + queue.add(Message.BareMessage.STOP_SINGLETON); } public void log(String msg) { diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/Server.java b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/Server.java index 851d92f5..5df749dc 100644 --- a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/Server.java +++ b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/Server.java @@ -440,7 +440,7 @@ public class Server implements AutoCloseable, Runnable { if (flushed) { m = sendQueue.poll(keepAliveMs, TimeUnit.MILLISECONDS); if (m == null) { - m = Message.KEEP_ALIVE_SINGLETON; + m = Message.BareMessage.KEEP_ALIVE_SINGLETON; } flushed = false; } else { @@ -451,7 +451,7 @@ public class Server implements AutoCloseable, Runnable { continue; } } - if (m == Message.STOP_SINGLETON) { + if (m == Message.BareMessage.STOP_SINGLETON) { connection.flush(); LOGGER.info("No more message to dispatch"); return; @@ -472,7 +472,7 @@ public class Server implements AutoCloseable, Runnable { break; } LOGGER.info("Received message: {}", message); - if (message == Message.CANCEL_BUILD_SINGLETON) { + if (message == Message.BareMessage.CANCEL_BUILD_SINGLETON) { updateState(DaemonState.Canceled); return; } else {