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 ();
|
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.
|
* Implementations should call this method when a SIGINT is received.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ public class NativeSignalHandler extends AbstractSignalHandler
|
|||||||
public boolean signalReceived (int signo)
|
public boolean signalReceived (int signo)
|
||||||
{
|
{
|
||||||
switch (signo) {
|
switch (signo) {
|
||||||
|
case SignalManager.SIGTERM:
|
||||||
|
termReceived();
|
||||||
|
break;
|
||||||
case SignalManager.SIGINT:
|
case SignalManager.SIGINT:
|
||||||
intReceived();
|
intReceived();
|
||||||
break;
|
break;
|
||||||
@@ -53,6 +56,7 @@ public class NativeSignalHandler extends AbstractSignalHandler
|
|||||||
if (!SignalManager.servicesAvailable()) {
|
if (!SignalManager.servicesAvailable()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
SignalManager.registerSignalHandler(SignalManager.SIGTERM, this);
|
||||||
SignalManager.registerSignalHandler(SignalManager.SIGINT, this);
|
SignalManager.registerSignalHandler(SignalManager.SIGINT, this);
|
||||||
SignalManager.registerSignalHandler(SignalManager.SIGHUP, this);
|
SignalManager.registerSignalHandler(SignalManager.SIGHUP, this);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ public class PresentsServer
|
|||||||
log.info("Starting up server [os=" + si.osToString() + ", jvm=" + si.jvmToString() +
|
log.info("Starting up server [os=" + si.osToString() + ", jvm=" + si.jvmToString() +
|
||||||
", mem=" + si.memoryToString() + "].");
|
", mem=" + si.memoryToString() + "].");
|
||||||
|
|
||||||
// register SIGINT (ctrl-c) and a SIGHUP handlers
|
// register SIGTERM, SIGINT (ctrl-c) and a SIGHUP handlers
|
||||||
boolean registered = false;
|
boolean registered = false;
|
||||||
try {
|
try {
|
||||||
registered = new SunSignalHandler().init(this);
|
registered = new SunSignalHandler().init(this);
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ public class SunSignalHandler extends AbstractSignalHandler
|
|||||||
{
|
{
|
||||||
protected boolean registerHandlers ()
|
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() {
|
SignalUtil.register(SignalUtil.Number.INT, new SignalUtil.Handler() {
|
||||||
public void signalReceived (SignalUtil.Number sig) {
|
public void signalReceived (SignalUtil.Number sig) {
|
||||||
intReceived();
|
intReceived();
|
||||||
|
|||||||
Reference in New Issue
Block a user