Graceful shutdown of Windows service, revisited

2010-12-09 Thread Bengt Rodehav
I'm trying to make my Karaf service more resilient to shutdown. In
particular I want my Camel routes to shutdown gracefully. I started this
discussion a few months ago, see
http://www.mail-archive.com/user@karaf.apache.org/msg00084.html.

Guillaume created the JIRA ticket KARAF-176 which is also resolved. I
haven't had time to test this until now.

It seems to me that the problem persists. I'm now using Karaf 2.1.2 and
Camel 2.5.0. When I run Karaf from the command line and terminates Karaf by
pressing ctrl-D, Camel will gracefully shutdown. It looks something like
this:

*2010-12-09 13:04:51,737 | INFO  | FelixStartLevel  |
 DefaultShutdownStrategy  | mel.impl.DefaultShutdownStrategy  114 |
 Starting to graceful shutdown 1 routes (timeout 300 seconds)*

*2010-12-09 13:04:51,737 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy  | ultShutdownStrategy$ShutdownTask  383 |
 Route: route1 suspended and shutdown deferred, was consuming from:
 Endpoint[file://C:\dev\Karaf\connect\common/data/interfaces/sample/file2file?delay=1include=%28%3Fi%29.*%28%3F%3C%21%5C.TMP%29move=archive%2F%24%7Bdate%3Anow%3AMMdd%7D%2F%24%7Bfile%3Aonlyname%7DmoveFailed=failed%2F%24%7Bfile%3Aonlyname.noext%7D-%24%7Bdate%3Anow%3AMMddHHmmssSSS%7D.%24%7Bfile%3Aext%7D]
 *

*2010-12-09 13:04:51,737 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy  | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 300 seconds.*

*2010-12-09 13:04:52,737 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy  | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 299 seconds.*

*2010-12-09 13:04:53,737 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy  | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 298 seconds.*

*...*

*2010-12-09 13:06:54,782 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy  | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 177 seconds.*

*2010-12-09 13:06:55,782 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy  | ultShutdownStrategy$ShutdownTask  442 |
 Route: route1 shutdown complete.*

*2010-12-09 13:06:55,782 | INFO  | FelixStartLevel  |
 DefaultShutdownStrategy  | mel.impl.DefaultShutdownStrategy  146 |
 Graceful shutdown of 1 routes completed in 124 seconds*

*2010-12-09 13:06:55,798 | INFO  | FelixStartLevel  |
 DefaultInflightRepository| l.impl.DefaultInflightRepository   93 |
 Shutting down with no inflight exchanges.*

*2010-12-09 13:06:55,798 | INFO  | FelixStartLevel  | DefaultCamelContext
| e.camel.impl.DefaultCamelContext 1374 | Uptime: 2 minutes*

*2010-12-09 13:06:55,798 | INFO  | FelixStartLevel  | DefaultCamelContext
| e.camel.impl.DefaultCamelContext 1375 | Apache Camel 2.5.0
 (CamelContext: Sample file transfer from file to file) is shutdown in 2
 minutes*

*...*


But when Karaf is running as a service (I run on Windows XP SP 3) and stop
the service from the control panel. Karaf, and therefore Camel, is abruptly
killed. It looks like this:

*2010-12-09 12:36:11,103 | INFO  | FelixStartLevel  |
 DefaultShutdownStrategy  | mel.impl.DefaultShutdownStrategy  114 |
 Starting to graceful shutdown 1 routes (timeout 300 seconds)*

*2010-12-09 12:36:11,103 | INFO  | 4 - ShutdownTask |
 DefaultShutdownStrategy  | ultShutdownStrategy$ShutdownTask  383 |
 Route: route2 suspended and shutdown deferred, was consuming from:
 Endpoint[file://C:\dev\Karaf\connect\common/data/interfaces/sample/file2file?delay=1include=%28%3Fi%29.*%28%3F%3C%21%5C.TMP%29move=archive%2F%24%7Bdate%3Anow%3AMMdd%7D%2F%24%7Bfile%3Aonlyname%7DmoveFailed=failed%2F%24%7Bfile%3Aonlyname.noext%7D-%24%7Bdate%3Anow%3AMMddHHmmssSSS%7D.%24%7Bfile%3Aext%7D]
 *

*2010-12-09 12:36:11,103 | INFO  | 4 - ShutdownTask |
 DefaultShutdownStrategy  | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 300 seconds.*


Nothing more is logged since the process is killed. I know that there is
never a guarantee that Karaf will shutdown gracefully since the process
might just die (e g out of power). But it would be nice if the control panel
could be used for stopping the service since thats what most operations
engineers do. There is always the option to log in to Karaf via SSH and
issue the shutdown command before stopping the service but then it becomes
too complicated for most people.

Karaf-176 seems to not have solved the problem (for Windows anyway). Shall I
reopen that ticket?

/Bengt


Re: Graceful shutdown of Windows service, revisited

2010-12-09 Thread Guillaume Nodet
Please create a new JIRA issue and link to the old one.
Also, it would be nice to try with the latest trunk in case this has
been fixed already, but I fear that JavaServiceWrapper may just kill
the JVM abrubtly in some cases.  Does the problem only happen on
windows or is that also happening on unix based os ?

On Thu, Dec 9, 2010 at 13:52, Bengt Rodehav be...@rodehav.com wrote:
 I'm trying to make my Karaf service more resilient to shutdown. In
 particular I want my Camel routes to shutdown gracefully. I started this
 discussion a few months ago,
 see http://www.mail-archive.com/user@karaf.apache.org/msg00084.html.
 Guillaume created the JIRA ticket KARAF-176 which is also resolved. I
 haven't had time to test this until now.
 It seems to me that the problem persists. I'm now using Karaf 2.1.2 and
 Camel 2.5.0. When I run Karaf from the command line and terminates Karaf by
 pressing ctrl-D, Camel will gracefully shutdown. It looks something like
 this:

 2010-12-09 13:04:51,737 | INFO  | FelixStartLevel  |
 DefaultShutdownStrategy          | mel.impl.DefaultShutdownStrategy  114 |
 Starting to graceful shutdown 1 routes (timeout 300 seconds)

 2010-12-09 13:04:51,737 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy          | ultShutdownStrategy$ShutdownTask  383 |
 Route: route1 suspended and shutdown deferred, was consuming from:
 Endpoint[file://C:\dev\Karaf\connect\common/data/interfaces/sample/file2file?delay=1include=%28%3Fi%29.*%28%3F%3C%21%5C.TMP%29move=archive%2F%24%7Bdate%3Anow%3AMMdd%7D%2F%24%7Bfile%3Aonlyname%7DmoveFailed=failed%2F%24%7Bfile%3Aonlyname.noext%7D-%24%7Bdate%3Anow%3AMMddHHmmssSSS%7D.%24%7Bfile%3Aext%7D]

 2010-12-09 13:04:51,737 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy          | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 300 seconds.

 2010-12-09 13:04:52,737 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy          | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 299 seconds.

 2010-12-09 13:04:53,737 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy          | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 298 seconds.

 ...

 2010-12-09 13:06:54,782 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy          | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 177 seconds.

 2010-12-09 13:06:55,782 | INFO  | 1 - ShutdownTask |
 DefaultShutdownStrategy          | ultShutdownStrategy$ShutdownTask  442 |
 Route: route1 shutdown complete.

 2010-12-09 13:06:55,782 | INFO  | FelixStartLevel  |
 DefaultShutdownStrategy          | mel.impl.DefaultShutdownStrategy  146 |
 Graceful shutdown of 1 routes completed in 124 seconds

 2010-12-09 13:06:55,798 | INFO  | FelixStartLevel  |
 DefaultInflightRepository        | l.impl.DefaultInflightRepository   93 |
 Shutting down with no inflight exchanges.

 2010-12-09 13:06:55,798 | INFO  | FelixStartLevel  | DefaultCamelContext
            | e.camel.impl.DefaultCamelContext 1374 | Uptime: 2 minutes

 2010-12-09 13:06:55,798 | INFO  | FelixStartLevel  | DefaultCamelContext
            | e.camel.impl.DefaultCamelContext 1375 | Apache Camel 2.5.0
 (CamelContext: Sample file transfer from file to file) is shutdown in 2
 minutes

 ...

 But when Karaf is running as a service (I run on Windows XP SP 3) and stop
 the service from the control panel. Karaf, and therefore Camel, is abruptly
 killed. It looks like this:

 2010-12-09 12:36:11,103 | INFO  | FelixStartLevel  |
 DefaultShutdownStrategy          | mel.impl.DefaultShutdownStrategy  114 |
 Starting to graceful shutdown 1 routes (timeout 300 seconds)

 2010-12-09 12:36:11,103 | INFO  | 4 - ShutdownTask |
 DefaultShutdownStrategy          | ultShutdownStrategy$ShutdownTask  383 |
 Route: route2 suspended and shutdown deferred, was consuming from:
 Endpoint[file://C:\dev\Karaf\connect\common/data/interfaces/sample/file2file?delay=1include=%28%3Fi%29.*%28%3F%3C%21%5C.TMP%29move=archive%2F%24%7Bdate%3Anow%3AMMdd%7D%2F%24%7Bfile%3Aonlyname%7DmoveFailed=failed%2F%24%7Bfile%3Aonlyname.noext%7D-%24%7Bdate%3Anow%3AMMddHHmmssSSS%7D.%24%7Bfile%3Aext%7D]

 2010-12-09 12:36:11,103 | INFO  | 4 - ShutdownTask |
 DefaultShutdownStrategy          | ultShutdownStrategy$ShutdownTask  422 |
 Waiting as there are still 1 inflight and pending exchanges to complete,
 timeout in 300 seconds.

 Nothing more is logged since the process is killed. I know that there is
 never a guarantee that Karaf will shutdown gracefully since the process
 might just die (e g out of power). But it would be nice if the control panel
 could be used for stopping the service since thats what most operations
 engineers do. There is always the option to log in to Karaf via SSH