mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-11835: InnoDB: Failing assertion: free_slot != NULL on
restarting server with encryption and read-only buf0buf.cc: Temporary slots used in encryption was calculated by read_threads * write_threads. However, in read-only mode write_threads is zero. Correct way is to calculate (read_threads + write_threads) * max pending IO requests.
This commit is contained in:
3
mysql-test/suite/encryption/r/innodb-read-only.result
Normal file
3
mysql-test/suite/encryption/r/innodb-read-only.result
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Wait max 10 min for key encryption threads to encrypt all spaces
|
||||||
|
# Success!
|
||||||
|
# All done
|
3
mysql-test/suite/encryption/t/innodb-read-only.opt
Normal file
3
mysql-test/suite/encryption/t/innodb-read-only.opt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
--innodb-encrypt-tables=1
|
||||||
|
--innodb-encryption-threads=4
|
||||||
|
--innodb-tablespaces-encryption
|
34
mysql-test/suite/encryption/t/innodb-read-only.test
Normal file
34
mysql-test/suite/encryption/t/innodb-read-only.test
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
--source suite/encryption/include/have_file_key_management_plugin.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
|
--echo # Wait max 10 min for key encryption threads to encrypt all spaces
|
||||||
|
let $cnt=600;
|
||||||
|
while ($cnt)
|
||||||
|
{
|
||||||
|
let $success=`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0`;
|
||||||
|
if ($success)
|
||||||
|
{
|
||||||
|
let $cnt=0;
|
||||||
|
}
|
||||||
|
if (!$success)
|
||||||
|
{
|
||||||
|
real_sleep 1;
|
||||||
|
dec $cnt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$success)
|
||||||
|
{
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION;
|
||||||
|
SHOW STATUS LIKE 'innodb_encryption%';
|
||||||
|
-- die Timeout waiting for encryption threads
|
||||||
|
}
|
||||||
|
--echo # Success!
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-11835: InnoDB: Failing assertion: free_slot != NULL on
|
||||||
|
# restarting server with encryption and read-only
|
||||||
|
#
|
||||||
|
--let $restart_parameters= --innodb-read-only=1 --innodb-encrypt-tables=1
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
--echo # All done
|
@ -1508,7 +1508,7 @@ buf_pool_init_instance(
|
|||||||
|
|
||||||
/* Initialize the temporal memory array and slots */
|
/* Initialize the temporal memory array and slots */
|
||||||
buf_pool->tmp_arr = (buf_tmp_array_t *)mem_zalloc(sizeof(buf_tmp_array_t));
|
buf_pool->tmp_arr = (buf_tmp_array_t *)mem_zalloc(sizeof(buf_tmp_array_t));
|
||||||
ulint n_slots = srv_n_read_io_threads * srv_n_write_io_threads * (8 * OS_AIO_N_PENDING_IOS_PER_THREAD);
|
ulint n_slots = (srv_n_read_io_threads + srv_n_write_io_threads) * (8 * OS_AIO_N_PENDING_IOS_PER_THREAD);
|
||||||
buf_pool->tmp_arr->n_slots = n_slots;
|
buf_pool->tmp_arr->n_slots = n_slots;
|
||||||
buf_pool->tmp_arr->slots = (buf_tmp_buffer_t*)mem_zalloc(sizeof(buf_tmp_buffer_t) * n_slots);
|
buf_pool->tmp_arr->slots = (buf_tmp_buffer_t*)mem_zalloc(sizeof(buf_tmp_buffer_t) * n_slots);
|
||||||
|
|
||||||
|
@ -1571,7 +1571,7 @@ buf_pool_init_instance(
|
|||||||
|
|
||||||
/* Initialize the temporal memory array and slots */
|
/* Initialize the temporal memory array and slots */
|
||||||
buf_pool->tmp_arr = (buf_tmp_array_t *)mem_zalloc(sizeof(buf_tmp_array_t));
|
buf_pool->tmp_arr = (buf_tmp_array_t *)mem_zalloc(sizeof(buf_tmp_array_t));
|
||||||
ulint n_slots = srv_n_read_io_threads * srv_n_write_io_threads * (8 * OS_AIO_N_PENDING_IOS_PER_THREAD);
|
ulint n_slots = (srv_n_read_io_threads + srv_n_write_io_threads) * (8 * OS_AIO_N_PENDING_IOS_PER_THREAD);
|
||||||
buf_pool->tmp_arr->n_slots = n_slots;
|
buf_pool->tmp_arr->n_slots = n_slots;
|
||||||
buf_pool->tmp_arr->slots = (buf_tmp_buffer_t*)mem_zalloc(sizeof(buf_tmp_buffer_t) * n_slots);
|
buf_pool->tmp_arr->slots = (buf_tmp_buffer_t*)mem_zalloc(sizeof(buf_tmp_buffer_t) * n_slots);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user