From a88bc79dcd14ef13b9a4850c5192981201aa23bf Mon Sep 17 00:00:00 2001 From: "bbaetz%acm.org" <> Date: Fri, 14 Feb 2003 18:37:38 +0000 Subject: Bug 192531 - Bugzilla not properly closing DB statement handles Change code to work arround a perl < 5.8 leak when localising the tied statement attributes. Also, clear the sql statestack compat stuff so that the handles are really dead by the time we disconnect r,a=justdave --- Bugzilla.pm | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'Bugzilla.pm') diff --git a/Bugzilla.pm b/Bugzilla.pm index 56d1f24cc..366acb163 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -94,6 +94,17 @@ sub switch_to_main_db { sub _cleanup { undef $_cgi; + # See bug 192531. If we don't clear the possibly active statement handles, + # then when this is called from the END block, it happens _before_ the + # destructors in Bugzilla::DB have happened. + # See http://rt.perl.org/rt2/Ticket/Display.html?id=17450#38810 + # Without disconnecting explicitly here, noone notices, because DBI::END + # ends up calling DBD::mysql's $drh->disconnect_all, which is a noop. + # This code is evil, but it needs to be done, at least until SendSQL and + # friends can be removed + @Bugzilla::DB::SQLStateStack = (); + undef $Bugzilla::DB::_current_sth; + # When we support transactions, need to ->rollback here $_dbh_main->disconnect if $_dbh_main; $_dbh_shadow->disconnect if $_dbh_shadow and Param("shadowdb"); -- cgit v1.2.3-24-g4f1b