Problem med shutdown-hook
Jeg har lige i min server fået den til at registre følgende shutdown-hook:Runnable r = new Runnable() {
public void run() {
manager.stop();
}
};
Runtime.getRuntime().addShutdownHook(new Thread(r));
manager.stop() er præcis den samme metode som køres hvis serveren lukkes (slutter med System.exit(0)) ned via konsollen efter princippet:
server.Main -stop
I sidstnævnte tilfælde går alt godt. Alle tråde lukkes ned og er ikke længere at finde som processer i OS (Linux).
Men hvis jeg sender et terminate-signal som så aktiverer shutdown-hooken, går det galt. manager.stop() bliver kørt og alle processer lukkes ned som normalt (kan jeg se i logfilen - alle tråde udskriver en sidste linie inden de dør), men de er stadig at finde i OS, som om de befinder sig i en zombie-tilstand - og der bliver de liggende.
Hvad går der lige galt !?
