You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Rodent of Unusual Size <Ke...@Golux.Com> on 1999/05/22 05:45:08 UTC
[STATUS] (apache-apr) Fri May 21 23:45:08 EDT 1999
Apache Portable Runtime STATUS:
Last modified at [$Date: 1999/04/29 19:34:19 $]
Release:
0.1 : In pre-alpha development
Plan:
Everyone discuss and wrangle out the issues on new-httpd,
and commit changes as appropriate.
Showstoppers:
Committed Code Changes:
. docs/ directory created and initial function pre-spec added
. include/ directory created and start of APRStatus macros added
. pthreads/ directory tree created and populated with latest
work on Apache 1.3.5-dev port to pthreads inserted
Available Patches:
In progress:
Logging statements
We have some comments along the lines of "log this here".
Let's actually make those logs at some point.
Modules
Ensure thread safety. Does not include mod_proxy, yet.
Modules that don't work:
mod_digest.c --Anybody have a client that can transmit Digest
Auth?
Questionable modules: (Not tested.)
mod_log_agent.c -- Are we keeping these in 2.0 after Ken's
mod_log_referer.c -- mod_log_config changes. If yes, I'll test
-- them later.
Warning scrubbing
Get rid of all reasonable warnings with the strictest compiler flags,
to help weed out bugs
Everything
Needs patch:
When the server runs at a high load, and the load later drops off,
the server tries to kill off some children. The problem is that the
children selected may have threads blocked on the accept lock, so
they will never exit. This wasn't a problem with 1.3, because each
process got kicked out of the lock with a signal. This could be solved
(Thanks, Dean) with a server-wide pipe that replaces the SIGWINCH signal.
This would wake up every thread when a single child death signal is sent
over the pipe.
Related to the above: On Red Hat 5.2, when we SIGTERM the server and
the server is in this state, the children waiting on fcntl will not
die, even though nobody else is holding the lock, verified with lsof.
The children eventually will be SIGKILLed by the parent. This only
happens in USE_MULTI_ACCEPT mode, and the problem goes away when
USE_INTRAPROCESS_SERIALIZED_ACCEPT is undefined. Dean has a couple of
suggestions for tracing down this problem in
<Pi...@twinlark.arctic.org>
Open issues:
* Whether every APR routine should return a status code
* What the status codes should look like
* Bringing in the libap stuff
* Optimize Optimize Optimize
FEATURE SET FOR APR
Closed issues:
Accept Thread Serialization
Implemented as a blocking queue. 1 accept thread passes connection
to queue (size of queue is config directive, default # of threads).
All other threads block on queue.
Process/Thread hybridization
put monitor process back into place. Was removed for initial port,
it's time we make sure the server is running, and if not, start
it again.
Bringing this code up-to-date with the changes in the 1.3 branch.
It's now up-to-date as of the morning of Feb 6th, 1999.
Scoreboard
Design the scoreboard appropriately for a hybrid process web
server. This includes adding a tid field to the scoreboard.
Signal Handling
Investigate signal handling in Apache-pthreads. SIGUSR1 is not a
usable signal on Linux 2.0, because pthreads uses it to communicate
between threads. SIGWINCH was used for graceful restarts.
Process/thread management
Put (back) in the logic to manage the number of processes.
Managing threads per process other than with a configuration
constant is in doubt.
Accept Serialization across Processes
We now use one mutex per socket.
Timeouts. (only soft timeouts)
Keepalive and Initail Conection timeouts are done. Are there others?
CGI?
Modules that work:
mod_env.c mod_negotiation.c mod_autoindex.c mod_dir.c mod_cgi.c
mod_actions.c mod_speling.c mod_userdir.c mod_alias.c
mod_expires.c mod_headers.c mod_so.c mod_setenvif.c
mod_auth_anon.c mod_access.c mod_include.c mod_imap.c
mod_log_config.c mod_asis.c mod_rewrite.c mod_mime.c
mod_usertrack.c mod_unique_id.c mod_cern_meta.c
mod_auth.c (I'm assuming mod_auth* also work)
mod_mime_magic.c mod_status.c mod_mmap_static.c
Mod_proxy