[Zope-dev] Possible Windows Service improvements.

Leonardo Rochael Almeida leo at hiper.com.br
Mon Aug 9 16:27:24 EDT 2004


Can't we just parse the log files, or maybe even have a special logger
for Window Service, and wait for this?

  2004-08-03T15:37:55 INFO(0) Zope Ready to handle requests

If the process dies after this, restart.

Em Seg, 2004-08-09 às 10:56, Chris McDonough escreveu:
> Would a lockfile work ok to signify "running" state?  IOW, Zope would
> lock a file as one of the last steps during startup (which it actually
> does now, but might do it a bit too early).  The Windows service manager
> would attempt to lock the same file after <timeout> seconds (although
> I'm not sure where to get <timeout> from) on initial startup.  If the
> file doesn't exist or the lock succeeds, the process is nonrestartable. 
> If it exists and cannot be locked (Zope has locked it, signifying
> successful startup), the process is restartable.
> 
> On Sun, 2004-08-08 at 21:10, Mark Hammond wrote:
> > [Me]
> > > > By adding a layer around run.py, I believe we could arrange
> > > > for these fatal errors to be handled with a special return code.
> > 
> > [Jim]
> > > I assume by "fatal", you mean errors that we should not try to restart
> > > from.
> > 
> > Correct.
> > 
> > > Let me see if I understand the use cases here:
> > >
> > > - Normal shutdown.  (Should it be possible to shut down Zope
> > >    through the web on Windows?)
> > 
> > I see no reason it makes less sense for Windows than it does for anywhere
> > else <wink>.
> > 
> > >
> > > - Start-up error. We want to log relevent information somewhere.
> > >    We don't want to restart.
> > >
> > > - Run-time (after startup) error.  We also want to log a problem,
> > >    but we do want to restart Zope.
> > 
> > Yep, I think that covers it.
> > 
> > > Note that we also need to consider uncontrolled exits, like segfaults.
> > 
> > Yes - if the segfault is at startup, it should be considered
> > non-restartable.  Once normal operations have started, a segfault should
> > cause a restart.
> > 
> > > Perhaps there should be a framework that with calls that a program can
> > > make to indicate normal exit, fatal (non-restartable) exit,
> > > and non-fatal (restartable) exit.
> > 
> > That could done with process exit codes if all the child needs to is report
> > *exit* status - but that really doesn't cover enough bases.  Given the
> > number of ways programs can fail, it may be hard to guarantee, and doesn't
> > handle uncontrolled exits or children going zombie.
> > 
> > What we need is something a more authoritative - where the child process
> > actively signals its state to the parent - ie "starting", "running" or
> > "stopping".  "pausing" and "paused" may also make sense.  If the child never
> > reported 'running', it is non-restartable.  If the child terminates without
> > reporting graceful shutdown, it is restartable.
> > 
> > This still does not provide any way of handling the case when the child
> > process is running, but failing to transition between states.  We still need
> > a timeout, but can make it more robust by having the child process report
> > the status *and* the timeout the parent should use.
> > 
> > Which, coincidently, sounds exactly like the Windows Services API <wink>.
> > Is that sounding reasonable, or moving into too-complicated/YAGNI territory?
> > 
> > Thanks,
> > 
> > Mark.
> > 
> > _______________________________________________
> > Zope-Dev maillist  -  Zope-Dev at zope.org
> > http://mail.zope.org/mailman/listinfo/zope-dev
> > **  No cross posts or HTML encoding!  **
> > (Related lists - 
> >  http://mail.zope.org/mailman/listinfo/zope-announce
> >  http://mail.zope.org/mailman/listinfo/zope )
> > 
> 
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists - 
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope )
> 


More information about the Zope-Dev mailing list