From: Dmitry Lenev Date: October 27 2010 10:39am Subject: bzr commit into mysql-5.5-runtime branch (Dmitry.Lenev:3185) List-Archive: http://lists.mysql.com/commits/122071 Message-Id: <20101027103923.E61132F0E23@mockturtle> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0927876271==" --===============0927876271== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/dlenev/src/bzr/mysql-5.5-rt-grl/ based on revid:dmitry.lenev@stripped 3185 Dmitry Lenev 2010-10-27 More changes to draft patch refactoring global read lock implementation. Makes GRL yet another type of metadata lock and thus exposes it to deadlock detector in MDL subsystem. Solves bugs #54673 "It takes too long to get readlock for 'FLUSH TABLES WITH READ LOCK'" and #57006 "Deadlock between HANDLER and FLUSH TABLES WITH READ LOCK". Work-in-progress. Polished INSERT DELAYED code. modified: sql/sql_insert.cc === modified file 'sql/sql_insert.cc' --- a/sql/sql_insert.cc 2010-10-19 13:31:53 +0000 +++ b/sql/sql_insert.cc 2010-10-27 10:39:04 +0000 @@ -77,7 +77,8 @@ #include "sql_audit.h" #ifndef EMBEDDED_LIBRARY -static bool delayed_get_table(THD *thd, TABLE_LIST *table_list); +static bool delayed_get_table(THD *thd, MDL_request *grl_protection_request, + TABLE_LIST *table_list); static int write_delayed(THD *thd, TABLE *table, enum_duplicates duplic, LEX_STRING query, bool ignore, bool log_on); static void end_delayed_insert(THD *thd); @@ -559,7 +560,7 @@ bool open_and_lock_for_insert_delayed(TH DBUG_RETURN(TRUE); bool error= FALSE; - if (delayed_get_table(thd, table_list)) + if (delayed_get_table(thd, &protection_request, table_list)) error= TRUE; else if (table_list->table) { @@ -2072,7 +2073,8 @@ Delayed_insert *find_handler(THD *thd, T */ static -bool delayed_get_table(THD *thd, TABLE_LIST *table_list) +bool delayed_get_table(THD *thd, MDL_request *grl_protection_request, + TABLE_LIST *table_list) { int error; Delayed_insert *di; @@ -2098,8 +2100,6 @@ bool delayed_get_table(THD *thd, TABLE_L */ if (! (di= find_handler(thd, table_list))) { - bool not_used; - if (!(di= new Delayed_insert())) goto end_create; mysql_mutex_lock(&LOCK_thread_count); @@ -2121,8 +2121,7 @@ bool delayed_get_table(THD *thd, TABLE_L /* We need the tickets so that they can be cloned in handle_delayed_insert */ di->grl_protection.init(MDL_key::GLOBAL, "", "", MDL_INTENTION_EXCLUSIVE); - di->grl_protection.ticket= thd->mdl_context.find_ticket( - &di->grl_protection, ¬_used); + di->grl_protection.ticket= grl_protection_request->ticket; init_mdl_requests(&di->table_list); di->table_list.mdl_request.ticket= table_list->mdl_request.ticket; --===============0927876271== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/dmitry.lenev@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dmitry.lenev@stripped # target_branch: file:///home/dlenev/src/bzr/mysql-5.5-rt-grl/ # testament_sha1: a982a35a71cc5b23ed6c66c8a128730a09d9e2f2 # timestamp: 2010-10-27 14:39:22 +0400 # base_revision_id: dmitry.lenev@stripped\ # i8edsx3gfausukf4 # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWWC34eEAAdt/gBAQCBBZ9/// f+/eoL////BQBM1XbvZjzluzpt6UtglEEhT20RoaFPNTGkwSeoMj1DT9RonpqPJGgGlNqYmJinoR oRkBkAAAZAAAAyINBFT/U1T80qaY1D1BoAaBo0aaAAAGRCpk9imjTT1Q0ZB5QaAAeoaAAAAkkmmh kKeU2pmijyaT1HlGgA9QANNDQ009R0hN0QxqxnHv3mK/gnF5KYrK/i2SKlCgUVhzVy2I4n7/F7XJ EAHR+7WlX8D1jwjb8LoCiZ/IBnyxeLvvmFVO2+s17GtD9yW5ltH9luGQ3BvL2/lOt+H5hTzImPe0 ldn+OV+cvq1qddbYp2nDn1e4VWtkm2/4oabn4bue5dcKQhdxZhwsuv5MHCKTIsDzEJyVxoTMzFa1 Omoj1mkTqJKK9D8M01wyAKgi1SisnwOBCZMjFL6QRAOIPuELEJEUByBj6WiIyNxEyPRlJ3gwApio RGiAWSAQkUBwC3BMiAUFrqnmuIDchZg75dCtQ3cVUjv5ZF0i0MfJsTGoWS6kaJjUpCHgPnnmc0Xo GvH6LXBMv8LRwO2FrjUMoqFnu1nBuDFQZiCPv0DPLbRMBQGgUHgro5NlA9tIZSkLCkxZVw/hKZo/ fyygKQUT2F9BqP6/lQCRV4wL90KkoPiwg8QF7GLotNkamUzRdayypJJdZJTw1xAb64HYTTyhoilN MIFGgQYLKEMuTTtPVgISVS1KzfPCpA0yiIuFAJLDWmkhJQNYaKZDEC3GCelFx7oIQuuWKDErMRay uK4RV10659g2wuHXfRmrv00m5ENwcD59liRRVX7g/mRDRtvlzUl0eX2I/SqXuULNSzDiZg15/Szq Kq73eEOwqP2PHetgyZeu0fFjrcsewgZMC6k6v1A/hWTlNlZsXd72n0pkmCoeHT0wEy3jeeep50QE 84fREO2HbEwHRqGx1VUjX3ktLvgh1kzGVglS6mmouRFba+yYQ6IgtA8negwBewksSHWGho2SNua7 hc+IDJjKkh0yRaoL9g6SzDwnTPLnt9jYwYxKOMjnG/VGWRzvZ55BqXAqOwVkUIJ6sJTTZURMC3cX hdYcC7ig8oZYrgqR4+uDYvA0FgSti4pnSam5YVZP95SZo5ZVk/TC2luy3awQ0TL0JyCVONW4O1dT Nnm1RlpE2iEBlNXz8gKkNdqRZY8Zxn2EibTopyRTJmNtyIZAw+O27HOxNV4TqZ0vFlcg2KpIJG2T B0+g7jlr8ig1qKq5wXKlxrmk4i0rjWylKpoodoUWzDMuDohJx6wCzmePhtC1QhQDu8QCHC5pQs4q J9xucZhXNwKdRMRXGEh/kM4WBJwTKQCmqsvJChS3V3gQ+BhEYEqpxlq3bZInkCsTQ92N8W9AvKWC MuuvZKJVYw6txBmQc99APB84Jw6bmvHZIwVAmZMq9SqtwFopsbOKBw+MAUhGuqWkiIs/iQgFieTT cYUzCNme9jNGgiFGCt1WFvCC/bqa6atcGtvFvLkS0i4jlcE4pkjYwZ2wUESFrt2zkZ6CCGVu3PbB hcdIUTsMkNTMYMr52dZJUOKY8qGtm9tWWJa0lUQAzShF9zwL90rxCBlQJTZ6dcXE6ckLgztocXan ybEesg0w0t4ho70h2fHUM/ko5PNx7NQ/vESBrAa8LwVDk66GNGbIbRYyJ1WYu9ky5qwVqzODiFQY wN4uUT0xANxgkra1h35Qq8RDkLTcV7T/i7kinChIMFvw8IA= --===============0927876271==--