Apache 0.5.1 seems to be a reasonably stable piece of software, and if
we were working in isolation, it would be a fairly strong candidate
for beta 1. However, we aren't working in isolation, so a few issues
come up, if we're actually going to do that in the next few days,
mostly regarding how we relate to NCSA 1.4 (which may also be released
in pretty much the same time frame).
1) The whole forking/non-forking thing. As a side project, mention of
which has shown up here from time to time, I've been working on
integrating the non-forking stuff from NCSA 1.4 (basically, their
httpd.c) with Apache.
Our current nameserver cache has to go, unfortunately (it relies on
each process being handled by a new child which inherits a recent
copy of the parent's memory), but the rest of the code seems to
work OK. I've actually been running a non-forking Apache
configuration since Sunday, and aside from one untoward incident
when it ran out of file descriptors on a restart (since fixed), it
has given me no trouble --- in particular, I haven't seen the
mysterious core dumps which have been reported for the real 1.4.
(FWIW, Rob H. has reported a ~60-byte per transaction memory leak
in my non-forking Apache; however, when he tried to duplicate this
with the real 1.4, it blew up completely after fifty-odd requests.
Brandon --- you might want to look at this; it's a bit more serious
than the garden-variety memory leak Rob advertised it as when he
submitted the report).
Our options, as I see them ---
a) release a non-forking thing now, with promise of a forking
server to come "soon after NCSA releases 1.4".
b) wait until NCSA releases 1.4, and then release our code
Personally, I wouldn't feel comfortable releasing the forking code
yet --- for one thing, it would feel odd to be releasing 1.4 code
to the general public before they do (although it would be labeled
beta in both cases). However, it's possible that reasonable people
will disagree.
(Besides, I'd feel a bit more comfortable with letting it loose on
the general public if it had run on at least one fairly busy server
other than mine; either HotWired or Cardiff would be nice...).
2) Compatibility. Current versions (i.e., the *most* recent betas) of
1.4 have the following features which we *don't* support, or do
differently. Our current draft public docs page says we expect to
be plug-compatible with 1.4, so we have to deal with the following
somehow:
a) Some of the script variables we now both set on error redirects
have different names (ERROR_foo vs. REDIRECT_foo --- we have the
latter names because we set them as well when a script redirects
to another local script).
b) RefererLog, UserAgentLog --- I don't think these are a terribly
good idea, but if we really want to be plug compatible with 1.4,
we're stuck with them.
c) There's (experimental?) support for group annotation of some
sort --- so far, it seems to consist only of having an
annotation server named in the config files, and jamming its URL
into the MIME headers on returned documents. We may not even
want to support this until it's documented and stabilized, but
it's there.
Hope I haven't missed anything...
3) I really would like the APB code in our first public release.
(NB this may involve nontrivial coding --- most of my code looks
pretty much like, well, Apache, but httpd.c is taken more or less
from 1.4, and looks rather different. I think there is a 1.4
version of the APB patches out there, which might help adapting
it).
4) It would also be nice to do something about getting the nameserver
cache back in to the non-forking code, for when we release it,
whenever that is. I do have my old shared-memory code, which I've
since dinked a bit to be more portable, but I haven't had time to
test the revised version.
Any thoughts from anyone would be appreciated...
rst
we were working in isolation, it would be a fairly strong candidate
for beta 1. However, we aren't working in isolation, so a few issues
come up, if we're actually going to do that in the next few days,
mostly regarding how we relate to NCSA 1.4 (which may also be released
in pretty much the same time frame).
1) The whole forking/non-forking thing. As a side project, mention of
which has shown up here from time to time, I've been working on
integrating the non-forking stuff from NCSA 1.4 (basically, their
httpd.c) with Apache.
Our current nameserver cache has to go, unfortunately (it relies on
each process being handled by a new child which inherits a recent
copy of the parent's memory), but the rest of the code seems to
work OK. I've actually been running a non-forking Apache
configuration since Sunday, and aside from one untoward incident
when it ran out of file descriptors on a restart (since fixed), it
has given me no trouble --- in particular, I haven't seen the
mysterious core dumps which have been reported for the real 1.4.
(FWIW, Rob H. has reported a ~60-byte per transaction memory leak
in my non-forking Apache; however, when he tried to duplicate this
with the real 1.4, it blew up completely after fifty-odd requests.
Brandon --- you might want to look at this; it's a bit more serious
than the garden-variety memory leak Rob advertised it as when he
submitted the report).
Our options, as I see them ---
a) release a non-forking thing now, with promise of a forking
server to come "soon after NCSA releases 1.4".
b) wait until NCSA releases 1.4, and then release our code
Personally, I wouldn't feel comfortable releasing the forking code
yet --- for one thing, it would feel odd to be releasing 1.4 code
to the general public before they do (although it would be labeled
beta in both cases). However, it's possible that reasonable people
will disagree.
(Besides, I'd feel a bit more comfortable with letting it loose on
the general public if it had run on at least one fairly busy server
other than mine; either HotWired or Cardiff would be nice...).
2) Compatibility. Current versions (i.e., the *most* recent betas) of
1.4 have the following features which we *don't* support, or do
differently. Our current draft public docs page says we expect to
be plug-compatible with 1.4, so we have to deal with the following
somehow:
a) Some of the script variables we now both set on error redirects
have different names (ERROR_foo vs. REDIRECT_foo --- we have the
latter names because we set them as well when a script redirects
to another local script).
b) RefererLog, UserAgentLog --- I don't think these are a terribly
good idea, but if we really want to be plug compatible with 1.4,
we're stuck with them.
c) There's (experimental?) support for group annotation of some
sort --- so far, it seems to consist only of having an
annotation server named in the config files, and jamming its URL
into the MIME headers on returned documents. We may not even
want to support this until it's documented and stabilized, but
it's there.
Hope I haven't missed anything...
3) I really would like the APB code in our first public release.
(NB this may involve nontrivial coding --- most of my code looks
pretty much like, well, Apache, but httpd.c is taken more or less
from 1.4, and looks rather different. I think there is a 1.4
version of the APB patches out there, which might help adapting
it).
4) It would also be nice to do something about getting the nameserver
cache back in to the non-forking code, for when we release it,
whenever that is. I do have my old shared-memory code, which I've
since dinked a bit to be more portable, but I haven't had time to
test the revised version.
Any thoughts from anyone would be appreciated...
rst