Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.5, 10.6, 10.7(EOL)
Description
MDEV-25113 removed the acquisition of buf_pool.flush_list_mutex from buf_page_write_complete(). But, acquiring buf_pool.mutex should not really be necessary except in eviction flushing (request.is_LRU()) or when the block->lock is not available (no uncompressed copy of a ROW_FORMAT=COMPRESSED exists in the buffer pool).
In the common case of checkpoint flushing, we can actually rely on the block->lock to protect us. The only other reason to hold buf_pool.mutex was updating the count of outstanding page writes (buf_pool.n_flush_list()). That counter is actually redundant, because we can refer to write_slots->pending_io_count().
Finally, we would remove pthread_cond_broadcast(&buf_pool.done_flush_list) from buf_page_write_complete(). Only the buf_flush_page_cleaner would call that. To wait for page writes to complete, os_aio_wait_until_no_pending_writes() may be invoked.
Interface change:
New parameter Innodb_buffer_pool_pages_split has been added
Attachments
Issue Links
- blocks
-
MDEV-16526 Overhaul the InnoDB page flushing
- Closed
-
MDEV-33053 InnoDB LRU flushing does not run before running out of buffer pool
- Closed
- causes
-
MDEV-30900 MacOS Crash when testing
- Closed
-
MDEV-31084 Assertion `waiting' failed in TP_connection_generic::wait_end
- Closed
-
MDEV-31114 Assertion `!tls_worker_data->is_waiting()' in tpool::thread_pool_generic::wait_begin
- Closed
-
MDEV-31309 The status variable Innodb_buffer_pool_read_requests is not updated correctly
- Closed
-
MDEV-31350 test innodb.recovery_memory failed on '21 failed attempts to flush a page'
- Closed
-
MDEV-32029 Assertion failures in log_sort_flush_list upon crash recovery
- Closed
-
MDEV-32588 InnoDB may hang when running out of buffer pool
- Closed
-
MDEV-33275 buf_flush_LRU(): mysql_mutex_assert_owner(&buf_pool.mutex) failed
- Closed
-
MDEV-33613 InnoDB may still hang when temporarily running out of buffer pool
- Closed
-
MDEV-34307 Recovery or mariadb-backup --prepare debug failure [FATAL] InnoDB: Page ... still fixed or dirty
- Closed
- is blocked by
-
MDEV-25113 Reduce effect of parallel background flush on select workload
- Closed
-
MDEV-26055 Adaptive flushing is still not getting invoked in 10.5.11
- Closed
-
MDEV-27058 Buffer page descriptors are too large
- Closed
- relates to
-
MDEV-28052 test main.implicit_commit crashed on sparc64
- Closed
-
MDEV-31048 InnoDB read_slots and write_slots are missing PERFORMANCE_SCHEMA instrumentation
- Closed
-
MDEV-32134 InnoDB hang in buf_flush_wait_LRU_batch_end()
- Closed
-
MDEV-32511 Race condition between page write completion and log checkpoint
- Closed
-
MDEV-26004 Excessive wait times in buf_LRU_get_free_block()
- Closed
-
MDEV-31350 test innodb.recovery_memory failed on '21 failed attempts to flush a page'
- Closed
-
MDEV-32681 Test case innodb.undo_truncate_recover frequent failure
- Closed