On Aug 20, 2007, at 7:00 PM, Paul Querna wrote:
Short: We need to call ap_close_listeners() earlier or more
aggressively.
Question: Where/How?
Looking at the Event MPM in both trunk and 2.2.x, the
listener_thread is
where we call ap_close_listeners(). This does not seem to be working
quickly enough, per PR 43081:
http://issues.apache.org/bugzilla/show_bug.cgi?id=43081
I haven't quite got my head around how the listener thread is
apparently
blocking for so long, but I can't figure out another way that the
listeners would stay online for so long either.
Solution: Add call to ap_close_listeners() in wakeup_listener(). I
think this would pop out all of the listening sockets quickly from the
listener pollset.
I've been wondering for awhile whether having the listener thread
in event handle both initial connections as well as keepalives
really makes sense, and whether breaking them out as 2 distinct
threads might be better... One reason is that this would
make it easier to create parity between worker and event
on "simple" cases... This wouldn't completely solve the
problem but it would isolate it to "just" the keepalive
thread, making it easier I think to solve... But other than
some very rough ideas on how to do it, I haven't really
looked further.