RE: Odd Caching Bug

2001-02-22 Thread Stathy Touloumis

 So, if I understand correctly, the database handle is getting cached
 more than you think it should, that's right?

I was unsure where the caching was occurring.

 I think MaxRequestsPerChild doesn't actually cut off a connection that
 is kept alive (with KeepAlive). Ctrl-N in a browser could validly reuse
 the same connection if it is still around (if you wait too long, a
 keep-alive connection will be closed).

This would make sense.  It would seem that 'KeepAlive' keeps the 'request'
open until
it times out.

 So even though you've set up MaxRequestsPerChild to 1, each Apache child
 process could be serving multiple requests over a single TCP/IP
 connection. The answer to "where the caching is occuring" would be in
 Apache::DBI, which opens a single DB connection per Apache child
 process.

  - stop using Apache::DBI.

  - have your scripts explicitly set the date format they want every time
 (do not rely on "whatever format is already there").

Actually these are both not options : )  We really are not allowing
developers to modify global database variables.  This is the first no-no.
Because it is not a strict policy somebody obviously abused it : )

 With both solutions, you'll be able to leave the keep-alive enabled and
 use a saner MaxRequestsPerChild (like the default setting). Having
 "MaxRequestsPerChild 1" is harsh on resources!
Understandably the configuration is not optimized but it is only in a
development environment to allow for simultaneous development of modules,
components and visual elements.  Our production environment varies
significantly in it's configuration directives.

Thanks for the information though.  It clarified what I was originally
thinking.

Thanks,




Odd Caching Bug

2001-02-21 Thread Stathy Touloumis

Hello,

One of the developers I currently am working with has found an odd bug that
can be replicated on several workstations.  First my configuration :
Apache 1.3.17
mod_perl 1.25
Mason (Ancient)
Apache::DBI .88
Postgres 7

MaxRequestsPerChild 1
KeepAlive on


We have two components that contain the following code.  One of which
changes a session variable (datestyle to 'ISO')on the postgres database.
Theoretically the two components should return different results based on
the specific datestyle settings ('ISO' and default).  This only occurs when
two browsers are opened independently that do not share the same session.
When using ctrl-n on a windows client to open a new window it appears that
they share session information and possibly the same tcp/ip connection(?).
When reloading the components in the two windows eventually they both return
the 'ISO' format date.  After pausing for several minutes and reloading the
component that DOES NOT explicitly set the 'ISO' format variable, it
correctly returns the default date format.

--COMPONENT 1--
%perl_init
my $dbh = Edventions::Utilities-new-getDbHandle; ## Uses Apache::DBI to
connect
my $sql = q( select now() as today );
my $sth = $dbh-prepare( $sql );
$sth-execute;
my $now = $sth-fetch-[0];
/%perl_init

h1% $now %

--COMPONENT 2--
%perl_init
my $dbh = Utilities-new-getDatabaseHandle; ## Uses Apache::DBI to connect
my $sql = q( set datestyle to 'ISO'; select now() as today );
my $sth = $dbh-prepare( $sql );
$sth-execute;
my $now = $sth-fetch-[0];
/%perl_init

h1% $now %

Now when the apache directive KeepAlive is set to 'off' this problem does
not occur.  I am trying to figure out where the caching is occurring or if
the database handle is not getting properly destroyed for each request.

Any suggestions as to why this is occurring would be greatly appreciated.

Thanks,




Odd Caching Bug

2001-02-20 Thread Stathy Touloumis

Hello,

One of the developers I currently am working with has found an odd bug that
can be replicated on several workstations.  First my configuration :
Apache 1.3.17
mod_perl 1.25
Mason (Ancient)
Apache::DBI .88
Postgres 7

MaxRequestsPerChild 1
KeepAlive on


We have two components that contain the following code.  One of which
changes a session variable (datestyle to 'ISO')on the postgres database.
Theoretically the two components should return different results based on
the specific datestyle settings ('ISO' and default).  This only occurs when
two browsers are opened independently that do not share the same session.
When using ctrl-n on a windows client to open a new window it appears that
they share session information and possibly the same tcp/ip connection(?).
When reloading the components in the two windows eventually they both return
the 'ISO' format date.  After pausing for several minutes and reloading the
component that DOES NOT explicitly set the 'ISO' format variable, it
correctly returns the default date format.

--COMPONENT 1--
%perl_init
my $dbh = Edventions::Utilities-new-getDbHandle; ## Uses Apache::DBI to
connect
my $sql = q( select now() as today );
my $sth = $dbh-prepare( $sql );
$sth-execute;
my $now = $sth-fetch-[0];
/%perl_init

h1% $now %

--COMPONENT 2--
%perl_init
my $dbh = Utilities-new-getDatabaseHandle; ## Uses Apache::DBI to connect
my $sql = q( set datestyle to 'ISO'; select now() as today );
my $sth = $dbh-prepare( $sql );
$sth-execute;
my $now = $sth-fetch-[0];
/%perl_init

h1% $now %

Now when the apache directive KeepAlive is set to 'off' this problem does
not occur.  I am trying to figure out where the caching is occurring or if
the database handle is not getting properly destroyed for each request.

Any suggestions as to why this is occurring would be greatly appreciated.

Thanks,