wrapper.jvm_cleanup.timeout

Compatibilité :3.4.0
Éditions :Édition ProfessionnelleÉdition Standard (non prise en charge)Édition Community (non prise en charge)
Plateformes :WindowsMac OSXLinuxAlpine LinuxFreeBSDSolarisIBM z/Linux

AVERTISSEMENT

NE MODIFIEZ AUCUN de ces paramètres à moins d'avoir lu la description de cette propriété. Des paramètres incorrects peuvent empêcher le Wrapper de fonctionner comme prévu.

Nombre maximum de secondes accordé au Wrapper pour effectuer le nettoyage après l'arrêt complet de la JVM et avant de commencer le processus visant soit à démarrer une nouvelle JVM, soit à arrêter le Wrapper. Définir la valeur de cette propriété à « 0 » (zéro) signifie qu'il n'y a jamais de délai d'attente.

La valeur par défaut est « 10 secondes ».

Exemple :
wrapper.jvm_cleanup.timeout=10

Le processus de nettoyage consiste à arrêter tous les processus enfants gérés qui ont été lancés à l'aide des méthodes WrapperManager.exec() sans définir le flag detached.

Le Wrapper tentera d'arrêter tous les processus enfants encore en cours d'exécution après que la JVM s'est arrêtée proprement. Sur les plateformes UNIX, cela se fait en envoyant un SIGTERM à chaque processus, puis en attendant qu'ils se terminent. Sur les plateformes Windows, un message WM_CLOSE sera envoyé à chaque fenêtre appartenant au processus enfant. De nombreuses applications Windows peuvent afficher des boîtes de dialogue d'enregistrement lorsqu'elles sont invitées à s'arrêter et peuvent donc ne pas se terminer complètement d'elles-mêmes. Il n'est actuellement pas possible d'envoyer un CTRL-C aux processus console Windows pour leur demander de s'arrêter proprement, ils sont donc actuellement terminés immédiatement.

Si tous les processus enfants sont considérés comme arrêtés, le Wrapper poursuivra avant l'expiration du délai d'attente.

Une fois le délai d'attente expiré, le Wrapper fermera de force tous les processus enfants encore en cours d'exécution. Sur les plateformes UNIX, cela se fait en envoyant un SIGKILL à chaque processus. Sous Windows, le processus est terminé de force.

Les informations relatives aux processus enfants ne seront journalisées que lorsque la sortie DEBUG est activée, ou lorsque la propriété wrapper.child.status.loglevel est définie à un niveau qui sera visible.

Exemple de cas :

L'exemple suivant montre l'arrêt propre de 3 processus enfants. 2 s'arrêtent immédiatement, et le 3e prend quelques secondes.

wrapper  | Requesting shutdown of managed child process. PID: 1852
wrapper  | Requesting shutdown of managed child process. PID: 3584
wrapper  | Requesting shutdown of managed child process. PID: 3944
wrapper  | 3 managed child processes still running.
wrapper  | Managed child process confirmed shutdown. PID: 1852
wrapper  | Managed child process confirmed shutdown. PID: 3584
wrapper  | 1 managed child processes still running.
wrapper  | 1 managed child processes still running.
wrapper  | Managed child process confirmed shutdown. PID: 3944
wrapper  | All managed child processes shutdown.
wrapper  | <-- Wrapper Stopped

L'exemple suivant montre l'arrêt propre de 2 processus enfants, et d'un 3e qui expire et est tué.

wrapper  | Requesting shutdown of managed child process. PID: 3276
wrapper  | Requesting shutdown of managed child process. PID: 3328
wrapper  | Requesting shutdown of managed child process. PID: 1200
wrapper  | 3 managed child processes still running.
wrapper  | Managed child process confirmed shutdown. PID: 3276
wrapper  | Managed child process confirmed shutdown. PID: 3328
wrapper  | 1 managed child processes still running.
wrapper  | 1 managed child processes still running.
wrapper  | 1 managed child processes still running.
wrapper  | 1 managed child processes still running.
wrapper  | Forcing termination of managed child process. PID: 1200
wrapper  | Managed child process confirmed shutdown. PID: 1200
wrapper  | All managed child processes shutdown.
wrapper  | <-- Wrapper Stopped

AVERTISSEMENT

Bien que cette possibilité existe, sachez que définir la valeur de cette propriété à « 0 » (zéro) (= désactiver le Timeout) ou à une valeur trop élevée signifie que le Wrapper peut rester bloqué lors de l'arrêt ou ne jamais pouvoir redémarrer la JVM. Il peut alors être nécessaire de tuer manuellement les processus enfants pour permettre au Wrapper de reprendre.

Référence : Délai d'attente