Bug 123258 - (temporary) Log InnoDB locks and status in case "lock wait timeout exceeded" or "deadlock found while trying to get lock"

git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1782 6955db30-a419-402b-8a0d-67ecbb4d7f56
master
vfilippov 2013-09-05 16:36:47 +00:00
parent 3f9cd0a799
commit 46fbc7d44b
1 changed files with 10 additions and 0 deletions

View File

@ -82,6 +82,16 @@ sub _die_error
# on each "Stop" click in the browser.
if ($msg !~ /^(Apache2::RequestIO::print|:Apache2 IO write): \(103\)|^[^\n]*(Программа вызвала сброс соединения|Software caused connection abort) at /iso)
{
if ($msg =~ /lock wait|deadlock found/i)
{
# Log active InnoDB locks
my $locks = Bugzilla->dbh->selectall_arrayref('SELECT * FROM information_schema.innodb_locks', {Slice=>{}});
use Data::Dumper;
$msg = "InnoDB locks:\n".Dumper($locks)."\n".$msg;
# Also log full InnoDB Status
($locks) = Bugzilla->dbh->selectrow_array('SHOW ENGINE INNODB STATUS');
$msg = "InnoDB status:\n$locks\n$msg";
}
$msg = { eval_error => $msg };
Bugzilla::Error::ThrowCodeError('eval_error', $msg);
}