Listen for SIGTERM as well and gracefully shutdown in that case.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4959 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -42,6 +42,15 @@ public abstract class AbstractSignalHandler
|
||||
*/
|
||||
protected abstract boolean registerHandlers ();
|
||||
|
||||
/**
|
||||
* Implementations should call this method when a SIGTERM is received.
|
||||
*/
|
||||
protected void termReceived ()
|
||||
{
|
||||
log.info("Shutdown initiated by TERM signal.");
|
||||
_server.queueShutdown();
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementations should call this method when a SIGINT is received.
|
||||
*/
|
||||
|
||||
@@ -35,6 +35,9 @@ public class NativeSignalHandler extends AbstractSignalHandler
|
||||
public boolean signalReceived (int signo)
|
||||
{
|
||||
switch (signo) {
|
||||
case SignalManager.SIGTERM:
|
||||
termReceived();
|
||||
break;
|
||||
case SignalManager.SIGINT:
|
||||
intReceived();
|
||||
break;
|
||||
@@ -53,6 +56,7 @@ public class NativeSignalHandler extends AbstractSignalHandler
|
||||
if (!SignalManager.servicesAvailable()) {
|
||||
return false;
|
||||
}
|
||||
SignalManager.registerSignalHandler(SignalManager.SIGTERM, this);
|
||||
SignalManager.registerSignalHandler(SignalManager.SIGINT, this);
|
||||
SignalManager.registerSignalHandler(SignalManager.SIGHUP, this);
|
||||
return true;
|
||||
|
||||
@@ -148,7 +148,7 @@ public class PresentsServer
|
||||
log.info("Starting up server [os=" + si.osToString() + ", jvm=" + si.jvmToString() +
|
||||
", mem=" + si.memoryToString() + "].");
|
||||
|
||||
// register SIGINT (ctrl-c) and a SIGHUP handlers
|
||||
// register SIGTERM, SIGINT (ctrl-c) and a SIGHUP handlers
|
||||
boolean registered = false;
|
||||
try {
|
||||
registered = new SunSignalHandler().init(this);
|
||||
|
||||
@@ -33,6 +33,11 @@ public class SunSignalHandler extends AbstractSignalHandler
|
||||
{
|
||||
protected boolean registerHandlers ()
|
||||
{
|
||||
SignalUtil.register(SignalUtil.Number.TERM, new SignalUtil.Handler() {
|
||||
public void signalReceived (SignalUtil.Number sig) {
|
||||
termReceived();
|
||||
}
|
||||
});
|
||||
SignalUtil.register(SignalUtil.Number.INT, new SignalUtil.Handler() {
|
||||
public void signalReceived (SignalUtil.Number sig) {
|
||||
intReceived();
|
||||
|
||||
Reference in New Issue
Block a user