The easiest way to remove the S_L_U_A from the worker MPM is to remove all signals from the MPM. Basically, we have a single thread that currently sits in sigwait, which is just waiting for a signal. We then have every other thread sitting in accept waiting for something to wake them up, either a real connection or a fake one for the POD. It makes a lot of sense to make the parent process always use the POD for all communication. If this happens, then the thread sitting in sigwait could easily just sit in poll waiting for data from the parent. If it gets a !, then the process should just die, if it gets a #, then it should perform a graceful (The chars don't matter, just the idea). Since the thread in poll() is always the main thread, it is just fine to just call exit to terminate the process immediately. The biggest problem will be how to wake up the thread that is currently sitting in accept.
Ryan On Mon, 21 Jan 2002, Greg Ames wrote: > Brian Pane wrote: > > > I'm willing to spend some time this week on this issue, but first, can > > somebody clarify how prefork is handling the pipe-of-death? > > > > It looks like prefork children only check the pod upon completion of > > a request. Is that all there is to it, or am I missing something? > > There has to be a way to unblock accept()s when a graceful restart happens in > order to get rid of the apr_poll. I think prefork depends on the logic in > mpm_common.c::ap_mpm_pod_[signal|killpg] that sends dummy connects to do this in > situations where there's low/no traffic from the network. (disclaimer: haven't > studied the code recently) > > btw, some of the workers_may_exit checks may not be necessary any more, so we > might be able to eliminate some conditional branches in the mainline path. The > threaded MPM had the possibility of workers_may_exit getting set asynchronously > on thread x, and apparently we wanted thread y to know ASAP. (same disclaimer) > > Greg > -- _______________________________________________________________________________ Ryan Bloom [EMAIL PROTECTED] 550 Jean St Oakland CA 94610 -------------------------------------------------------------------------------