]> granicus.if.org Git - apache/commit
Make the worker and event MPMs not touch the scoreboard when
authorChris Darroch <chrisd@apache.org>
Fri, 26 May 2006 16:26:52 +0000 (16:26 +0000)
committerChris Darroch <chrisd@apache.org>
Fri, 26 May 2006 16:26:52 +0000 (16:26 +0000)
commitb2ba96e3409f0d9264a2e9ca24389c4c7b0561e9
treef44f7e603f107ceeb850dda75c8df3f00ee7f7f4
parent33369080f12cb6f1710c7e60e0f1128e36b34931
Make the worker and event MPMs not touch the scoreboard when
handling a fork() failure.  The previous behaviour appears to have
been inherited from the prefork MPM, where is it appropriate.

The prefork MPM sets thread_limit to 1 and therefore each
child process has a single worker_score structure in the scoreboard's
array, i.e., ap_scoreboard_image->servers[slot][0].  In make_child(),
it sets this structure's status to SERVER_STARTING, and then does
a fork(); if the fork() fails, it resets the status to SERVER_DEAD.

The worker and event MPMs, by constrast, obviously use multiple
worker_score structures per child process.  They may also be
in use by worker threads from a previous generation at any particular
moment.  Therefore make_child() and the parent process in general
doesn't normally update them; make_child() doesn't set them all
to SERVER_STARTING before doing fork(), for example.

So, make_child() shouldn't set them to SERVER_DEAD if fork()
fails (and even if it should, it certainly shouldn't be just
updating the first one).

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@409693 13f79535-47bb-0310-9956-ffa450edef68
CHANGES
server/mpm/experimental/event/event.c
server/mpm/worker/worker.c