You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by ph...@apache.org on 2010/02/06 21:24:31 UTC
svn commit: r907292 - in /perl/Apache-DBI/trunk: Changes lib/Apache/DBI.pm
Author: phred
Date: Sat Feb 6 20:24:30 2010
New Revision: 907292
URL: http://svn.apache.org/viewvc?rev=907292&view=rev
Log:
Add childexithandler to prevent database connection warnings when the httpd
child exits.
Submitted by: Nick Wellnhofer<we...@aevum.de>
Reviewed by: Fred Moyer
Tested by: Fred Moyer, Adam Prime
http://marc.info/?l=apache-modperl-dev&m=124824443220933&w=2
Modified:
perl/Apache-DBI/trunk/Changes
perl/Apache-DBI/trunk/lib/Apache/DBI.pm
Modified: perl/Apache-DBI/trunk/Changes
URL: http://svn.apache.org/viewvc/perl/Apache-DBI/trunk/Changes?rev=907292&r1=907291&r2=907292&view=diff
==============================================================================
--- perl/Apache-DBI/trunk/Changes (original)
+++ perl/Apache-DBI/trunk/Changes Sat Feb 6 20:24:30 2010
@@ -1,6 +1,8 @@
Revision history for ApacheDBI.
1.09
+ - Adds PerlChildExitHandler to disconnect existing connections
+ Submitted by: Nick Wellnhoffer <we...@aevum.de>
1.08 February 3rd, 2010
- Fix bug to allow DBI in startup.pl etc again
Modified: perl/Apache-DBI/trunk/lib/Apache/DBI.pm
URL: http://svn.apache.org/viewvc/perl/Apache-DBI/trunk/lib/Apache/DBI.pm?rev=907292&r1=907291&r2=907292&view=diff
==============================================================================
--- perl/Apache-DBI/trunk/lib/Apache/DBI.pm (original)
+++ perl/Apache-DBI/trunk/lib/Apache/DBI.pm Sat Feb 6 20:24:30 2010
@@ -39,6 +39,9 @@
# a negative value de-activates ping,
# default = 0
my %LastPingTime; # keeps track of last ping per data_source
+my $ChildExitHandlerInstalled; # set to true on installation of
+ # PerlChildExitHandler
+my $InChild;
# Check to see if we need to reset TaintIn and TaintOut
my $TaintInOut = ($DBI::VERSION >= 1.31) ? 1 : 0;
@@ -134,6 +137,23 @@
}
}
+ # this PerlChildExitHandler is supposed to disconnect all open
+ # connections to the database
+ if (!$ChildExitHandlerInstalled) {
+ $ChildExitHandlerInstalled = 1;
+ my $s;
+ if (MP2) {
+ $s = Apache2::ServerUtil->server;
+ }
+ elsif (Apache->can('push_handlers')) {
+ $s = 'Apache';
+ }
+ if ($s) {
+ debug(2, "$prefix push PerlChildExitHandler");
+ $s->push_handlers(PerlChildExitHandler => \&childexit);
+ }
+ }
+
# this PerlCleanupHandler is supposed to initiate a rollback after the
# script has finished if AutoCommit is off. however, cleanup can only
# be determined at end of handle life as begin_work may have been called
@@ -218,6 +238,22 @@
1;
}
+# The PerlChildExitHandler disconnects all open connections
+sub childexit {
+
+ my $prefix = "$$ Apache::DBI ";
+ debug(2, "$prefix PerlChildExitHandler");
+
+ foreach my $dbh (values(%Connected)) {
+ eval { DBI::db::disconnect($dbh) };
+ if ($@) {
+ debug(2, "$prefix DBI::db::disconnect failed - $@");
+ }
+ }
+
+ 1;
+}
+
# The PerlCleanupHandler is supposed to initiate a rollback after the script
# has finished if AutoCommit is off.
# Note: the PerlCleanupHandler runs after the response has been sent to
Fwd: svn commit: r907292 - in /perl/Apache-DBI/trunk: Changes
lib/Apache/DBI.pm
Posted by Fred Moyer <fr...@redhotpenguin.com>.
Should I put together 1.09?
---------- Forwarded message ----------
From: <ph...@apache.org>
Date: Sat, Feb 6, 2010 at 12:24 PM
Subject: svn commit: r907292 - in /perl/Apache-DBI/trunk: Changes
lib/Apache/DBI.pm
To: modperl-cvs@perl.apache.org
Author: phred
Date: Sat Feb 6 20:24:30 2010
New Revision: 907292
URL: http://svn.apache.org/viewvc?rev=907292&view=rev
Log:
Add childexithandler to prevent database connection warnings when the httpd
child exits.
Submitted by: Nick Wellnhofer<we...@aevum.de>
Reviewed by: Fred Moyer
Tested by: Fred Moyer, Adam Prime
http://marc.info/?l=apache-modperl-dev&m=124824443220933&w=2
Modified:
perl/Apache-DBI/trunk/Changes
perl/Apache-DBI/trunk/lib/Apache/DBI.pm
Modified: perl/Apache-DBI/trunk/Changes
URL: http://svn.apache.org/viewvc/perl/Apache-DBI/trunk/Changes?rev=907292&r1=907291&r2=907292&view=diff
==============================================================================
--- perl/Apache-DBI/trunk/Changes (original)
+++ perl/Apache-DBI/trunk/Changes Sat Feb 6 20:24:30 2010
@@ -1,6 +1,8 @@
Revision history for ApacheDBI.
1.09
+ - Adds PerlChildExitHandler to disconnect existing connections
+ Submitted by: Nick Wellnhoffer <we...@aevum.de>
1.08 February 3rd, 2010
- Fix bug to allow DBI in startup.pl etc again
Modified: perl/Apache-DBI/trunk/lib/Apache/DBI.pm
URL: http://svn.apache.org/viewvc/perl/Apache-DBI/trunk/lib/Apache/DBI.pm?rev=907292&r1=907291&r2=907292&view=diff
==============================================================================
--- perl/Apache-DBI/trunk/lib/Apache/DBI.pm (original)
+++ perl/Apache-DBI/trunk/lib/Apache/DBI.pm Sat Feb 6 20:24:30 2010
@@ -39,6 +39,9 @@
# a negative value de-activates ping,
# default = 0
my %LastPingTime; # keeps track of last ping per data_source
+my $ChildExitHandlerInstalled; # set to true on installation of
+ # PerlChildExitHandler
+my $InChild;
# Check to see if we need to reset TaintIn and TaintOut
my $TaintInOut = ($DBI::VERSION >= 1.31) ? 1 : 0;
@@ -134,6 +137,23 @@
}
}
+ # this PerlChildExitHandler is supposed to disconnect all open
+ # connections to the database
+ if (!$ChildExitHandlerInstalled) {
+ $ChildExitHandlerInstalled = 1;
+ my $s;
+ if (MP2) {
+ $s = Apache2::ServerUtil->server;
+ }
+ elsif (Apache->can('push_handlers')) {
+ $s = 'Apache';
+ }
+ if ($s) {
+ debug(2, "$prefix push PerlChildExitHandler");
+ $s->push_handlers(PerlChildExitHandler => \&childexit);
+ }
+ }
+
# this PerlCleanupHandler is supposed to initiate a rollback after the
# script has finished if AutoCommit is off. however, cleanup can only
# be determined at end of handle life as begin_work may have been called
@@ -218,6 +238,22 @@
1;
}
+# The PerlChildExitHandler disconnects all open connections
+sub childexit {
+
+ my $prefix = "$$ Apache::DBI ";
+ debug(2, "$prefix PerlChildExitHandler");
+
+ foreach my $dbh (values(%Connected)) {
+ eval { DBI::db::disconnect($dbh) };
+ if ($@) {
+ debug(2, "$prefix DBI::db::disconnect failed - $@");
+ }
+ }
+
+ 1;
+}
+
# The PerlCleanupHandler is supposed to initiate a rollback after the script
# has finished if AutoCommit is off.
# Note: the PerlCleanupHandler runs after the response has been sent to
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org