Bug #28870 check that table locks are released/reset
| Submitted: | 4 Jun 2007 11:13 | Modified: | 6 Mar 2010 18:49 |
|---|---|---|---|
| Reporter: | Sergey Vojtovich | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Locking | Severity: | S2 (Serious) |
| Version: | 5.0, 5.1 and up | OS: | Any |
| Assigned to: | Davi Arnaut | CPU Architecture: | Any |
[4 Jun 2007 11:13]
Sergey Vojtovich
[10 Jun 2007 9:11]
Konstantin Osipov
Not quite get the problem from the description, but ready to help.
[13 Jun 2007 11:33]
Konstantin Osipov
In a nutshell, this bug report is about the following: - mysql_lock_tables calls function get_lock_data - get_lock_data calls handler::store_lock, which updates lock_type of TABLE - in case when mysql_lock_tables fails later on, lock_type might be not reset back to TL_UNLOCK and the table might be returned to the table cache with wrong lock_type. - some branches of mysql_lock_tables are covered with reset_lock_data, which addresses specifically this problem, but not all branches. - the fix for this bug is to ensure that reset_lock_data happens in all cases when get_lock_data failed and we back off, abort locks, or encounter an error in mysql_lock_tables.
[31 Aug 2007 2:02]
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/33500 ChangeSet@1.2510, 2007-08-30 23:00:33-03:00, davi@moksha.local +1 -0 Bug#28870 check that table locks are released/reset The problem is that some mysql_lock_tables error paths are not resetting the tables lock type back to TL_UNLOCK. If the lock types are not reset properly, a table might be returned to the table cache with wrong lock_type. The proposed fix is to ensure that the tables lock type is always properly reset when mysql_lock_tables fails.
[7 Sep 2007 14:27]
Konstantin Osipov
Sent a review by email.
[10 Sep 2007 13:29]
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/33992 ChangeSet@1.2510, 2007-09-10 10:28:32-03:00, davi@moksha.local +1 -0 Bug#28870 check that table locks are released/reset The problem is that some mysql_lock_tables error paths are not resetting the tables lock type back to TL_UNLOCK. If the lock types are not reset properly, a table might be returned to the table cache with wrong lock_type. The proposed fix is to ensure that the tables lock type is always properly reset when mysql_lock_tables fails.
[10 Sep 2007 22:22]
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/34022 ChangeSet@1.2608, 2007-09-10 19:22:07-03:00, davi@moksha.local +11 -0 Bug#28870 check that table locks are released/reset The problem is that some mysql_lock_tables error paths are not resetting the tables lock type back to TL_UNLOCK. If the lock types are not reset properly, a table might be returned to the table cache with wrong lock_type. The proposed fix is to ensure that the tables lock type is always properly reset when mysql_lock_tables fails. This is a incompatible change with respect to the process state information.
[27 Sep 2007 19:57]
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/34607 ChangeSet@1.2608, 2007-09-27 16:56:27-03:00, davi@moksha.local +4 -0 Bug#28870 check that table locks are released/reset The problem is that some mysql_lock_tables error paths are not resetting the tables lock type back to TL_UNLOCK. If the lock types are not reset properly, a table might be returned to the table cache with wrong lock_type. The proposed fix is to ensure that the tables lock type is always properly reset when mysql_lock_tables fails. This is a incompatible change with respect to the process state information.
[19 Oct 2007 20:10]
Davi Arnaut
Pushed in 5.2.6
[19 Oct 2007 20:10]
Davi Arnaut
Pushed in 5.2.6
[24 Oct 2007 20:26]
Konstantin Osipov
Internal change, no need for a changelog entry.
[20 Nov 2009 19:16]
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/91158 2925 Konstantin Osipov 2009-11-20 Backport of: revno: 2476.784.2 committer: davi@moksha.local timestamp: Thu 2007-09-27 16:56:27 -0300 message: Bug#28870 check that table locks are released/reset The problem is that some mysql_lock_tables error paths are not resetting the tables lock type back to TL_UNLOCK. If the lock types are not reset properly, a table might be returned to the table cache with wrong lock_type. The proposed fix is to ensure that the tables lock type is always properly reset when mysql_lock_tables fails. This is a incompatible change with respect to the process state information. @ sql/lock.cc Merge mysql_lock_tables cleanup sequence and the reset_lock_data function into a single function and take steps to ensure it is always called for each error exit path. Also remove references to the redundant THD::locked variable which was almost exclusively used by this function and the same information is already on proc_info. @ sql/sql_class.cc Remove references to the THD::locked variable. @ sql/sql_class.h Remove the THD::locked variable. @ sql/sql_show.cc Remove references to THD:locked, state_info will now default to proc_info.
[20 Nov 2009 19:28]
Konstantin Osipov
Queued in next-mr-runtime (5.6)
[25 Nov 2009 13:32]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20091124194633-yc0achgq1ioyqzng) (version source revid:alik@sun.com-20091124194633-yc0achgq1ioyqzng) (merge vers: 6.0.14-alpha) (pib:13)
[25 Nov 2009 13:33]
Bugs System
Pushed into 5.6.0-beta (revid:alik@sun.com-20091124193905-3iyzegd75k4givuz) (version source revid:kostja@sun.com-20091120191550-o212devfco01602d) (merge vers: 5.6.0-beta) (pib:13)
[25 Nov 2009 14:47]
Paul DuBois
No changelog entry needed.
[3 Dec 2009 20:16]
Davi Arnaut
This needs to be documented as a incompatible change. It removed the "Locked" thread state.
[3 Dec 2009 20:37]
Paul DuBois
Noted in 5.6.0, 6.0.14 changelogs. The Locked thread state was equivalent to the Table lock state and has been removed. It no longer appears in SHOW PROCESSLIST output.
[6 Mar 2010 11:05]
Bugs System
Pushed into 5.5.3-m3 (revid:alik@sun.com-20100306103849-hha31z2enhh7jwt3) (version source revid:vvaintroub@mysql.com-20091125142014-7asc9sj33gzki0ym) (merge vers: 5.6.0-beta) (pib:16)
[6 Mar 2010 18:49]
Paul DuBois
Moved 5.6.0 changelog entry to 5.5.3.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.081 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.