[Zope-dev] Re: [ZODB-Dev] ZEO signal feature

Guido van Rossum guido@python.org
Mon, 07 Oct 2002 08:47:24 -0400


> > Well, there goes zLOG's MinimalLogger implementation.
> 
> The module name might be 'MinimalLogger', but everywhere else it is
> known as 'the stupid log'.

And stupid it is.  But it's the only one we've got in the Zope core. :-(

> > (This only holds for log files owned by a root, right?)
> 
> No, I dont think ownership is relevant. Any log file which the zope
> process can overwrite it of little use in proving that your zope
> process has not been compromised.

Fair enough.  But then why did you specifically refer to file
descriptors?

> > > > Pidfiles too.
> > >
> > > Currently it is common practice for Zope's 'stop' scripts to be run
> > > as root.  We cant allow the pid files to be written by non-root
> > > users, otherwise those users could trick root into killing an
> > > arbitrary process.
> >
> > The current design, for whatever reason, writes the pidfile as *late*
> > as possible.  That's often bugged me, because there's a failure mode
> > where the process dies before the pidfile is written; zdaemon restarts
> > it over and over (that's what prompted my zdaemon hack proposal), and
> > the stop script won't stop it.
> 
> There is a trick here - it writes two pid files. One is written by
> the server process (as you point out, this one is written very
> late), the other is written by the supervisor process immediately
> after forking. By default this is in var/zProcessManager.pid

This is done by zdaemon, right?  I think that ZEO at least disables
this.

> You should be able to send SIGTERM to the supervisor process, and it
> should pass it on to the server process. Ive only just discovered
> that:
> 
> a. The signal forwarding doesnt seem to work for me
> 
> b. The default stop script doesnt use this pid.

How typical.

One problem here, as always, is that the conventions are undocumented,
or at least not documented where I would look for the
documentation. :-(

--Guido van Rossum (home page: http://www.python.org/~guido/)