1
0
mirror of https://github.com/apache/httpd.git synced 2026-01-26 19:01:35 +03:00
Commit Graph

123 Commits

Author SHA1 Message Date
Paul J. Reder
78ae2a9eb4 PR:
Obtained from:
Submitted by:	Paul J. Reder
Reviewed by:

Remove the MPM_SYNC_CHILD_TABLE macro since there is no longer a scoreboard
file that needs to be synched.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94308 13f79535-47bb-0310-9956-ffa450edef68
2002-03-29 16:15:33 +00:00
Jim Jagielski
70bb2575ea The old, legacy (and unused) code in which the scoreboard was totally
and completely contained in a file (SCOREBOARD_FILE) has been
removed. This does not affect scoreboards which are *mapped* to
files using named-shared-memory at all. This implies that scoreboards
must be based, at some level, on native shared memory (mmap, shm_open,
shmget, whatever), but the code has assumed that for quite awhile
now. Having the scoreboard be *based* on a file makes no sense today.

PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94306 13f79535-47bb-0310-9956-ffa450edef68
2002-03-29 14:33:50 +00:00
Cliff Woolley
3e2ce19baf BUCKET FREELISTS
Add an allocator-passing mechanism throughout the bucket brigades API.

From Apache's standpoint, the apr_bucket_alloc_t* used throughout a given
connection is stored in the conn_rec by the create_connection hook.  That
means it's the MPM's job to optimize recycling of apr_bucket_alloc_t's --
the MPM must ensure that no two threads can ever use the same one at the
same time, for instance.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94304 13f79535-47bb-0310-9956-ffa450edef68
2002-03-29 08:17:26 +00:00
Jeff Trawick
97659630cc worker MPM:
get MaxRequestsPerChild to work again by allowing the main thread of
a child to be interrupted by one of the other threads in the process

this should get graceful termination to work after encountering one of
the various possible error conditions in the listener and worker threads


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94232 13f79535-47bb-0310-9956-ffa450edef68
2002-03-27 20:37:32 +00:00
Jeff Trawick
db1f8661e6 document yet another worker MPM glitch
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94117 13f79535-47bb-0310-9956-ffa450edef68
2002-03-22 03:43:22 +00:00
Jeff Trawick
61c0797041 remove some unnecessary, commented-out code; add a comment
about a use of signals


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94112 13f79535-47bb-0310-9956-ffa450edef68
2002-03-22 01:12:49 +00:00
Jeff Trawick
4867fb1974 Don't drop connections during graceful restart. Previously, worker
threads could exit even though there were connections waiting in the
queue.

Now, for a graceful restart the worker threads won't exit until they
are told that the queue has been drained and no more connections will
ever be added.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94106 13f79535-47bb-0310-9956-ffa450edef68
2002-03-21 19:12:54 +00:00
Jeff Trawick
d1122ee9cc graceful shutdown (no dropped connections) requires that the listener
go away before the workers...  introduce separate XXX_may_exit flags
for our different categories of threads so that a future fix for
graceful shutdown can terminate them in the right order

rename signal_workers() to signal_threads() and give it a parameter
so it knows whether or not termination should be graceful

this commit doesn't change the behavior in any noticeable way;  the
flags used to tell threads to go away are still set at about the same
time


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94095 13f79535-47bb-0310-9956-ffa450edef68
2002-03-21 16:31:39 +00:00
Jeff Trawick
533551f8a7 document a glitch that prevents complete graceful termination of the
process when one of the threads encounters a critical error


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94094 13f79535-47bb-0310-9956-ffa450edef68
2002-03-21 16:18:11 +00:00
Jeff Trawick
3289de6264 make the comment for the call to apr_signal_thread() a little more
correct about what it is going to do


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94091 13f79535-47bb-0310-9956-ffa450edef68
2002-03-21 16:06:51 +00:00
Jeff Trawick
ca62366801 fix a comment
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94088 13f79535-47bb-0310-9956-ffa450edef68
2002-03-21 15:27:31 +00:00
Jeff Trawick
1e799a88e6 axe some unused fields in ap_queue_t
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94087 13f79535-47bb-0310-9956-ffa450edef68
2002-03-21 15:19:54 +00:00
Jeff Trawick
5ffc63f688 don't log a failure of ap_queue_pop() at termination; it is
expected


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94068 13f79535-47bb-0310-9956-ffa450edef68
2002-03-21 03:40:23 +00:00
Jeff Trawick
c366452ca7 in a worker thread, don't dare try to process a connection if
ap_queue_pop() failed...  csd is not cleared by ap_queue_pop()
so checking csd is not helpful


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94067 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 23:29:13 +00:00
Jim Jagielski
730e99e461 Fold the compiled-in knowledge of the allowable AcceptMutex settings into
its help entry. Requires the use of a extern string rather than a function
call for the initialization to be valid in the macro (Thx to Jeff!).
In the meantime, bump down the error logging until we deal with true
default and configured setting information ala 1.3.

PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94062 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 22:19:11 +00:00
Jeff Trawick
eada6f8255 no need to kill the scoreboard cleanup anymore on graceful
restart; the scoreboard is longer-lived
PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94061 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 20:38:52 +00:00
Jeff Trawick
e8dc265c9a write a debug message to the log when we're stuck in the sicko state
of trying to take over scoreboard slots that aren't going to be released
(we could also be stalled while taking over slots if a thread in child
gracefully terminating is serving a long-running request)

update a comment describing the sicko state to remove any information
I'm not absolutely sure of


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94059 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 19:53:18 +00:00
Jim Jagielski
a65170a84c Bring 2.0 up to parity, a bit, with how much info we provide to
the admin regarding valid values for AcceptMutex. Should also
tell 'em what "default" actually maps to, but that can wait.

PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94055 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 16:44:13 +00:00
William A. Rowe Jr
cec6d4b870 The pre_mpm hook creates server-lifetime objects (or at least, for the
generations across graceful restarts.)  They should use the process pool.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94039 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 05:58:21 +00:00
Jeff Trawick
ae65c40d8e Make the listener thread stop accepting new connections and exit
cleanly at graceful restart time.  This is a basic requirement of
reliable graceful restarts (the kind that won't drop connections).
This allows a future fix to make worker threads hang around until
they service all connections previously accepted by the listener
thread.

The old mechanism of doing a dummy connection to wake up the
listener thread in each old child process didn't work.  It didn't
guarantee that (in the main thread) the byte was read from the pod
and global variables were set before the listener thread grabbed
the connection.  It didn't guarantee that a child process in the
new generation didn't get some of the dummy connections.

Rather than burn extra syscalls adding a unique socket or pipe
to the poll set (and breaking single listen unserialized accept
in the same change), this uses a signal sent from the main thread
to the listener thread to break it out of the poll or accept.
(We don't worry about breaking it out of the optional mutex because
the child process holding the mutex will break out of poll/accept
and release the mutex, allowing a child blocked in the mutex to
get it.  Eventually all children blocked in the mutex will come
out.)

Since the listener thread now exits reliably, the main thread
joins it.

PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94031 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 03:54:25 +00:00
Jeff Trawick
f8827903aa get the start thread to exit when we have reached termination but
it is still trying to create worker threads

previously, after a non-graceful restart followed by a terminate
you could see a bunch of log messages showing the parent repeatedly
sending SIGTERM and finally SIGKILL to one or more children...
with this change, the sequence of messages should stop very soon

add a comment to start_threads() describing a current problem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94030 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 03:38:07 +00:00
Jeff Trawick
32fe8d097f be a little more specific in a thread-create error message
it is helpful to distinguish between a failure creating the
first thread (listener) vs. a failure creating one of n
worker threads


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94025 13f79535-47bb-0310-9956-ffa450edef68
2002-03-19 22:09:26 +00:00
Jeff Trawick
cfcab38a77 "apachectl stop" shouldn't send the gracefully-terminate char down
the pod...  the child processes need to know that it isn't a graceful
termination and they shouldn't wait for old connections to finish


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94024 13f79535-47bb-0310-9956-ffa450edef68
2002-03-19 21:31:04 +00:00
Jeff Trawick
80788ba82a get rid of unnecessary code to track the number of worker threads
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94017 13f79535-47bb-0310-9956-ffa450edef68
2002-03-19 17:56:57 +00:00
Jeff Trawick
67f3ac2762 prefork and worker:
after allocating a new scoreboard, make sure the right generation
is stored in the global score


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93998 13f79535-47bb-0310-9956-ffa450edef68
2002-03-18 18:12:43 +00:00
William A. Rowe Jr
d07e31f81f Simplify s/APR_OS_PROC_T_FMT/APR_PID_T_FMT/, apr_os_foo entities aren't
for external consumption.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93969 13f79535-47bb-0310-9956-ffa450edef68
2002-03-16 18:42:46 +00:00
Sander Striker
50ba0ce732 Update the mpms to call the new allocator/pools API
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93943 13f79535-47bb-0310-9956-ffa450edef68
2002-03-15 00:50:31 +00:00
Roy T. Fielding
845cbfd508 Update our copyright for this year.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93918 13f79535-47bb-0310-9956-ffa450edef68
2002-03-13 20:48:07 +00:00
Jeff Trawick
04bde59aaf failures on the accept mutex are common at restart time, so be smart
about the log level and use APLOG_DEBUG if we're restarting


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93720 13f79535-47bb-0310-9956-ffa450edef68
2002-03-05 21:18:07 +00:00
Jeff Trawick
152c269699 fix a typo in a log message... the message claimed that apr_proc_mutex_lock()
failed when actually it was apr_proc_mutex_unlock() which failed


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93719 13f79535-47bb-0310-9956-ffa450edef68
2002-03-05 21:01:24 +00:00
Jeff Trawick
da3ac1a6e5 skip the lock release if the lock obtain failed
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93718 13f79535-47bb-0310-9956-ffa450edef68
2002-03-05 20:51:50 +00:00
Jeff Trawick
610f8046a4 restart fixes for worker:
fix a segfault and a window in which we could miss joining
newly-created threads

we can't try to signal workers if the worker queue hasn't
been initialized (or we segfault)

make sure the start thread is done creating threads before
we try to join; otherwise we can just miss some of them and
not be able to clean them up properly


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93561 13f79535-47bb-0310-9956-ffa450edef68
2002-02-24 20:53:26 +00:00
Aaron Bannert
5e4fba9c6c Implement apr_proc_detach changes and allow -DNO_DETACH in the multi-process
mode to not "daemonize" while detaching from the controlling terminal.
This is necessary for Apache to work with process-management tools like
AIX's "System Resource Controller" as well as Dan Bernstein's "daemontools".

What this means is apache must _NOT_ be a process group leader if called
with the -DNO_DETACH flag.

Submitted from:     Jos Backus <josb@cncdsl.com>
Edited/Reviewed by: Aaron Bannert


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93535 13f79535-47bb-0310-9956-ffa450edef68
2002-02-21 18:52:28 +00:00
Jeff Trawick
a57a1a0c11 Convert the ap_queue_foo routines to return apr_status_t as appropriate.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93530 13f79535-47bb-0310-9956-ffa450edef68
2002-02-21 14:22:05 +00:00
Jeff Trawick
203edb6d82 zap an incorrect comment
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93528 13f79535-47bb-0310-9956-ffa450edef68
2002-02-21 11:20:01 +00:00
Jeff Trawick
e821b24c99 close a nearly-impossible leak in dummy_connection (the copy of the
code used by worker MPM)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93480 13f79535-47bb-0310-9956-ffa450edef68
2002-02-18 16:24:51 +00:00
Aaron Bannert
0cff6e8f58 Implement new ScoreBoardFile directive logic. This affects how we
create the scoreboard's shared memory segment. We now have the best of
both worlds:

if config specifies ScoreBoardFile
  create name-based shared memory, errors are fatal
else /* we get to choose */
  create anonymous shared memory
  if ENOTIMPL
    create name-based shared memory from DEFAULT_SCOREBOARD
  else
    errors are fatal

This gives us the flexibility to have anonymous shared memory (on platforms
that support it) as well as name-based shared memory when third-party
programs want access to our scoreboard.

The ap_scoreboard_fname static variable is now owned by the scoreboard.c
file, and no longer by the MPMs. The MPMs MUST NOT set ap_scoreboard_fname
to a default, since that will override the default creation logic and
only allow name-based segments.

Submitted by:	Aaron Bannert
Reviewed by:	Justin Erenkrantz


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93434 13f79535-47bb-0310-9956-ffa450edef68
2002-02-15 20:48:19 +00:00
Aaron Bannert
c47efa9889 Retain signal handling in the worker MPM for the one_process case
(httpd with -DDEBUG, -X, or -DONE_PROCESS).

Fix -X, -DNO_DETACH, -DONE_PROCESS, etc. flags.

Tested on solaris w/ start/stop, restart, graceful, and with the
above debugging flags.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93403 13f79535-47bb-0310-9956-ffa450edef68
2002-02-14 02:48:19 +00:00
Brian Pane
481bad782c Performance optimization: updated the worker MPM to recycle
per-transaction pools instead of destroying them.  Based on
Ian's benchmark testing, this reduces CPU utilization by
about 1% on Solaris.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93386 13f79535-47bb-0310-9956-ffa450edef68
2002-02-13 04:49:55 +00:00
Greg Ames
9ad90284cd if a child detects a resource shortage on accept(), limit the rate of fork()s
to 1 per second until the situation clears up.

Inspired by: Martin Kraemer


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93366 13f79535-47bb-0310-9956-ffa450edef68
2002-02-11 23:20:16 +00:00
Ryan Bloom
1703da8e37 Remove all signal handling from the worker MPM's child processes. Instead,
we use the pipe of death for all communication between parent and child.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93358 13f79535-47bb-0310-9956-ffa450edef68
2002-02-11 04:56:10 +00:00
William A. Rowe Jr
89de6d1d1a Some compatibility fixes. Built yet untested, read three times through.
Please review and raise the flag if any of these introduce bad mojo.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93264 13f79535-47bb-0310-9956-ffa450edef68
2002-02-05 23:17:22 +00:00
William A. Rowe Jr
92817a7be7 Do we have sys/socket.h?
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93263 13f79535-47bb-0310-9956-ffa450edef68
2002-02-05 23:13:42 +00:00
Ryan Bloom
aedb317878 Not being able to bind to a socket is a fatal error. This makes all
MPMs treat it as such.  We now print a message to the console, and return
a non-zero status code.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93227 13f79535-47bb-0310-9956-ffa450edef68
2002-02-04 18:41:46 +00:00
Bill Stoddard
bd3d360392 Reintroduce the create_connection hook. This hook is required to enable
modules to completely take over all network i/o from the core.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93171 13f79535-47bb-0310-9956-ffa450edef68
2002-02-01 22:16:31 +00:00
Ryan Bloom
5cd5470300 Change the Windows MPM to only use the pre_mpm phase in the parent process.
The child processes use the child_init phase to reattach to the shared
memory.  This makes Windows work like Unix, which should make it easier
for module authors to write portable modules.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93119 13f79535-47bb-0310-9956-ffa450edef68
2002-01-30 22:35:57 +00:00
Jeff Trawick
90ffe9ae98 get rid of a bunch of warnings about unused variables
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93101 13f79535-47bb-0310-9956-ffa450edef68
2002-01-30 11:56:26 +00:00
Brian Pane
a0cae8882d Updated to support the use of the ap_mpm_pod API in worker
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93097 13f79535-47bb-0310-9956-ffa450edef68
2002-01-30 06:34:12 +00:00
Brian Pane
d33f04cab0 Added logic to the worker MPM to skip the poll before accept
if there's only one listener socket (based on the implementation
in the prefork MPM).  This also enables us to do single-listener
unserialized accept


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93096 13f79535-47bb-0310-9956-ffa450edef68
2002-01-30 06:33:18 +00:00
Bill Stoddard
4168820850 This patch restores most of Ryan's patch (11/12/2001) to remove the
client_socket from the conn_rec.  Diffs from Ryan's patch include:

- rename the create_connection hook to install_transport_filters
- move the point of invocation of the hook till after the call to
  after ap_update_vhost_given_ip to enable the hook to use vhost
  config info in its decision making.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93087 13f79535-47bb-0310-9956-ffa450edef68
2002-01-29 19:02:04 +00:00