Skip to content

Commit

Permalink
Issue #8088 Add STOP.EXIT System property to configure ShutdownMonito…
Browse files Browse the repository at this point in the history
…r.exitVM
  • Loading branch information
janbartel committed Jun 1, 2022
1 parent 991ff94 commit 74c7985
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
Expand Up @@ -90,7 +90,7 @@ public static boolean isRegistered(LifeCycle lifeCycle)
private final String host;
private int port;
private String key;
private boolean exitVm;
private boolean exitVm = true;
private boolean alive;

/**
Expand All @@ -107,7 +107,7 @@ private ShutdownMonitor()
this.host = System.getProperty("STOP.HOST", "127.0.0.1");
this.port = Integer.getInteger("STOP.PORT", -1);
this.key = System.getProperty("STOP.KEY", null);
this.exitVm = true;
this.exitVm = Boolean.getBoolean("STOP.EXIT");
}

private void addLifeCycles(LifeCycle... lifeCycles)
Expand Down Expand Up @@ -308,6 +308,8 @@ private ServerSocket listen()
// establish the port and key that are in use
debug("STOP.PORT=%d", port);
debug("STOP.KEY=%s", key);
//also show if we're exiting the jvm or not
debug("STOP.EXIT=%b", exitVm);
}
}

Expand Down
Expand Up @@ -32,6 +32,7 @@
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

Expand Down Expand Up @@ -120,6 +121,38 @@ private void testStartStop(boolean reusePort) throws Exception
assertTrue(!monitor.isAlive());
}

@Test
public void testNoExitSystemProperty() throws Exception
{
System.setProperty("STOP.EXIT", "false");
ShutdownMonitor monitor = ShutdownMonitor.getInstance();
monitor.setPort(0);
assertFalse(monitor.isExitVm());
monitor.start();

try (CloseableServer server = new CloseableServer())
{
server.setStopAtShutdown(true);
server.start();

//shouldn't be registered for shutdown on jvm
assertTrue(ShutdownThread.isRegistered(server));
assertTrue(ShutdownMonitor.isRegistered(server));

String key = monitor.getKey();
int port = monitor.getPort();

stop("stop", port, key, true);
monitor.await();

assertTrue(!monitor.isAlive());
assertTrue(server.stopped);
assertTrue(!server.destroyed);
assertTrue(!ShutdownThread.isRegistered(server));
assertTrue(!ShutdownMonitor.isRegistered(server));
}
}

@Test
public void testForceStopCommand() throws Exception
{
Expand Down

0 comments on commit 74c7985

Please sign in to comment.