diff options
author | Thirunarayanan Balathandayuthapani <thiru@mariadb.com> | 2019-06-13 16:31:06 +0530 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2019-06-13 16:13:51 +0300 |
commit | e9145aab44f3c052868836f2fe1b9ca87ae6895b (patch) | |
tree | f716de0dde3a57df4adc74b15214ab66bae83106 /sql/sql_update.cc | |
parent | 371a8a6615a6ebaa9867d582ca3096cbd64e0dee (diff) | |
download | mariadb-git-e9145aab44f3c052868836f2fe1b9ca87ae6895b.tar.gz |
MDEV-19435 buf_fix_count > 0 for corrupted page when it exits the LRU list
Problem:
=========
One of the purge thread access the corrupted page and tries to remove from
LRU list. In the mean time, other purge threads are waiting for same page
in buf_wait_for_read(). Assertion(buf_fix_count == 0) fails for the
purge thread which tries to remove the page from LRU list.
Solution:
========
- Set the page id as FIL_NULL to indicate the page is corrupted before
removing the block from LRU list. Acquire hash lock for the particular
page id and wait for the other threads to release buf_fix_count
for the block.
- Added the error check for btr_cur_open() in row_search_on_row_ref().
Diffstat (limited to 'sql/sql_update.cc')
0 files changed, 0 insertions, 0 deletions