[ 
https://issues.apache.org/jira/browse/AMQ-5733?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14504480#comment-14504480
 ] 

James Green commented on AMQ-5733:
----------------------------------

Briefly reading 
http://stackoverflow.com/questions/191215/how-to-stop-java-process-gracefully 
and https://major.io/2010/03/18/sigterm-vs-sigkill/ perhaps it should follow 
the follow the following strategy:

1. Attempt to send shutdown via JMX (a lot of people do not enable JMX or have 
it misconfigured)
2. Attempt to kill <PID> allowing a JVM shutdown hook to gracefully bring down 
the process
3. Terminate forcefully with kill -9 <PID>

In each case poll for the presence of the PID in the process list, and if it 
goes ensure the PID file is removed.
 

> kill -9 always results in failure signal
> ----------------------------------------
>
>                 Key: AMQ-5733
>                 URL: https://issues.apache.org/jira/browse/AMQ-5733
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Distribution
>    Affects Versions: 5.11.1
>            Reporter: James Green
>
> Using https://github.com/rgevaert/activemq2deb I am trying to distribute 
> upgrades to our fleet. This results in failure each time.
> Looking into the matter the activemq script tries to stop the broker via JMX. 
> This is not configured, so fails.
> It falls back to issuing "kill -9 <PID>" then immediately exits with code 1. 
> This code 1 causes the packaging script to bail and thus we end up with a 
> mess.
> A possible solution is to return the "kill" command's own result. This 
> doesn't necessarily reflect whether "kill" succeeded in terminating the PID 
> however.
> A second possible solution is to detect the presence of 'start-stop-daemon' 
> and use this in preference. Narrows down the cases in which it does not work 
> at least.
> I am of the opinion that a script aiming of cross-platform compatibility is 
> probably never going to work completely so detecting and making use of 
> per-system tooling is probably best long term, meantime would returning 
> "kill's" exit code help?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to