Mailing List Archive

httpd 2.4.2 - mod_proxy id name not unique
hi,

when mod_proxy currently is generating his "id", the name
of this id is not very unique. So if you have a shared config/
logs dir for more instances, the slotmem-shm files generated in
DefaultRuntimeDir are the same. Bit unlucky if working with shared
file systems.

In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
the following code:
#if 0
id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
#else
id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
#endif

Primarily checked in with
http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749


If activating the first ap_proxy_hashfunc call, the generated names
seem to be unique. Is there any reason this code is not used? Maybe
we can set the "timed" version as default?



best regards,
Zisis
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
Let me look into that... iirc, it was due to us wanting to
be able to persist data between restarts and using the time
as part of the id prevented that. But I could be mis-remembering.

On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:

> hi,
>
> when mod_proxy currently is generating his "id", the name
> of this id is not very unique. So if you have a shared config/
> logs dir for more instances, the slotmem-shm files generated in
> DefaultRuntimeDir are the same. Bit unlucky if working with shared
> file systems.
>
> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
> the following code:
> #if 0
> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
> #else
> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
> #endif
>
> Primarily checked in with
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>
>
> If activating the first ap_proxy_hashfunc call, the generated names
> seem to be unique. Is there any reason this code is not used? Maybe
> we can set the "timed" version as default?
>
>
>
> best regards,
> Zisis
>
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
Hi Jim,

ok, that looks reasonable.

So it would make sense to introduce something like a prefix
directive for "proxy_server_conf->id" (e.g. ProxyConfigIdPrefix)?
Otherwise we could use some unique host property for that prefix?

Also some relative directory directive for all slotmem files
in mod_proxy_balancer would be nice (ap_slotmem_provider_t->create).
Maybe "BalancerSlotmemDir". So DefaultRuntimeDir + BalancerSlotmemDir
would build up the path for the slotmem files.



Best regards,
Zisis

----- Original Message -----
From: "Jim Jagielski" <jim@jaguNET.com>
To: dev@httpd.apache.org
Sent: Tuesday, May 1, 2012 8:43:46 PM
Subject: Re: httpd 2.4.2 - mod_proxy id name not unique

Let me look into that... iirc, it was due to us wanting to
be able to persist data between restarts and using the time
as part of the id prevented that. But I could be mis-remembering.

On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:

> hi,
>
> when mod_proxy currently is generating his "id", the name
> of this id is not very unique. So if you have a shared config/
> logs dir for more instances, the slotmem-shm files generated in
> DefaultRuntimeDir are the same. Bit unlucky if working with shared
> file systems.
>
> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
> the following code:
> #if 0
> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
> #else
> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
> #endif
>
> Primarily checked in with
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>
>
> If activating the first ap_proxy_hashfunc call, the generated names
> seem to be unique. Is there any reason this code is not used? Maybe
> we can set the "timed" version as default?
>
>
>
> best regards,
> Zisis
>
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
Hi Jim,

what do you think about the suggested directives of
"ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
(any other way to solve this problem is also welcome)


Today I just ran into the same problem with httpd-2.4.3.
The apache config/logs directory is shared (NFS) on two
servers - when trying to restart both apache instances
at same time, the last one throws an error:
[proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
[slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
[proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed

When I restart this instance when the first one is up,
the restart is successful.


regards,
Zisis

----- Original Message -----
From: "Jim Jagielski" <jim@jaguNET.com>
To: dev@httpd.apache.org
Sent: Tuesday, May 1, 2012 8:43:46 PM
Subject: Re: httpd 2.4.2 - mod_proxy id name not unique

Let me look into that... iirc, it was due to us wanting to
be able to persist data between restarts and using the time
as part of the id prevented that. But I could be mis-remembering.

On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:

> hi,
>
> when mod_proxy currently is generating his "id", the name
> of this id is not very unique. So if you have a shared config/
> logs dir for more instances, the slotmem-shm files generated in
> DefaultRuntimeDir are the same. Bit unlucky if working with shared
> file systems.
>
> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
> the following code:
> #if 0
> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
> #else
> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
> #endif
>
> Primarily checked in with
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>
>
> If activating the first ap_proxy_hashfunc call, the generated names
> seem to be unique. Is there any reason this code is not used? Maybe
> we can set the "timed" version as default?
>
>
>
> best regards,
> Zisis
>
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
I have to admit, I never really considered that case, but can't
you simply change the default location of the slotmem on one?

On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:

> Hi Jim,
>
> what do you think about the suggested directives of
> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
> (any other way to solve this problem is also welcome)
>
>
> Today I just ran into the same problem with httpd-2.4.3.
> The apache config/logs directory is shared (NFS) on two
> servers - when trying to restart both apache instances
> at same time, the last one throws an error:
> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
> [proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed
>
> When I restart this instance when the first one is up,
> the restart is successful.
>
>
> regards,
> Zisis
>
> ----- Original Message -----
> From: "Jim Jagielski" <jim@jaguNET.com>
> To: dev@httpd.apache.org
> Sent: Tuesday, May 1, 2012 8:43:46 PM
> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>
> Let me look into that... iirc, it was due to us wanting to
> be able to persist data between restarts and using the time
> as part of the id prevented that. But I could be mis-remembering.
>
> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
>
>> hi,
>>
>> when mod_proxy currently is generating his "id", the name
>> of this id is not very unique. So if you have a shared config/
>> logs dir for more instances, the slotmem-shm files generated in
>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
>> file systems.
>>
>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
>> the following code:
>> #if 0
>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
>> #else
>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
>> #endif
>>
>> Primarily checked in with
>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>>
>>
>> If activating the first ap_proxy_hashfunc call, the generated names
>> seem to be unique. Is there any reason this code is not used? Maybe
>> we can set the "timed" version as default?
>>
>>
>>
>> best regards,
>> Zisis
>>
>
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
Currently the default location of the slotmem file
is the "DefaultRuntimeDir", since on slotmem creation
only the "conf->id" is defined as filename:
modules/proxy/mod_proxy_balancer.c, 762:
rv = storage->create(&new, conf->id,
ALIGNED_PROXY_BALANCER_SHARED_SIZE,
conf->max_balancers, AP_SLOTMEM_TYPE_PREGRAB, pconf);

modules/slotmem/mod_slotmem_shm.c, 275:
fname = slotmem_filename(pool, name);

modules/slotmem/mod_slotmem_shm.c, 137:
const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
slotmemname, DEFAULT_SLOTMEM_SUFFIX, NULL);


There is no possibility to customize the shm-filename
resp. the shm-target-directory. Thats a big issue when
working with shared filesystems.

So my idea was to define some shm-target-directory and
slotmemname-prefix in httpd.conf. So e.g. when shm-target-directory
is /shared-fs/logs/shm/ and slotmemname-prefix is `hostname`
(exported as shell variable), the final shm file would be
/shared-fs/logs/shm/slotmem-shm-myhostname-sbf751527.shm.



----- Original Message -----
From: "Jim Jagielski" <jim@jaguNET.com>
To: dev@httpd.apache.org
Sent: Tuesday, September 11, 2012 6:16:08 PM
Subject: Re: httpd 2.4.2 - mod_proxy id name not unique

I have to admit, I never really considered that case, but can't
you simply change the default location of the slotmem on one?

On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:

> Hi Jim,
>
> what do you think about the suggested directives of
> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
> (any other way to solve this problem is also welcome)
>
>
> Today I just ran into the same problem with httpd-2.4.3.
> The apache config/logs directory is shared (NFS) on two
> servers - when trying to restart both apache instances
> at same time, the last one throws an error:
> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
> [proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed
>
> When I restart this instance when the first one is up,
> the restart is successful.
>
>
> regards,
> Zisis
>
> ----- Original Message -----
> From: "Jim Jagielski" <jim@jaguNET.com>
> To: dev@httpd.apache.org
> Sent: Tuesday, May 1, 2012 8:43:46 PM
> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>
> Let me look into that... iirc, it was due to us wanting to
> be able to persist data between restarts and using the time
> as part of the id prevented that. But I could be mis-remembering.
>
> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
>
>> hi,
>>
>> when mod_proxy currently is generating his "id", the name
>> of this id is not very unique. So if you have a shared config/
>> logs dir for more instances, the slotmem-shm files generated in
>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
>> file systems.
>>
>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
>> the following code:
>> #if 0
>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
>> #else
>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
>> #endif
>>
>> Primarily checked in with
>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>>
>>
>> If activating the first ap_proxy_hashfunc call, the generated names
>> seem to be unique. Is there any reason this code is not used? Maybe
>> we can set the "timed" version as default?
>>
>>
>>
>> best regards,
>> Zisis
>>
>
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
Yes, that's the reason why the location of the file can be
user selectable. There's no need to adjust the name when you
can adjust the location/path.

On Sep 12, 2012, at 7:00 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:

> Currently the default location of the slotmem file
> is the "DefaultRuntimeDir", since on slotmem creation
> only the "conf->id" is defined as filename:
> modules/proxy/mod_proxy_balancer.c, 762:
> rv = storage->create(&new, conf->id,
> ALIGNED_PROXY_BALANCER_SHARED_SIZE,
> conf->max_balancers, AP_SLOTMEM_TYPE_PREGRAB, pconf);
>
> modules/slotmem/mod_slotmem_shm.c, 275:
> fname = slotmem_filename(pool, name);
>
> modules/slotmem/mod_slotmem_shm.c, 137:
> const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
> slotmemname, DEFAULT_SLOTMEM_SUFFIX, NULL);
>
>
> There is no possibility to customize the shm-filename
> resp. the shm-target-directory. Thats a big issue when
> working with shared filesystems.
>
> So my idea was to define some shm-target-directory and
> slotmemname-prefix in httpd.conf. So e.g. when shm-target-directory
> is /shared-fs/logs/shm/ and slotmemname-prefix is `hostname`
> (exported as shell variable), the final shm file would be
> /shared-fs/logs/shm/slotmem-shm-myhostname-sbf751527.shm.
>
>
>
> ----- Original Message -----
> From: "Jim Jagielski" <jim@jaguNET.com>
> To: dev@httpd.apache.org
> Sent: Tuesday, September 11, 2012 6:16:08 PM
> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>
> I have to admit, I never really considered that case, but can't
> you simply change the default location of the slotmem on one?
>
> On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>
>> Hi Jim,
>>
>> what do you think about the suggested directives of
>> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
>> (any other way to solve this problem is also welcome)
>>
>>
>> Today I just ran into the same problem with httpd-2.4.3.
>> The apache config/logs directory is shared (NFS) on two
>> servers - when trying to restart both apache instances
>> at same time, the last one throws an error:
>> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
>> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
>> [proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed
>>
>> When I restart this instance when the first one is up,
>> the restart is successful.
>>
>>
>> regards,
>> Zisis
>>
>> ----- Original Message -----
>> From: "Jim Jagielski" <jim@jaguNET.com>
>> To: dev@httpd.apache.org
>> Sent: Tuesday, May 1, 2012 8:43:46 PM
>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>
>> Let me look into that... iirc, it was due to us wanting to
>> be able to persist data between restarts and using the time
>> as part of the id prevented that. But I could be mis-remembering.
>>
>> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
>>
>>> hi,
>>>
>>> when mod_proxy currently is generating his "id", the name
>>> of this id is not very unique. So if you have a shared config/
>>> logs dir for more instances, the slotmem-shm files generated in
>>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
>>> file systems.
>>>
>>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
>>> the following code:
>>> #if 0
>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
>>> #else
>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
>>> #endif
>>>
>>> Primarily checked in with
>>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>>>
>>>
>>> If activating the first ap_proxy_hashfunc call, the generated names
>>> seem to be unique. Is there any reason this code is not used? Maybe
>>> we can set the "timed" version as default?
>>>
>>>
>>>
>>> best regards,
>>> Zisis
>>>
>>
>
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
That's right, but on shared filesystems, "DefaultRuntimeDir"
(logs/) and the non-unique shm-filenames state a problem.

So what do you think about a shm-file-target-directory directive?


----- Original Message -----
From: "Jim Jagielski" <jim@jaguNET.com>
To: dev@httpd.apache.org
Sent: Wednesday, September 12, 2012 2:28:07 PM
Subject: Re: httpd 2.4.2 - mod_proxy id name not unique

Yes, that's the reason why the location of the file can be
user selectable. There's no need to adjust the name when you
can adjust the location/path.

On Sep 12, 2012, at 7:00 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:

> Currently the default location of the slotmem file
> is the "DefaultRuntimeDir", since on slotmem creation
> only the "conf->id" is defined as filename:
> modules/proxy/mod_proxy_balancer.c, 762:
> rv = storage->create(&new, conf->id,
> ALIGNED_PROXY_BALANCER_SHARED_SIZE,
> conf->max_balancers, AP_SLOTMEM_TYPE_PREGRAB, pconf);
>
> modules/slotmem/mod_slotmem_shm.c, 275:
> fname = slotmem_filename(pool, name);
>
> modules/slotmem/mod_slotmem_shm.c, 137:
> const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
> slotmemname, DEFAULT_SLOTMEM_SUFFIX, NULL);
>
>
> There is no possibility to customize the shm-filename
> resp. the shm-target-directory. Thats a big issue when
> working with shared filesystems.
>
> So my idea was to define some shm-target-directory and
> slotmemname-prefix in httpd.conf. So e.g. when shm-target-directory
> is /shared-fs/logs/shm/ and slotmemname-prefix is `hostname`
> (exported as shell variable), the final shm file would be
> /shared-fs/logs/shm/slotmem-shm-myhostname-sbf751527.shm.
>
>
>
> ----- Original Message -----
> From: "Jim Jagielski" <jim@jaguNET.com>
> To: dev@httpd.apache.org
> Sent: Tuesday, September 11, 2012 6:16:08 PM
> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>
> I have to admit, I never really considered that case, but can't
> you simply change the default location of the slotmem on one?
>
> On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>
>> Hi Jim,
>>
>> what do you think about the suggested directives of
>> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
>> (any other way to solve this problem is also welcome)
>>
>>
>> Today I just ran into the same problem with httpd-2.4.3.
>> The apache config/logs directory is shared (NFS) on two
>> servers - when trying to restart both apache instances
>> at same time, the last one throws an error:
>> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
>> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
>> [proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed
>>
>> When I restart this instance when the first one is up,
>> the restart is successful.
>>
>>
>> regards,
>> Zisis
>>
>> ----- Original Message -----
>> From: "Jim Jagielski" <jim@jaguNET.com>
>> To: dev@httpd.apache.org
>> Sent: Tuesday, May 1, 2012 8:43:46 PM
>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>
>> Let me look into that... iirc, it was due to us wanting to
>> be able to persist data between restarts and using the time
>> as part of the id prevented that. But I could be mis-remembering.
>>
>> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
>>
>>> hi,
>>>
>>> when mod_proxy currently is generating his "id", the name
>>> of this id is not very unique. So if you have a shared config/
>>> logs dir for more instances, the slotmem-shm files generated in
>>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
>>> file systems.
>>>
>>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
>>> the following code:
>>> #if 0
>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
>>> #else
>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
>>> #endif
>>>
>>> Primarily checked in with
>>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>>>
>>>
>>> If activating the first ap_proxy_hashfunc call, the generated names
>>> seem to be unique. Is there any reason this code is not used? Maybe
>>> we can set the "timed" version as default?
>>>
>>>
>>>
>>> best regards,
>>> Zisis
>>>
>>
>
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
On Wed, Sep 12, 2012 at 8:40 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
> That's right, but on shared filesystems, "DefaultRuntimeDir"
> (logs/) and the non-unique shm-filenames state a problem.

Clarification: Do you want multiple web server instances to share the
same runtime directory without collisions of individual files in that
directory?

> So what do you think about a shm-file-target-directory directive?
>
>
> ----- Original Message -----
> From: "Jim Jagielski" <jim@jaguNET.com>
> To: dev@httpd.apache.org
> Sent: Wednesday, September 12, 2012 2:28:07 PM
> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>
> Yes, that's the reason why the location of the file can be
> user selectable. There's no need to adjust the name when you
> can adjust the location/path.
>
> On Sep 12, 2012, at 7:00 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>
>> Currently the default location of the slotmem file
>> is the "DefaultRuntimeDir", since on slotmem creation
>> only the "conf->id" is defined as filename:
>> modules/proxy/mod_proxy_balancer.c, 762:
>> rv = storage->create(&new, conf->id,
>> ALIGNED_PROXY_BALANCER_SHARED_SIZE,
>> conf->max_balancers, AP_SLOTMEM_TYPE_PREGRAB, pconf);
>>
>> modules/slotmem/mod_slotmem_shm.c, 275:
>> fname = slotmem_filename(pool, name);
>>
>> modules/slotmem/mod_slotmem_shm.c, 137:
>> const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
>> slotmemname, DEFAULT_SLOTMEM_SUFFIX, NULL);
>>
>>
>> There is no possibility to customize the shm-filename
>> resp. the shm-target-directory. Thats a big issue when
>> working with shared filesystems.
>>
>> So my idea was to define some shm-target-directory and
>> slotmemname-prefix in httpd.conf. So e.g. when shm-target-directory
>> is /shared-fs/logs/shm/ and slotmemname-prefix is `hostname`
>> (exported as shell variable), the final shm file would be
>> /shared-fs/logs/shm/slotmem-shm-myhostname-sbf751527.shm.
>>
>>
>>
>> ----- Original Message -----
>> From: "Jim Jagielski" <jim@jaguNET.com>
>> To: dev@httpd.apache.org
>> Sent: Tuesday, September 11, 2012 6:16:08 PM
>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>
>> I have to admit, I never really considered that case, but can't
>> you simply change the default location of the slotmem on one?
>>
>> On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>>
>>> Hi Jim,
>>>
>>> what do you think about the suggested directives of
>>> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
>>> (any other way to solve this problem is also welcome)
>>>
>>>
>>> Today I just ran into the same problem with httpd-2.4.3.
>>> The apache config/logs directory is shared (NFS) on two
>>> servers - when trying to restart both apache instances
>>> at same time, the last one throws an error:
>>> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
>>> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
>>> [proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed
>>>
>>> When I restart this instance when the first one is up,
>>> the restart is successful.
>>>
>>>
>>> regards,
>>> Zisis
>>>
>>> ----- Original Message -----
>>> From: "Jim Jagielski" <jim@jaguNET.com>
>>> To: dev@httpd.apache.org
>>> Sent: Tuesday, May 1, 2012 8:43:46 PM
>>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>>
>>> Let me look into that... iirc, it was due to us wanting to
>>> be able to persist data between restarts and using the time
>>> as part of the id prevented that. But I could be mis-remembering.
>>>
>>> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
>>>
>>>> hi,
>>>>
>>>> when mod_proxy currently is generating his "id", the name
>>>> of this id is not very unique. So if you have a shared config/
>>>> logs dir for more instances, the slotmem-shm files generated in
>>>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
>>>> file systems.
>>>>
>>>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
>>>> the following code:
>>>> #if 0
>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
>>>> #else
>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
>>>> #endif
>>>>
>>>> Primarily checked in with
>>>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>>>>
>>>>
>>>> If activating the first ap_proxy_hashfunc call, the generated names
>>>> seem to be unique. Is there any reason this code is not used? Maybe
>>>> we can set the "timed" version as default?
>>>>
>>>>
>>>>
>>>> best regards,
>>>> Zisis
>>>>
>>>
>>
>



--
Born in Roswell... married an alien...
http://emptyhammock.com/
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
So on each system that shares a file system, use a different
value for DefaultRuntimeDir.

For example, if the shared mount point is /var/shared/logs
then have /var/shared/logs/system1, /var/shared/logs/system2, etc...

On Sep 12, 2012, at 8:40 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:

> That's right, but on shared filesystems, "DefaultRuntimeDir"
> (logs/) and the non-unique shm-filenames state a problem.
>
> So what do you think about a shm-file-target-directory directive?
>
>
> ----- Original Message -----
> From: "Jim Jagielski" <jim@jaguNET.com>
> To: dev@httpd.apache.org
> Sent: Wednesday, September 12, 2012 2:28:07 PM
> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>
> Yes, that's the reason why the location of the file can be
> user selectable. There's no need to adjust the name when you
> can adjust the location/path.
>
> On Sep 12, 2012, at 7:00 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>
>> Currently the default location of the slotmem file
>> is the "DefaultRuntimeDir", since on slotmem creation
>> only the "conf->id" is defined as filename:
>> modules/proxy/mod_proxy_balancer.c, 762:
>> rv = storage->create(&new, conf->id,
>> ALIGNED_PROXY_BALANCER_SHARED_SIZE,
>> conf->max_balancers, AP_SLOTMEM_TYPE_PREGRAB, pconf);
>>
>> modules/slotmem/mod_slotmem_shm.c, 275:
>> fname = slotmem_filename(pool, name);
>>
>> modules/slotmem/mod_slotmem_shm.c, 137:
>> const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
>> slotmemname, DEFAULT_SLOTMEM_SUFFIX, NULL);
>>
>>
>> There is no possibility to customize the shm-filename
>> resp. the shm-target-directory. Thats a big issue when
>> working with shared filesystems.
>>
>> So my idea was to define some shm-target-directory and
>> slotmemname-prefix in httpd.conf. So e.g. when shm-target-directory
>> is /shared-fs/logs/shm/ and slotmemname-prefix is `hostname`
>> (exported as shell variable), the final shm file would be
>> /shared-fs/logs/shm/slotmem-shm-myhostname-sbf751527.shm.
>>
>>
>>
>> ----- Original Message -----
>> From: "Jim Jagielski" <jim@jaguNET.com>
>> To: dev@httpd.apache.org
>> Sent: Tuesday, September 11, 2012 6:16:08 PM
>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>
>> I have to admit, I never really considered that case, but can't
>> you simply change the default location of the slotmem on one?
>>
>> On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>>
>>> Hi Jim,
>>>
>>> what do you think about the suggested directives of
>>> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
>>> (any other way to solve this problem is also welcome)
>>>
>>>
>>> Today I just ran into the same problem with httpd-2.4.3.
>>> The apache config/logs directory is shared (NFS) on two
>>> servers - when trying to restart both apache instances
>>> at same time, the last one throws an error:
>>> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
>>> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
>>> [proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed
>>>
>>> When I restart this instance when the first one is up,
>>> the restart is successful.
>>>
>>>
>>> regards,
>>> Zisis
>>>
>>> ----- Original Message -----
>>> From: "Jim Jagielski" <jim@jaguNET.com>
>>> To: dev@httpd.apache.org
>>> Sent: Tuesday, May 1, 2012 8:43:46 PM
>>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>>
>>> Let me look into that... iirc, it was due to us wanting to
>>> be able to persist data between restarts and using the time
>>> as part of the id prevented that. But I could be mis-remembering.
>>>
>>> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
>>>
>>>> hi,
>>>>
>>>> when mod_proxy currently is generating his "id", the name
>>>> of this id is not very unique. So if you have a shared config/
>>>> logs dir for more instances, the slotmem-shm files generated in
>>>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
>>>> file systems.
>>>>
>>>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
>>>> the following code:
>>>> #if 0
>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
>>>> #else
>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
>>>> #endif
>>>>
>>>> Primarily checked in with
>>>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>>>>
>>>>
>>>> If activating the first ap_proxy_hashfunc call, the generated names
>>>> seem to be unique. Is there any reason this code is not used? Maybe
>>>> we can set the "timed" version as default?
>>>>
>>>>
>>>>
>>>> best regards,
>>>> Zisis
>>>>
>>>
>>
>
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
That's right, Jeff, that's exactly what I want.

For other directives we never had collisions with a shared
runtime directory (2.0 and 2.2), since we could differ by hostname:
PidFile ${project_home}/logs/apache/${hostname}.httpd.pid
CustomLog ${project_home}/logs/apache/${hostname}.access_log combined env=!dontlog
ErrorLog ${project_home}/logs/apache/${hostname}.error_log


----- Original Message -----
From: "Jeff Trawick" <trawick@gmail.com>
To: dev@httpd.apache.org
Sent: Wednesday, September 12, 2012 2:53:38 PM
Subject: Re: httpd 2.4.2 - mod_proxy id name not unique

On Wed, Sep 12, 2012 at 8:40 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
> That's right, but on shared filesystems, "DefaultRuntimeDir"
> (logs/) and the non-unique shm-filenames state a problem.

Clarification: Do you want multiple web server instances to share the
same runtime directory without collisions of individual files in that
directory?

> So what do you think about a shm-file-target-directory directive?
>
>
> ----- Original Message -----
> From: "Jim Jagielski" <jim@jaguNET.com>
> To: dev@httpd.apache.org
> Sent: Wednesday, September 12, 2012 2:28:07 PM
> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>
> Yes, that's the reason why the location of the file can be
> user selectable. There's no need to adjust the name when you
> can adjust the location/path.
>
> On Sep 12, 2012, at 7:00 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>
>> Currently the default location of the slotmem file
>> is the "DefaultRuntimeDir", since on slotmem creation
>> only the "conf->id" is defined as filename:
>> modules/proxy/mod_proxy_balancer.c, 762:
>> rv = storage->create(&new, conf->id,
>> ALIGNED_PROXY_BALANCER_SHARED_SIZE,
>> conf->max_balancers, AP_SLOTMEM_TYPE_PREGRAB, pconf);
>>
>> modules/slotmem/mod_slotmem_shm.c, 275:
>> fname = slotmem_filename(pool, name);
>>
>> modules/slotmem/mod_slotmem_shm.c, 137:
>> const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
>> slotmemname, DEFAULT_SLOTMEM_SUFFIX, NULL);
>>
>>
>> There is no possibility to customize the shm-filename
>> resp. the shm-target-directory. Thats a big issue when
>> working with shared filesystems.
>>
>> So my idea was to define some shm-target-directory and
>> slotmemname-prefix in httpd.conf. So e.g. when shm-target-directory
>> is /shared-fs/logs/shm/ and slotmemname-prefix is `hostname`
>> (exported as shell variable), the final shm file would be
>> /shared-fs/logs/shm/slotmem-shm-myhostname-sbf751527.shm.
>>
>>
>>
>> ----- Original Message -----
>> From: "Jim Jagielski" <jim@jaguNET.com>
>> To: dev@httpd.apache.org
>> Sent: Tuesday, September 11, 2012 6:16:08 PM
>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>
>> I have to admit, I never really considered that case, but can't
>> you simply change the default location of the slotmem on one?
>>
>> On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>>
>>> Hi Jim,
>>>
>>> what do you think about the suggested directives of
>>> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
>>> (any other way to solve this problem is also welcome)
>>>
>>>
>>> Today I just ran into the same problem with httpd-2.4.3.
>>> The apache config/logs directory is shared (NFS) on two
>>> servers - when trying to restart both apache instances
>>> at same time, the last one throws an error:
>>> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
>>> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
>>> [proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed
>>>
>>> When I restart this instance when the first one is up,
>>> the restart is successful.
>>>
>>>
>>> regards,
>>> Zisis
>>>
>>> ----- Original Message -----
>>> From: "Jim Jagielski" <jim@jaguNET.com>
>>> To: dev@httpd.apache.org
>>> Sent: Tuesday, May 1, 2012 8:43:46 PM
>>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>>
>>> Let me look into that... iirc, it was due to us wanting to
>>> be able to persist data between restarts and using the time
>>> as part of the id prevented that. But I could be mis-remembering.
>>>
>>> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
>>>
>>>> hi,
>>>>
>>>> when mod_proxy currently is generating his "id", the name
>>>> of this id is not very unique. So if you have a shared config/
>>>> logs dir for more instances, the slotmem-shm files generated in
>>>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
>>>> file systems.
>>>>
>>>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
>>>> the following code:
>>>> #if 0
>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
>>>> #else
>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
>>>> #endif
>>>>
>>>> Primarily checked in with
>>>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>>>>
>>>>
>>>> If activating the first ap_proxy_hashfunc call, the generated names
>>>> seem to be unique. Is there any reason this code is not used? Maybe
>>>> we can set the "timed" version as default?
>>>>
>>>>
>>>>
>>>> best regards,
>>>> Zisis
>>>>
>>>
>>
>



--
Born in Roswell... married an alien...
http://emptyhammock.com/
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
On Wed, Sep 12, 2012 at 9:31 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
> That's right, Jeff, that's exactly what I want.
>
> For other directives we never had collisions with a shared
> runtime directory (2.0 and 2.2), since we could differ by hostname:
> PidFile ${project_home}/logs/apache/${hostname}.httpd.pid
> CustomLog ${project_home}/logs/apache/${hostname}.access_log combined env=!dontlog
> ErrorLog ${project_home}/logs/apache/${hostname}.error_log

I don't think that exact pattern is going to be possible with all
run-time files. It should be easy enough to make ${hostname} refer to
a directory, at which point DefaultRuntimeDir fits in.

There's an ever-growing set of run-time files, and traditionally these
were inconsistent in their default location (/tmp?
DEFAULT_RUNTIME_DIR? logs?), configurability (related directive or
not), and instance-specific naming (including pid in the filename or
not). It isn't practical for us to continue with the endless
configuration of each individual item, and DefaultRuntimeDir should be
the way these are configured* when a single compiled-in directory
isn't appropriate.

Run-time files are special in that they often need to be moved as a
group to a different filesystem because of the filesystem
implementation (e.g., move way from some shared filesystem that
doesn't implement locking or Unix sockets, move to a RAM-based
filesystem for speed and automatic cleanup on reboot, whatever).
DefaultRuntimeDir makes that easy.

*Unfortunately, DefaultRuntimeDir isn't respected throughout 2.4.x.
There are even a few run-time files in trunk that don't respect it.


>
>
> ----- Original Message -----
> From: "Jeff Trawick" <trawick@gmail.com>
> To: dev@httpd.apache.org
> Sent: Wednesday, September 12, 2012 2:53:38 PM
> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>
> On Wed, Sep 12, 2012 at 8:40 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>> That's right, but on shared filesystems, "DefaultRuntimeDir"
>> (logs/) and the non-unique shm-filenames state a problem.
>
> Clarification: Do you want multiple web server instances to share the
> same runtime directory without collisions of individual files in that
> directory?
>
>> So what do you think about a shm-file-target-directory directive?
>>
>>
>> ----- Original Message -----
>> From: "Jim Jagielski" <jim@jaguNET.com>
>> To: dev@httpd.apache.org
>> Sent: Wednesday, September 12, 2012 2:28:07 PM
>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>
>> Yes, that's the reason why the location of the file can be
>> user selectable. There's no need to adjust the name when you
>> can adjust the location/path.
>>
>> On Sep 12, 2012, at 7:00 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>>
>>> Currently the default location of the slotmem file
>>> is the "DefaultRuntimeDir", since on slotmem creation
>>> only the "conf->id" is defined as filename:
>>> modules/proxy/mod_proxy_balancer.c, 762:
>>> rv = storage->create(&new, conf->id,
>>> ALIGNED_PROXY_BALANCER_SHARED_SIZE,
>>> conf->max_balancers, AP_SLOTMEM_TYPE_PREGRAB, pconf);
>>>
>>> modules/slotmem/mod_slotmem_shm.c, 275:
>>> fname = slotmem_filename(pool, name);
>>>
>>> modules/slotmem/mod_slotmem_shm.c, 137:
>>> const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
>>> slotmemname, DEFAULT_SLOTMEM_SUFFIX, NULL);
>>>
>>>
>>> There is no possibility to customize the shm-filename
>>> resp. the shm-target-directory. Thats a big issue when
>>> working with shared filesystems.
>>>
>>> So my idea was to define some shm-target-directory and
>>> slotmemname-prefix in httpd.conf. So e.g. when shm-target-directory
>>> is /shared-fs/logs/shm/ and slotmemname-prefix is `hostname`
>>> (exported as shell variable), the final shm file would be
>>> /shared-fs/logs/shm/slotmem-shm-myhostname-sbf751527.shm.
>>>
>>>
>>>
>>> ----- Original Message -----
>>> From: "Jim Jagielski" <jim@jaguNET.com>
>>> To: dev@httpd.apache.org
>>> Sent: Tuesday, September 11, 2012 6:16:08 PM
>>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>>
>>> I have to admit, I never really considered that case, but can't
>>> you simply change the default location of the slotmem on one?
>>>
>>> On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>>>
>>>> Hi Jim,
>>>>
>>>> what do you think about the suggested directives of
>>>> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
>>>> (any other way to solve this problem is also welcome)
>>>>
>>>>
>>>> Today I just ran into the same problem with httpd-2.4.3.
>>>> The apache config/logs directory is shared (NFS) on two
>>>> servers - when trying to restart both apache instances
>>>> at same time, the last one throws an error:
>>>> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
>>>> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
>>>> [proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed
>>>>
>>>> When I restart this instance when the first one is up,
>>>> the restart is successful.
>>>>
>>>>
>>>> regards,
>>>> Zisis
>>>>
>>>> ----- Original Message -----
>>>> From: "Jim Jagielski" <jim@jaguNET.com>
>>>> To: dev@httpd.apache.org
>>>> Sent: Tuesday, May 1, 2012 8:43:46 PM
>>>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>>>
>>>> Let me look into that... iirc, it was due to us wanting to
>>>> be able to persist data between restarts and using the time
>>>> as part of the id prevented that. But I could be mis-remembering.
>>>>
>>>> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
>>>>
>>>>> hi,
>>>>>
>>>>> when mod_proxy currently is generating his "id", the name
>>>>> of this id is not very unique. So if you have a shared config/
>>>>> logs dir for more instances, the slotmem-shm files generated in
>>>>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
>>>>> file systems.
>>>>>
>>>>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
>>>>> the following code:
>>>>> #if 0
>>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
>>>>> #else
>>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
>>>>> #endif
>>>>>
>>>>> Primarily checked in with
>>>>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>>>>>
>>>>>
>>>>> If activating the first ap_proxy_hashfunc call, the generated names
>>>>> seem to be unique. Is there any reason this code is not used? Maybe
>>>>> we can set the "timed" version as default?
>>>>>
>>>>>
>>>>>
>>>>> best regards,
>>>>> Zisis
>>>>>
>>>>
>>>
>>
>
>
>
> --
> Born in Roswell... married an alien...
> http://emptyhammock.com/



--
Born in Roswell... married an alien...
http://emptyhammock.com/
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
Ok, got it. So I will have to change the solution for 2.4 as
Jim described it (/var/shared/logs/system1, /var/shared/logs/system2, ...).

Jeff, Jim, thanks for your feedback.


----- Original Message -----
From: "Jeff Trawick" <trawick@gmail.com>
To: dev@httpd.apache.org
Sent: Wednesday, September 12, 2012 3:45:44 PM
Subject: Re: httpd 2.4.2 - mod_proxy id name not unique

On Wed, Sep 12, 2012 at 9:31 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
> That's right, Jeff, that's exactly what I want.
>
> For other directives we never had collisions with a shared
> runtime directory (2.0 and 2.2), since we could differ by hostname:
> PidFile ${project_home}/logs/apache/${hostname}.httpd.pid
> CustomLog ${project_home}/logs/apache/${hostname}.access_log combined env=!dontlog
> ErrorLog ${project_home}/logs/apache/${hostname}.error_log

I don't think that exact pattern is going to be possible with all
run-time files. It should be easy enough to make ${hostname} refer to
a directory, at which point DefaultRuntimeDir fits in.

There's an ever-growing set of run-time files, and traditionally these
were inconsistent in their default location (/tmp?
DEFAULT_RUNTIME_DIR? logs?), configurability (related directive or
not), and instance-specific naming (including pid in the filename or
not). It isn't practical for us to continue with the endless
configuration of each individual item, and DefaultRuntimeDir should be
the way these are configured* when a single compiled-in directory
isn't appropriate.

Run-time files are special in that they often need to be moved as a
group to a different filesystem because of the filesystem
implementation (e.g., move way from some shared filesystem that
doesn't implement locking or Unix sockets, move to a RAM-based
filesystem for speed and automatic cleanup on reboot, whatever).
DefaultRuntimeDir makes that easy.

*Unfortunately, DefaultRuntimeDir isn't respected throughout 2.4.x.
There are even a few run-time files in trunk that don't respect it.


>
>
> ----- Original Message -----
> From: "Jeff Trawick" <trawick@gmail.com>
> To: dev@httpd.apache.org
> Sent: Wednesday, September 12, 2012 2:53:38 PM
> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>
> On Wed, Sep 12, 2012 at 8:40 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>> That's right, but on shared filesystems, "DefaultRuntimeDir"
>> (logs/) and the non-unique shm-filenames state a problem.
>
> Clarification: Do you want multiple web server instances to share the
> same runtime directory without collisions of individual files in that
> directory?
>
>> So what do you think about a shm-file-target-directory directive?
>>
>>
>> ----- Original Message -----
>> From: "Jim Jagielski" <jim@jaguNET.com>
>> To: dev@httpd.apache.org
>> Sent: Wednesday, September 12, 2012 2:28:07 PM
>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>
>> Yes, that's the reason why the location of the file can be
>> user selectable. There's no need to adjust the name when you
>> can adjust the location/path.
>>
>> On Sep 12, 2012, at 7:00 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>>
>>> Currently the default location of the slotmem file
>>> is the "DefaultRuntimeDir", since on slotmem creation
>>> only the "conf->id" is defined as filename:
>>> modules/proxy/mod_proxy_balancer.c, 762:
>>> rv = storage->create(&new, conf->id,
>>> ALIGNED_PROXY_BALANCER_SHARED_SIZE,
>>> conf->max_balancers, AP_SLOTMEM_TYPE_PREGRAB, pconf);
>>>
>>> modules/slotmem/mod_slotmem_shm.c, 275:
>>> fname = slotmem_filename(pool, name);
>>>
>>> modules/slotmem/mod_slotmem_shm.c, 137:
>>> const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
>>> slotmemname, DEFAULT_SLOTMEM_SUFFIX, NULL);
>>>
>>>
>>> There is no possibility to customize the shm-filename
>>> resp. the shm-target-directory. Thats a big issue when
>>> working with shared filesystems.
>>>
>>> So my idea was to define some shm-target-directory and
>>> slotmemname-prefix in httpd.conf. So e.g. when shm-target-directory
>>> is /shared-fs/logs/shm/ and slotmemname-prefix is `hostname`
>>> (exported as shell variable), the final shm file would be
>>> /shared-fs/logs/shm/slotmem-shm-myhostname-sbf751527.shm.
>>>
>>>
>>>
>>> ----- Original Message -----
>>> From: "Jim Jagielski" <jim@jaguNET.com>
>>> To: dev@httpd.apache.org
>>> Sent: Tuesday, September 11, 2012 6:16:08 PM
>>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>>
>>> I have to admit, I never really considered that case, but can't
>>> you simply change the default location of the slotmem on one?
>>>
>>> On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de> wrote:
>>>
>>>> Hi Jim,
>>>>
>>>> what do you think about the suggested directives of
>>>> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
>>>> (any other way to solve this problem is also welcome)
>>>>
>>>>
>>>> Today I just ran into the same problem with httpd-2.4.3.
>>>> The apache config/logs directory is shared (NFS) on two
>>>> servers - when trying to restart both apache instances
>>>> at same time, the last one throws an error:
>>>> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing balancers create: 544,1 (6)
>>>> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create /apache/logs/slotmem-shm-sbf751527.shm: 544/6
>>>> [proxy_balancer:emerg] (17)File exists: AH01179: balancer slotmem_create failed
>>>>
>>>> When I restart this instance when the first one is up,
>>>> the restart is successful.
>>>>
>>>>
>>>> regards,
>>>> Zisis
>>>>
>>>> ----- Original Message -----
>>>> From: "Jim Jagielski" <jim@jaguNET.com>
>>>> To: dev@httpd.apache.org
>>>> Sent: Tuesday, May 1, 2012 8:43:46 PM
>>>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
>>>>
>>>> Let me look into that... iirc, it was due to us wanting to
>>>> be able to persist data between restarts and using the time
>>>> as part of the id prevented that. But I could be mis-remembering.
>>>>
>>>> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
>>>>
>>>>> hi,
>>>>>
>>>>> when mod_proxy currently is generating his "id", the name
>>>>> of this id is not very unique. So if you have a shared config/
>>>>> logs dir for more instances, the slotmem-shm files generated in
>>>>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
>>>>> file systems.
>>>>>
>>>>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
>>>>> the following code:
>>>>> #if 0
>>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps, apr_time_now()), PROXY_HASHFUNC_DEFAULT);
>>>>> #else
>>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps), PROXY_HASHFUNC_DEFAULT);
>>>>> #endif
>>>>>
>>>>> Primarily checked in with
>>>>> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
>>>>>
>>>>>
>>>>> If activating the first ap_proxy_hashfunc call, the generated names
>>>>> seem to be unique. Is there any reason this code is not used? Maybe
>>>>> we can set the "timed" version as default?
>>>>>
>>>>>
>>>>>
>>>>> best regards,
>>>>> Zisis
>>>>>
>>>>
>>>
>>
>
>
>
> --
> Born in Roswell... married an alien...
> http://emptyhammock.com/



--
Born in Roswell... married an alien...
http://emptyhammock.com/
Re: httpd 2.4.2 - mod_proxy id name not unique [ In reply to ]
just my two cents: but would not ${localstatedir} perhaps followed by
hostname (or even (vhost) ServerName for virtual hosts be a nice default
path (and of course give a configureable widgit for anyone who does not
want to use a default.

Things that used to go to /tmp could go to something like
${localstatedir}/${servername}/tmp - etc.

On Wed, Sep 12, 2012 at 3:45 PM, Jeff Trawick <trawick@gmail.com> wrote:

> On Wed, Sep 12, 2012 at 9:31 AM, Zisis Lianas <Zisis.Lianas@consol.de>
> wrote:
> > That's right, Jeff, that's exactly what I want.
> >
> > For other directives we never had collisions with a shared
> > runtime directory (2.0 and 2.2), since we could differ by hostname:
> > PidFile ${project_home}/logs/apache/${hostname}.httpd.pid
> > CustomLog ${project_home}/logs/apache/${hostname}.access_log combined
> env=!dontlog
> > ErrorLog ${project_home}/logs/apache/${hostname}.error_log
>
> I don't think that exact pattern is going to be possible with all
> run-time files. It should be easy enough to make ${hostname} refer to
> a directory, at which point DefaultRuntimeDir fits in.
>
> There's an ever-growing set of run-time files, and traditionally these
> were inconsistent in their default location (/tmp?
> DEFAULT_RUNTIME_DIR? logs?), configurability (related directive or
> not), and instance-specific naming (including pid in the filename or
> not). It isn't practical for us to continue with the endless
> configuration of each individual item, and DefaultRuntimeDir should be
> the way these are configured* when a single compiled-in directory
> isn't appropriate.
>
> Run-time files are special in that they often need to be moved as a
> group to a different filesystem because of the filesystem
> implementation (e.g., move way from some shared filesystem that
> doesn't implement locking or Unix sockets, move to a RAM-based
> filesystem for speed and automatic cleanup on reboot, whatever).
> DefaultRuntimeDir makes that easy.
>
> *Unfortunately, DefaultRuntimeDir isn't respected throughout 2.4.x.
> There are even a few run-time files in trunk that don't respect it.
>
>
> >
> >
> > ----- Original Message -----
> > From: "Jeff Trawick" <trawick@gmail.com>
> > To: dev@httpd.apache.org
> > Sent: Wednesday, September 12, 2012 2:53:38 PM
> > Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
> >
> > On Wed, Sep 12, 2012 at 8:40 AM, Zisis Lianas <Zisis.Lianas@consol.de>
> wrote:
> >> That's right, but on shared filesystems, "DefaultRuntimeDir"
> >> (logs/) and the non-unique shm-filenames state a problem.
> >
> > Clarification: Do you want multiple web server instances to share the
> > same runtime directory without collisions of individual files in that
> > directory?
> >
> >> So what do you think about a shm-file-target-directory directive?
> >>
> >>
> >> ----- Original Message -----
> >> From: "Jim Jagielski" <jim@jaguNET.com>
> >> To: dev@httpd.apache.org
> >> Sent: Wednesday, September 12, 2012 2:28:07 PM
> >> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
> >>
> >> Yes, that's the reason why the location of the file can be
> >> user selectable. There's no need to adjust the name when you
> >> can adjust the location/path.
> >>
> >> On Sep 12, 2012, at 7:00 AM, Zisis Lianas <Zisis.Lianas@consol.de>
> wrote:
> >>
> >>> Currently the default location of the slotmem file
> >>> is the "DefaultRuntimeDir", since on slotmem creation
> >>> only the "conf->id" is defined as filename:
> >>> modules/proxy/mod_proxy_balancer.c, 762:
> >>> rv = storage->create(&new, conf->id,
> >>> ALIGNED_PROXY_BALANCER_SHARED_SIZE,
> >>> conf->max_balancers, AP_SLOTMEM_TYPE_PREGRAB,
> pconf);
> >>>
> >>> modules/slotmem/mod_slotmem_shm.c, 275:
> >>> fname = slotmem_filename(pool, name);
> >>>
> >>> modules/slotmem/mod_slotmem_shm.c, 137:
> >>> const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
> >>> slotmemname, DEFAULT_SLOTMEM_SUFFIX,
> NULL);
> >>>
> >>>
> >>> There is no possibility to customize the shm-filename
> >>> resp. the shm-target-directory. Thats a big issue when
> >>> working with shared filesystems.
> >>>
> >>> So my idea was to define some shm-target-directory and
> >>> slotmemname-prefix in httpd.conf. So e.g. when shm-target-directory
> >>> is /shared-fs/logs/shm/ and slotmemname-prefix is `hostname`
> >>> (exported as shell variable), the final shm file would be
> >>> /shared-fs/logs/shm/slotmem-shm-myhostname-sbf751527.shm.
> >>>
> >>>
> >>>
> >>> ----- Original Message -----
> >>> From: "Jim Jagielski" <jim@jaguNET.com>
> >>> To: dev@httpd.apache.org
> >>> Sent: Tuesday, September 11, 2012 6:16:08 PM
> >>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
> >>>
> >>> I have to admit, I never really considered that case, but can't
> >>> you simply change the default location of the slotmem on one?
> >>>
> >>> On Sep 11, 2012, at 10:01 AM, Zisis Lianas <Zisis.Lianas@consol.de>
> wrote:
> >>>
> >>>> Hi Jim,
> >>>>
> >>>> what do you think about the suggested directives of
> >>>> "ProxyConfigIdPrefix" and "BalancerSlotmemDir"?
> >>>> (any other way to solve this problem is also welcome)
> >>>>
> >>>>
> >>>> Today I just ran into the same problem with httpd-2.4.3.
> >>>> The apache config/logs directory is shared (NFS) on two
> >>>> servers - when trying to restart both apache instances
> >>>> at same time, the last one throws an error:
> >>>> [proxy_balancer:debug] mod_proxy_balancer.c(760): AH01178: Doing
> balancers create: 544,1 (6)
> >>>> [slotmem_shm:debug] mod_slotmem_shm.c(300): AH02300: create
> /apache/logs/slotmem-shm-sbf751527.shm: 544/6
> >>>> [proxy_balancer:emerg] (17)File exists: AH01179: balancer
> slotmem_create failed
> >>>>
> >>>> When I restart this instance when the first one is up,
> >>>> the restart is successful.
> >>>>
> >>>>
> >>>> regards,
> >>>> Zisis
> >>>>
> >>>> ----- Original Message -----
> >>>> From: "Jim Jagielski" <jim@jaguNET.com>
> >>>> To: dev@httpd.apache.org
> >>>> Sent: Tuesday, May 1, 2012 8:43:46 PM
> >>>> Subject: Re: httpd 2.4.2 - mod_proxy id name not unique
> >>>>
> >>>> Let me look into that... iirc, it was due to us wanting to
> >>>> be able to persist data between restarts and using the time
> >>>> as part of the id prevented that. But I could be mis-remembering.
> >>>>
> >>>> On Apr 30, 2012, at 7:50 AM, Zisis Lianas wrote:
> >>>>
> >>>>> hi,
> >>>>>
> >>>>> when mod_proxy currently is generating his "id", the name
> >>>>> of this id is not very unique. So if you have a shared config/
> >>>>> logs dir for more instances, the slotmem-shm files generated in
> >>>>> DefaultRuntimeDir are the same. Bit unlucky if working with shared
> >>>>> file systems.
> >>>>>
> >>>>> In httpd-2.4.2/modules/proxy/mod_proxy.c line 1146 I can see
> >>>>> the following code:
> >>>>> #if 0
> >>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp-%" APR_TIME_T_FMT, ps,
> apr_time_now()), PROXY_HASHFUNC_DEFAULT);
> >>>>> #else
> >>>>> id = ap_proxy_hashfunc(apr_psprintf(p, "%pp", ps),
> PROXY_HASHFUNC_DEFAULT);
> >>>>> #endif
> >>>>>
> >>>>> Primarily checked in with
> >>>>>
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.c?r1=1065749&r2=1065748&pathrev=1065749
> >>>>>
> >>>>>
> >>>>> If activating the first ap_proxy_hashfunc call, the generated names
> >>>>> seem to be unique. Is there any reason this code is not used? Maybe
> >>>>> we can set the "timed" version as default?
> >>>>>
> >>>>>
> >>>>>
> >>>>> best regards,
> >>>>> Zisis
> >>>>>
> >>>>
> >>>
> >>
> >
> >
> >
> > --
> > Born in Roswell... married an alien...
> > http://emptyhammock.com/
>
>
>
> --
> Born in Roswell... married an alien...
> http://emptyhammock.com/
>