You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by "Schreibman, David" <DS...@eTranslate.com> on 2001/08/31 01:05:54 UTC

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

If you really want the service code to be aggressive about restarting
Tomcat, I would suggest just calling start_tomcat() again.  This would avoid
any dependency on the Service Control Manager's reaction to "ungraceful"
exits.  In fact, I've never seen any documentation from Microsoft about such
restarts.  The only automatic service startups that I know about are upon
booting.  Can you send a reference to MS documentation about this?

In addition, I don't think you would want this to just keep restarting
indefinitely.  If the vm is crashing a lot then there's something going on
that needs to be looked at.  Such restart functionality should be limited to
a certain number of retries.  Continuing to run the vm might interfere with
other software running on the same machine.  Especially if the vm is
crashing due to some unusual resource consumption.

Just my 2 bits worth.

-David


-----Original Message-----
From: Dave Ringoen [mailto:dringoen@alventive.com]
Sent: Thursday, August 30, 2001 2: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_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>.
As of Win2000 (not sure if this existed in WinNT) you can configure a
service to attempt to recover if it dies.  This is fairly flexible in that
you can cause it to attempt up to three restarts (after a delay period),
execute a file on failure, reboot the system, etc.

We might as well use the facilities the OS provides instead of duplicating
this inside the service.


Marc Saegesser

> -----Original Message-----
> From: Schreibman, David [mailto:DSchreibman@eTranslate.com]
> Sent: Thursday, August 30, 2001 6:06 PM
> To: 'tomcat-dev@jakarta.apache.org'
> Subject: RE: PATCH: jk_nt_service can't automatically be restarted by
> Windows Service Control Manager upon crash
>
>
> If you really want the service code to be aggressive about restarting
> Tomcat, I would suggest just calling start_tomcat() again.  This
> would avoid
> any dependency on the Service Control Manager's reaction to "ungraceful"
> exits.  In fact, I've never seen any documentation from Microsoft
> about such
> restarts.  The only automatic service startups that I know about are upon
> booting.  Can you send a reference to MS documentation about this?
>
> In addition, I don't think you would want this to just keep restarting
> indefinitely.  If the vm is crashing a lot then there's something going on
> that needs to be looked at.  Such restart functionality should be
> limited to
> a certain number of retries.  Continuing to run the vm might
> interfere with
> other software running on the same machine.  Especially if the vm is
> crashing due to some unusual resource consumption.
>
> Just my 2 bits worth.
>
> -David
>
>
> -----Original Message-----
> From: Dave Ringoen [mailto:dringoen@alventive.com]
> Sent: Thursday, August 30, 2001 2: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_
> 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:
>                          /*