summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@oracle.com>2011-08-22 17:03:07 +0300
committerMarko Mäkelä <marko.makela@oracle.com>2011-08-22 17:03:07 +0300
commit49ee12d03b763a460cfcc371566465019a4dc067 (patch)
treee2ba3efb973d0fb3acbb3851a2849278a6e8742a /storage
parentf8ee5b48bacc7800f1803c8c3cd2e741ef4c2ba2 (diff)
downloadmariadb-git-49ee12d03b763a460cfcc371566465019a4dc067.tar.gz
Bug #11766591 59733: POSSIBLE DEADLOCK WHEN BUFFERED CHANGES ARE TO BE DISCARDED
The fix in revision id marko.makela@oracle.com-20110815091143-h3zbvm0pv8ni3qql introduced a false UNIV_SYNC_DEBUG alarm. Relax the assertion.
Diffstat (limited to 'storage')
-rw-r--r--storage/innodb_plugin/sync/sync0sync.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/storage/innodb_plugin/sync/sync0sync.c b/storage/innodb_plugin/sync/sync0sync.c
index 1b97e1f11f3..64aadffdfad 100644
--- a/storage/innodb_plugin/sync/sync0sync.c
+++ b/storage/innodb_plugin/sync/sync0sync.c
@@ -1248,7 +1248,13 @@ sync_thread_add_level(
TRUE));
break;
case SYNC_IBUF_TREE_NODE_NEW:
- ut_a(sync_thread_levels_contain(array, SYNC_IBUF_MUTEX));
+ /* ibuf_add_free_page() allocates new pages for the
+ change buffer while only holding the tablespace
+ x-latch. These pre-allocated new pages may only be
+ taken in use while holding ibuf_mutex, in
+ btr_page_alloc_for_ibuf(). */
+ ut_a(sync_thread_levels_contain(array, SYNC_IBUF_MUTEX)
+ || sync_thread_levels_contain(array, SYNC_FSP));
break;
case SYNC_IBUF_INDEX_TREE:
if (sync_thread_levels_contain(array, SYNC_FSP)) {