diff --git a/mysql-test/suite/encryption/r/innodb-encr-threads.result b/mysql-test/suite/encryption/r/innodb-encr-threads.result new file mode 100644 index 00000000000..900ed13e00b --- /dev/null +++ b/mysql-test/suite/encryption/r/innodb-encr-threads.result @@ -0,0 +1,7 @@ +create table t1 (i int) engine=innodb; +set global innodb_encryption_threads = 1; +set global innodb_encryption_rotate_key_age = 2; +insert t1 values (1); +set global innodb_encryption_threads = 0; +set global innodb_encryption_rotate_key_age = 1; +drop table t1; diff --git a/mysql-test/suite/encryption/t/innodb-encr-threads.test b/mysql-test/suite/encryption/t/innodb-encr-threads.test new file mode 100644 index 00000000000..4485003e4af --- /dev/null +++ b/mysql-test/suite/encryption/t/innodb-encr-threads.test @@ -0,0 +1,14 @@ +--source include/have_innodb.inc +--source include/have_file_key_management_plugin.inc + +# +# MDEV-8159 InnoDB: Failing assertion: key_state->key_id +# +create table t1 (i int) engine=innodb; +set global innodb_encryption_threads = 1; +set global innodb_encryption_rotate_key_age = 2; +insert t1 values (1); +set global innodb_encryption_threads = 0; +set global innodb_encryption_rotate_key_age = 1; +drop table t1; + diff --git a/storage/innobase/fil/fil0crypt.cc b/storage/innobase/fil/fil0crypt.cc index 7d7755efdf9..2d6eefa9a30 100644 --- a/storage/innobase/fil/fil0crypt.cc +++ b/storage/innobase/fil/fil0crypt.cc @@ -203,7 +203,6 @@ fil_space_create_crypt_data( crypt_data->min_key_version = 0; } else { crypt_data->type = CRYPT_SCHEME_1; - crypt_data->key_id = key_id; crypt_data->min_key_version = encryption_key_get_latest_version(key_id); } @@ -212,6 +211,7 @@ fil_space_create_crypt_data( crypt_data->locker = crypt_data_scheme_locker; my_random_bytes(crypt_data->iv, sizeof(crypt_data->iv)); crypt_data->encryption = FIL_SPACE_ENCRYPTION_DEFAULT; + crypt_data->key_id = key_id; return crypt_data; } diff --git a/storage/xtradb/fil/fil0crypt.cc b/storage/xtradb/fil/fil0crypt.cc index 878c34a5091..b010bfb733e 100644 --- a/storage/xtradb/fil/fil0crypt.cc +++ b/storage/xtradb/fil/fil0crypt.cc @@ -203,7 +203,6 @@ fil_space_create_crypt_data( crypt_data->min_key_version = 0; } else { crypt_data->type = CRYPT_SCHEME_1; - crypt_data->key_id = key_id; crypt_data->min_key_version = encryption_key_get_latest_version(key_id); } @@ -212,6 +211,7 @@ fil_space_create_crypt_data( crypt_data->locker = crypt_data_scheme_locker; my_random_bytes(crypt_data->iv, sizeof(crypt_data->iv)); crypt_data->encryption = FIL_SPACE_ENCRYPTION_DEFAULT; + crypt_data->key_id = key_id; return crypt_data; }