]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/SharedKV.pm
sharedkv: lock and explicitly disconnect {dbh}
[public-inbox.git] / lib / PublicInbox / SharedKV.pm
index f5d09cc14dcfe3022539be322b53c77daad93701..77df0fb41bd090601662e18b149702f0f427fafe 100644 (file)
@@ -143,9 +143,17 @@ SELECT COUNT(k) FROM kv
        $sth->fetchrow_array;
 }
 
+sub dbh_release {
+       my ($self, $lock) = @_;
+       my $dbh = delete $self->{dbh} or return;
+       $lock //= $self->lock_for_scope; # may be needed for WAL
+       %{$dbh->{CachedKids}} = (); # cleanup prepare_cached
+       $dbh->disconnect;
+}
+
 sub DESTROY {
        my ($self) = @_;
-       delete $self->{dbh};
+       dbh_release($self);
        my $dir = delete $self->{"tmp$$.$self"} or return;
        my $tries = 0;
        do {