[Jifty-commit] r6953 - Jifty-DBI/trunk/lib/Jifty/DBI

Jifty commits jifty-commit at lists.jifty.org
Thu May 7 18:43:51 EDT 2009

Author: alexmv
Date: Thu May  7 18:43:51 2009
New Revision: 6953


During DESTROY, don't explicitly disconnect a dbh set InactiveDestroy

The InactiveDestroy flag on DBI objects prevent them from being
implicitly disconnected when they go out of scope -- for example, in
the case where a process has forked, and two processes hold the socket

However, it does not prevent them from being _explicitly_
disconnected, as we were doing in Jifty::DBI::Handle's DESTROY method.
This caused InactiveDestroy to never kick in, causing either a shared
socket, or two closed handles after a fork.  We prevent this by having
Jifty::DBI::Handle respect InactiveDestroy in its DESTROY method.

Modified: Jifty-DBI/trunk/lib/Jifty/DBI/Handle.pm
--- Jifty-DBI/trunk/lib/Jifty/DBI/Handle.pm	(original)
+++ Jifty-DBI/trunk/lib/Jifty/DBI/Handle.pm	Thu May  7 18:43:51 2009
@@ -1328,7 +1328,7 @@
 sub DESTROY {
     my $self = shift;
-    $self->disconnect;
+    $self->disconnect unless $self->dbh and $self->dbh->{InactiveDestroy};
     delete $DBIHandle{$self};

More information about the Jifty-commit mailing list