You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modules-dev@httpd.apache.org by Rui Hu <tc...@gmail.com> on 2012/03/02 16:44:39 UTC
one problem about MPM worker
hi,
My apache is running in worker MPM mode. And I wrote a module which uses
ap_get_module_conf and ap_set_module_conf to get & set core_module's data
once a request comes. So I am worried about following three potential
problems.
1. Does every request have a copy of core_module's configuration data?
2. Is there any built-in synchronization mechanism existing in these two
functions?
3. Should I add locking mechanism myself?
Thanks!
Rui Hu
--
Best regards,
Rui Hu
----------------------------------------------------------------------------------------
State Key Laboratory of Networking & Switching Technology
Beijing University of Posts and Telecommunications(BUPT)
MSN: tchrbupt@gmail.com
-----------------------------------------------------------------------------------------
Re: one problem about MPM worker
Posted by Sorin Manolache <so...@gmail.com>.
On 2012-03-02 16:44, Rui Hu wrote:
> hi,
>
> My apache is running in worker MPM mode. And I wrote a module which uses
> ap_get_module_conf and ap_set_module_conf to get& set core_module's data
> once a request comes. So I am worried about following three potential
> problems.
>
> 1. Does every request have a copy of core_module's configuration data?
No. They have pointers to configuration objects.
> 2. Is there any built-in synchronization mechanism existing in these two
> functions?
No.
> 3. Should I add locking mechanism myself?
If I answer strictly to the question, I would say No. ap_set_module_conf
does something like array_of_pointers_to_conf_data_objects[module_index]
= address_of_conf_object.
So it is an assignment in an array. Normally this is done atomically.
If I digress, I would say that I am not sure your approach is safe.
First, configurations more often are read-only. Apache loads them at
startup and they do not change during the life-time of the server.
If you want to use request-specific data, you have other means, such as
r->request_config, r->notes, r->subprocess_env.
Second, it is good practice that modules create and use their own
configuration objects and do not change de configuration objects of
other modules.
Sorin