From 85d9159e944df2ea79b5a32f19fa61531053afda Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Mon, 23 Jun 2014 16:15:11 +0200 Subject: [PATCH] Offene Transaktionen vor DB-Upgrades comitten MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Hintergrund ist, dass Locks potenziell vorhanden sein können. Einfaches Beispiel: $::instance_conf wird geladen (dadurch implizites ACCESS-SHARE-Lock auf »defaults«), Upgrade will Schema von »defaults« verändern, was dann hängt, weil dafür ACCESS-EXCLUSIVE benötigt wird – das mit ACCESS-SHARE kollidiert. --- SL/User.pm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SL/User.pm b/SL/User.pm index 8bb9b997b..42622f8fd 100644 --- a/SL/User.pm +++ b/SL/User.pm @@ -384,6 +384,9 @@ sub dbupdate2 { &dbconnect_vars($form, $db); + # Flush potentially held database locks. + $form->get_standard_dbh->commit; + my $dbh = SL::DBConnect->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}, SL::DBConnect->get_options) or $form->dberror; $dbh->do($form->{dboptions}) if ($form->{dboptions}); -- 2.20.1