You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Dave Ringoen <dr...@alventive.com> on 2001/08/30 23:55:05 UTC

PATCH: jk_nt_service can't automatically be restarted by Windows Service Control Manager upon crash

We're using Tomcat at our company with considerable success, but discovered
that if java.exe crashes for some reason, the Tomcat service won't restart
automatically.

I diagnosed the problem and came up with this discovery and a proposed fix.

jk_nt_service.exe exits too gracefully if the java.exe process dies,
notifying the Service Control Manager that it is shutting down. When Service
Control Manager receives the shutdown message, it does not restart the
service. It assumes that the service was supposed to be shut down.

This patch makes jk_nt_service exit more abruptly without notifying SCM.
With this patch, SCM will correctly initiate a restart of the Tomcat
service.

I couldn't file this in Bugzilla because Bugzilla was down.

Thanks for your consideration on this patch. I'm very impressed with the
Tomcat development approach and process.

Dave Ringoen
Alventive, Inc.


cvs diff -u jk_nt_service.c (in directory
C:\Temp\tomcatsrcnightly\jakarta-tomcat\src\native\mod_jk\nt_service)
Index: jk_nt_service.c
===================================================================
RCS file:
/home/cvspublic/jakarta-tomcat/src/native/mod_jk/nt_service/jk_nt_service.c,
v
retrieving revision 1.3
diff -u -r1.3 jk_nt_service.c
--- jk_nt_service.c	2001/04/24 08:49:46	1.3
+++ jk_nt_service.c	2001/08/30 18:05:02
@@ -535,6 +535,11 @@
                         /* 
                          * Tomcat died !!!
                          */ 
+                        CloseHandle(hServerStopEvent);
+                        CloseHandle(hTomcat);
+                        exit(0); // exit ungracefully so
+                                 // Service Control Manager 
+                                 // will attempt a restart.
                         break;
                     default:
                         /* 

RE: PATCH: jk_nt_service can't automatically be restarted by Windows Service Control Manager upon crash

Posted by Marc Saegesser <ma...@apropos.com>.
Costin,

Sure, I'll take care of it today.


Marc Saegesser 

> -----Original Message-----
> From: cmanolache@yahoo.com [mailto:cmanolache@yahoo.com]
> Sent: Friday, August 31, 2001 12:13 AM
> To: tomcat-dev@jakarta.apache.org
> Subject: RE: PATCH: jk_nt_service can't automatically be restarted by
> Windows Service Control Manager upon crash
> 
> 
> On Thu, 30 Aug 2001, Marc Saegesser wrote:
> 
> > The patch looks good and seems to work OK after I configured my tomcat
> > service to attempt restarts on failures.  I hacked Tomcat to 
> croak on start
> > up and the SCM correctly attempted a single restart and then quit.
> 
> Hi Marc,
> 
> Could you check it in the main branch too ?
> 
> Costin

RE: PATCH: jk_nt_service can't automatically be restarted by Windows Service Control Manager upon crash

Posted by cm...@yahoo.com.
On Thu, 30 Aug 2001, Marc Saegesser wrote:

> The patch looks good and seems to work OK after I configured my tomcat
> service to attempt restarts on failures.  I hacked Tomcat to croak on start
> up and the SCM correctly attempted a single restart and then quit.

Hi Marc,

Could you check it in the main branch too ?

Costin


RE: PATCH: jk_nt_service can't automatically be restarted by Windows Service Control Manager upon crash

Posted by Marc Saegesser <ma...@apropos.com>.
The patch looks good and seems to work OK after I configured my tomcat
service to attempt restarts on failures.  I hacked Tomcat to croak on start
up and the SCM correctly attempted a single restart and then quit.

The patch has been committed.  The native code doesn't get built for the
nightly builds so this won't show up in a distribution until Tomcat 3.2.4
(and I haven't worked out a schedule for that yet).


Marc Saegesser

> -----Original Message-----
> From: Dave Ringoen [mailto:dringoen@alventive.com]
> Sent: Thursday, August 30, 2001 4:55 PM
> To: 'tomcat-dev@jakarta.apache.org'
> Cc: Chien-Ming Huang; Brian Enright; Rob Webb; Patti Vrobel; Steven
> Velez
> Subject: PATCH: jk_nt_service can't automatically be restarted by
> Windows Service Control Manager upon crash
>
>
> We're using Tomcat at our company with considerable success, but
> discovered
> that if java.exe crashes for some reason, the Tomcat service won't
> restart
> automatically.
>
> I diagnosed the problem and came up with this discovery and a proposed
> fix.
>
> jk_nt_service.exe exits too gracefully if the java.exe process dies,
> notifying the Service Control Manager that it is shutting down. When
> Service
> Control Manager receives the shutdown message, it does not restart the
> service. It assumes that the service was supposed to be shut down.
>
> This patch makes jk_nt_service exit more abruptly without notifying SCM.
> With this patch, SCM will correctly initiate a restart of the Tomcat
> service.
>
> I couldn't file this in Bugzilla because Bugzilla was down.
>
> Thanks for your consideration on this patch. I'm very impressed with the
> Tomcat development approach and process.
>
> Dave Ringoen
> Alventive, Inc.
>
>
> cvs diff -u jk_nt_service.c (in directory
> C:\Temp\tomcatsrcnightly\jakarta-tomcat\src\native\mod_jk\nt_service)
> Index: jk_nt_service.c
> ===================================================================
> RCS file:
> /home/cvspublic/jakarta-tomcat/src/native/mod_jk/nt_service/jk_nt_servic
> e.c,
> v
> retrieving revision 1.3
> diff -u -r1.3 jk_nt_service.c
> --- jk_nt_service.c	2001/04/24 08:49:46	1.3
> +++ jk_nt_service.c	2001/08/30 18:05:02
> @@ -535,6 +535,11 @@
>                          /*
>                           * Tomcat died !!!
>                           */
> +                        CloseHandle(hServerStopEvent);
> +                        CloseHandle(hTomcat);
> +                        exit(0); // exit ungracefully so
> +                                 // Service Control Manager
> +                                 // will attempt a restart.
>                          break;
>                      default:
>                          /*
>