httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sorin Manolache" <sor...@gmail.com>
Subject Re: Process Initialization State - The finer points?
Date Sun, 30 Nov 2008 13:12:02 GMT
On Sun, Nov 30, 2008 at 14:04, Olov Andersson <olov.andersson@gmail.com> wrote:
> Hello.
>
> I am converting an Apache 1.3 one-thread-per-process module to an Apache2
> worker multi-thread multi-process environment. I need to retain some
> internal connections between outside client connections. To do this in the
> most efficient manner seems to be using an apr_reslist per *process* with
> pooled connections. So far so good, but I need to initialize this pool, and
> I'm a bit uncertain of the module initilization state.
>
> Assuming it is running on UNIX, is the following correct?
> 1) You need to allocate the reslist with connections in a child_init hook.
> 2) Put it in the process pool to have it properly shut down at process exit.
>
> Which takes me to the tricky part:
> 3) Is the child_init hook only run *one time per process* by *one* thread
> ever?

Yes.

> I guess best way to fix this otherwise would be with a mutex on an
> init state variable?
> 4) Are children forked from a *dormant* parent process that is *never* used
> to serve requests and has *not* run child_init?

Yes.

> Therefore children will have
> no connections/file descriptors or any state dependent on
> child_init inherited at all? Otherwise if processes are forked with an
> existing connection reslist, the only thing I can think of for knowing when
> to (re-)initialize the connection reslist is to keep track of with which
> process ID it was initialized.
>
> Any guidance greately appreciated.
>
> Regards,
>  Olov
>

Mime
View raw message