Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.5.0
-
None
Description
As noted at the start of 10.5-Test-Remove-innodb_log_optimize_ddl-and-FlushObserve.patch (which is a minimal port of something that we want to do in MDEV-12353), purge_sys.stop() was broken in MDEV-16264. It no longer waits for the purge worker tasks to finish processing the current event.
There likely is a race condition, but that race condition is not prominent before we remove the FlushObserver, like the patch does. For the record, I also ported the change to 10.3, and did not observe any crash in the two tests that exercise FLUSH TABLES…FOR EXPORT.
The crash would usually be with the following assertion failure:
10.5ish |
2020-02-06 10:01:33 4 [Note] InnoDB: Sync to disk of `test`.`t1` started.
|
2020-02-06 10:01:33 4 [Note] InnoDB: Stopping purge
|
mysqld: /mariadb/10.5-MDEV-12353bis/storage/innobase/buf/buf0lru.cc:657: void buf_flush_dirty_pages(buf_pool_t *, ulint, bool, ulint): Assertion `first || buf_pool_get_dirty_pages_count(buf_pool, id) == 0' failed.
|
…
|
#7 0x000055bbae5a916a in buf_flush_dirty_pages (buf_pool=0x55bbb1c269d0, id=5, flush=true, first=0) at /mariadb/10.5-MDEV-12353bis/storage/innobase/buf/buf0lru.cc:656
|
#8 buf_LRU_flush_or_remove_pages (id=5, flush=true, first=0) at /mariadb/10.5-MDEV-12353bis/storage/innobase/buf/buf0lru.cc:670
|
#9 0x000055bbae491d14 in row_quiesce_table_start (table=<optimized out>, trx=0x7fd726c62138) at /mariadb/10.5-MDEV-12353bis/storage/innobase/row/row0quiesce.cc:538
|
Attachments
Issue Links
- blocks
-
MDEV-12353 Efficient InnoDB redo log record format
- Closed
- is caused by
-
MDEV-16264 Implement a common work queue for InnoDB background tasks
- Closed