Re: mod_fcgid: different instances of the same program

2009-11-16 Thread Danny Sadinoff
On Tue, Nov 10, 2009 at 1:47 AM, Danny Sadinoff da...@sadinoff.com wrote:

 On Tue, Nov 10, 2009 at 12:53 AM, Jeff Trawick traw...@gmail.com wrote:
 
  On Mon, Nov 9, 2009 at 5:16 PM, Danny Sadinoff danny.sadin...@gmail.com
 wrote:
   2) Virtual hosts
   The above item holds true even across virtual hosts.   So while
   it's possible to adjust the FcgidInitialEnv items on a per-vhost
   basis, this is a recipe for disaster if two vhosts point at the same
   fcgi executable, because the resulting processes with potentially
   different Environments will be inserted into the same pool.  Once that
   occurs, we may expect that a server spawned with config defined in
   vhost A will be parcelled out to vhost B.
 
  Where does this occur?  Entries in the process table are distinguished
  by virtual host.  (I think the implementation of this check is broken,
  in that it requires that ServerName is set in the virtual hosts.  Are
  you using a simple test config that doesn't have ServerName set?)

 My case is not yet simple.  I'll get back to you.


It turns out that the problem was that I was using mod_fcgid-2.2   Upgrading
to mod_fcigd-2.3.4 fixed the problem. I apologize for the noise.

Should this item (vhost independence) be added to the upgrade notes section?
Are new features in mod_fcgid going to be manifest in the documentation in
general?

-- 
Danny Sadinoff
da...@sadinoff.com


mod_fcgid: different instances of the same program

2009-11-09 Thread Danny Sadinoff
Here are two details of mod_fcgid process management that I've just
learned after a long debug session and squinting at the mod_fcgid
code.

1) symlinks  you.
It seems that mod_fcgid identifies fcgid programs by inode and device,
not by filename.  So two fcgid programs invoked by the webserver
along different paths will be counted as the same if the two paths are
hardlinks or softlinks to each other.

2) Virtual hosts
The above item holds true even across virtual hosts.   So while
it's possible to adjust the FcgidInitialEnv items on a per-vhost
basis, this is a recipe for disaster if two vhosts point at the same
fcgi executable, because the resulting processes with potentially
different Environments will be inserted into the same pool.  Once that
occurs, we may expect that a server spawned with config defined in
vhost A will be parcelled out to vhost B.


The Apache httpd 2.3 docs do not address the symlink issue at all, and
the virtual host issue only indirectly.
http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html


I'd appreciate it if someone could confirm or deny the above.  If I'm
right, can we add it to the docs?  None of it seems obvious to me.
Apologies in advance if this is the sort of thing that belongs on the
dev list.  I'm happy to throw together a doc patch.

Thanks in advance

P.S. having a lot of trouble getting this message posted to the list.  Not
sure what's up with that.

--
Danny Sadinoff
da...@sadinoff.com


Re: mod_fcgid: different instances of the same program

2009-11-09 Thread Danny Sadinoff
On Tue, Nov 10, 2009 at 12:53 AM, Jeff Trawick traw...@gmail.com wrote:

 On Mon, Nov 9, 2009 at 5:16 PM, Danny Sadinoff danny.sadin...@gmail.com
wrote:
 ...
  1) symlinks  you.
  It seems that mod_fcgid identifies fcgid programs by inode and device,
  not by filename.  So two fcgid programs invoked by the webserver
  along different paths will be counted as the same if the two paths are
  hardlinks or softlinks to each other.

 Mostly yes.

 The path to the file doesn't matter; it is the file itself that matters.

 There are different requirements for how programs are distinguished.
 One possibility is changing from stat() to lstat() (i.e., distinguish
 symlinks but not hard links).  Another possibility is looking only at
 the basename.  This was discussed in this thread:
 http://www.mail-archive.com/dev@httpd.apache.org/msg45516.html

 What are you trying to accomplish which is hindered by the current
 implementation?

My goal is a fairly simple one-application per vhost setup.  But, I'm seeing
application pools shared amongst virtual hosts with distinct ServerName
declarations, all of whom refer to the same file path (and inode) for the
fcgi executable.  From what you're telling me, this is buggy behavior.  I'll
try to boil my config down further and come up with a good testcase.

Whether my config is wrong or the implementation is buggy, I would think
that the  mere existance of the dev thread trying to nail down the semantics
ought to be argument enough for
documenting the file-path-vs-inode behavior.


 
  2) Virtual hosts
  The above item holds true even across virtual hosts.   So while
  it's possible to adjust the FcgidInitialEnv items on a per-vhost
  basis, this is a recipe for disaster if two vhosts point at the same
  fcgi executable, because the resulting processes with potentially
  different Environments will be inserted into the same pool.  Once that
  occurs, we may expect that a server spawned with config defined in
  vhost A will be parcelled out to vhost B.

 Where does this occur?  Entries in the process table are distinguished
 by virtual host.  (I think the implementation of this check is broken,
 in that it requires that ServerName is set in the virtual hosts.  Are
 you using a simple test config that doesn't have ServerName set?)

My case is not yet simple.  I'll get back to you.


  The Apache httpd 2.3 docs do not address the symlink issue at all, and
  the virtual host issue only indirectly.
  http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

 FWIW, this isn't part of Apache httpd 2.3.  mod_fcgid is released
 separately from the web server and only by coincidence has the same
 version number (2.3.x) as development levels of the web server.

Well, that's another doc bug, since the page I link to has a big
header that says:
Apache HTTP Server Version 2.3
:)

-danny