mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 03:21:53 +01:00
Merge from mysql-trunk-innodb into mysql-5.1-innodb/storage/innodb_plugin:
------------------------------------------------------------ revno: 3094 revision-id: vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh parent: vasil.dimov@oracle.com-20100512173700-byf8xntxjur1hqov committer: Vasil Dimov <vasil.dimov@oracle.com> branch nick: mysql-trunk-innodb timestamp: Thu 2010-05-13 10:46:52 +0300 message: Followup to Bug#51920, fix binlog.binlog_killed This is a followup to the fix of Bug#51920 Innodb connections in row lock wait ignore KILL until lock wait timeout in that fix (rb://279) the behavior was changed to honor when a trx is interrupted during lock wait, but the returned error code was still "lock wait timeout" when it should be "interrupted". This change fixes the non-deterministically failing test binlog.binlog_killed, that failed like this: binlog.binlog_killed 'stmt' [ fail ] Test ended at 2010-05-12 11:39:08 CURRENT_TEST: binlog.binlog_killed mysqltest: At line 208: query 'reap' failed with wrong errno 1205: 'Lock wait timeout exceeded; try restarting transaction', instead of 0... Approved by: Sunny Bains (rb://344) ------------------------------------------------------------
This commit is contained in:
parent
8a03ef7911
commit
497ff20f59
2 changed files with 8 additions and 3 deletions
|
@ -522,6 +522,7 @@ handle_new_error:
|
||||||
case DB_CANNOT_ADD_CONSTRAINT:
|
case DB_CANNOT_ADD_CONSTRAINT:
|
||||||
case DB_TOO_MANY_CONCURRENT_TRXS:
|
case DB_TOO_MANY_CONCURRENT_TRXS:
|
||||||
case DB_OUT_OF_FILE_SPACE:
|
case DB_OUT_OF_FILE_SPACE:
|
||||||
|
case DB_INTERRUPTED:
|
||||||
if (savept) {
|
if (savept) {
|
||||||
/* Roll back the latest, possibly incomplete
|
/* Roll back the latest, possibly incomplete
|
||||||
insertion or update */
|
insertion or update */
|
||||||
|
|
|
@ -1609,12 +1609,16 @@ srv_suspend_mysql_thread(
|
||||||
innodb_lock_wait_timeout, because trx->mysql_thd == NULL. */
|
innodb_lock_wait_timeout, because trx->mysql_thd == NULL. */
|
||||||
lock_wait_timeout = thd_lock_wait_timeout(trx->mysql_thd);
|
lock_wait_timeout = thd_lock_wait_timeout(trx->mysql_thd);
|
||||||
|
|
||||||
if (trx_is_interrupted(trx)
|
if (lock_wait_timeout < 100000000
|
||||||
|| (lock_wait_timeout < 100000000
|
&& wait_time > (double) lock_wait_timeout) {
|
||||||
&& wait_time > (double) lock_wait_timeout)) {
|
|
||||||
|
|
||||||
trx->error_state = DB_LOCK_WAIT_TIMEOUT;
|
trx->error_state = DB_LOCK_WAIT_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (trx_is_interrupted(trx)) {
|
||||||
|
|
||||||
|
trx->error_state = DB_INTERRUPTED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************//**
|
/********************************************************************//**
|
||||||
|
|
Loading…
Add table
Reference in a new issue