| Bug #22728 | Handler_rollback value is growing | ||
|---|---|---|---|
| Submitted: | 27 Sep 2006 8:43 | Modified: | 13 Nov 2006 19:39 |
| Reporter: | Tonci Grgin | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S1 (Critical) |
| Version: | 4.1.22 | OS: | Linux (Suse10.0 32bit) |
| Assigned to: | Alexey Kopytov | CPU Architecture: | Any |
[8 Oct 2006 13:04]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/13317 ChangeSet@1.2541, 2006-10-08 17:03:56+04:00, kaa@polly.local +3 -0 Fix for bug #22728 "Handler_rollback value is growing". For InnoDB, check value of thd->transaction.all.innodb_active_trans instead of thd->transaction.stmt.innobase_tid to see if we really need to rollback.
[11 Oct 2006 8:45]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/13454 ChangeSet@1.2541, 2006-10-11 12:44:03+04:00, kaa@polly.local +3 -0 Fix for bug #22728 "Handler_rollback value is growing". The bug is present only in 4.1, will be null-merged to 5.0 For InnoDB, check value of thd->transaction.all.innodb_active_trans instead of thd->transaction.stmt.innobase_tid to see if we really need to rollback.
[18 Oct 2006 21:34]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/13916 ChangeSet@1.2312, 2006-10-18 23:34:30+02:00, msvensson@neptunus.(none) +2 -0 Bug#22728 Handler_rollback value is growing - The handler_rollback value is not growing, but the testcase does not work as handler_rollback is not cleared by "flush status" Thus we need to record before and after value and do a compare
[13 Nov 2006 19:39]
Paul DuBois
Noted in 4.1.23, 5.0.30 (not 5.0.29), 5.1.13 changelogs. The Handler_rollback status variable sometimes was incremented when no rollback had taken place.

Description: Handler_rollback value is growing when looking at "show status" with no apparent reason. How to repeat: MySQL server 4.1.22 BK, ChangeSet@1.2563, 2006-09-04 SQL: DROP TABLE IF EXISTS `mytable`; CREATE TABLE `mytable` ( `c1` int(11) NOT NULL default '0', `c2` char(100) default NULL, PRIMARY KEY (`c1`), UNIQUE KEY `my_pk` (`c1`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; HANDLER mytable OPEN; HANDLER mytable READ my_pk = (29); HANDLER mytable CLOSE; quit; show status like '%rollback%'; C:\mysql\bin>mysql -uroot -hmunja --port=3307 test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.22-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE `mytable` ( -> `c1` int(11) NOT NULL default '0', -> `c2` char(100) default NULL, -> PRIMARY KEY (`c1`), -> UNIQUE KEY `my_pk` (`c1`) -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Query OK, 0 rows affected (0.05 sec) mysql> HANDLER mytable OPEN; Query OK, 0 rows affected (0.00 sec) mysql> HANDLER mytable READ mytable_pk = (29); ERROR 1176 (HY000): Key 'mytable_pk' doesn't exist in table 'mytable' mysql> HANDLER mytable CLOSE; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye C:\mysql\bin>mysql -uroot -hmunja --port=3307 test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 4.1.22-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show status like '%rollback%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Com_rollback | 0 | | Handler_rollback | 1 | +------------------+-------+ 2 rows in set (0.02 sec) mysql> quit Bye C:\mysql\bin>mysql -uroot -hmunja --port=3307 test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 4.1.22-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> DROP TABLE IF EXISTS `mytable`; Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE `mytable` ( -> `c1` int(11) NOT NULL default '0', -> `c2` char(100) default NULL, -> PRIMARY KEY (`c1`), -> UNIQUE KEY `my_pk` (`c1`) -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Query OK, 0 rows affected (0.02 sec) mysql> mysql> HANDLER mytable OPEN; Query OK, 0 rows affected (0.00 sec) mysql> HANDLER mytable READ my_pk = (29); Empty set (0.00 sec) mysql> HANDLER mytable CLOSE; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye C:\mysql\bin>mysql -uroot -hmunja --port=3307 test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 to server version: 4.1.22-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show status like '%rollback%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Com_rollback | 0 | | Handler_rollback | 2 | +------------------+-------+ 2 rows in set (0.00 sec) mysql> Suggested fix: -