Bug #41262 DDL blocker: check_DDL_blocker() not always matched with end_DDL().
Submitted: 5 Dec 2008 14:46 Modified: 13 Feb 2009 13:32
Reporter: Rafal Somla Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Backup Severity:S3 (Non-critical)
Version:6.0-backup OS:Any
Assigned to: Rafal Somla CPU Architecture:Any

[5 Dec 2008 14:46] Rafal Somla
Description:
Each statement blocked by the DDL blocker must start with a call to 
DDL_blocker->check_DDL_blocker() and end with DDL_blocker->end_DDL(). Sometimes 
the matching end_DDL() is not called, for example when code returns earlier 
after detecting an error. This happens e.g. in case SQLCOM_DROP_INDEX of the big 
switch.

How to repeat:
Code inspection: function mysql_execute_command() in sql/sql_parse.cc, grep for ->check_DDL_blocker

Suggested fix:
Use a class which will call end_DDL() automatically from destructor.
[5 Dec 2008 14:48] Rafal Somla
This bug can be fixed by WL#4644 (if the proposed architecture is approved).
[13 Feb 2009 13:32] Rafal Somla
This issue has been fixed with the new implementation of DDL blocker, aka Backup Metadata Lock, pushed as BUG#32702.