MDEV-23439 Assertion size == space->size failed in buf_read_ahead_random
The debug assertion is bogus, and we had removed it in commit b1ab211dee599eabd9a5b886fafa3adea29ae041 (MDEV-15053) in the MariaDB Server 10.5 branch. For a small data file, fil_space_extend_must_retry() would always allocate a minimum size of 4*innodb_page_size. It is possible that random read-ahead will be triggered for a smaller file than this. In the observed case, the read-ahead was triggered for a 6-page file that used ROW_FORMAT=COMPRESSED with 8KiB page size. So, the desired file size was 49152 bytes, but the actual size was 65536 bytes.
This commit is contained in:
parent
4387e3a13b
commit
18f374cb20
@ -280,23 +280,6 @@ buf_read_ahead_random(
|
||||
* buf_read_ahead_random_area;
|
||||
|
||||
if (fil_space_t* space = fil_space_acquire(page_id.space())) {
|
||||
#ifdef UNIV_DEBUG
|
||||
if (srv_file_per_table) {
|
||||
ulint size = 0;
|
||||
|
||||
for (const fil_node_t* node =
|
||||
UT_LIST_GET_FIRST(space->chain);
|
||||
node != NULL;
|
||||
node = UT_LIST_GET_NEXT(chain, node)) {
|
||||
|
||||
size += ulint(os_file_get_size(node->handle)
|
||||
/ page_size.physical());
|
||||
}
|
||||
|
||||
ut_ad(size == space->size);
|
||||
}
|
||||
#endif /* UNIV_DEBUG */
|
||||
|
||||
high = space->max_page_number_for_io(high);
|
||||
fil_space_release(space);
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user