Re: httpd 2.4.2 - mod_proxy id name not unique
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 traw...@gmail.com wrote: On Wed, Sep 12, 2012 at 9:31 AM, Zisis Lianas zisis.lia...@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 traw...@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.lia...@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 j...@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.lia...@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 j...@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.lia...@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
Re: httpd 2.4.2 - mod_proxy id name not unique
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 j...@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.lia...@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 j...@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=1065749r2=1065748pathrev=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
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.lia...@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 j...@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.lia...@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 j...@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=1065749r2=1065748pathrev=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
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 j...@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.lia...@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 j...@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.lia...@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 j...@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=1065749r2=1065748pathrev=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
On Wed, Sep 12, 2012 at 8:40 AM, Zisis Lianas zisis.lia...@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 j...@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.lia...@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 j...@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.lia...@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 j...@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=1065749r2=1065748pathrev=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
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.lia...@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 j...@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.lia...@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 j...@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.lia...@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 j...@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=1065749r2=1065748pathrev=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
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 traw...@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.lia...@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 j...@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.lia...@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 j...@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.lia...@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 j...@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=1065749r2=1065748pathrev=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
Re: httpd 2.4.2 - mod_proxy id name not unique
On Wed, Sep 12, 2012 at 9:31 AM, Zisis Lianas zisis.lia...@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 traw...@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.lia...@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 j...@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.lia...@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 j...@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.lia...@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 j...@jagunet.com
Re: httpd 2.4.2 - mod_proxy id name not unique
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 traw...@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.lia...@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 traw...@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.lia...@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 j...@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.lia...@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 j...@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.lia...@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
Re: httpd 2.4.2 - mod_proxy id name not unique
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 j...@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=1065749r2=1065748pathrev=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
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.lia...@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 j...@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=1065749r2=1065748pathrev=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
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 j...@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=1065749r2=1065748pathrev=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
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=1065749r2=1065748pathrev=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