From a94cabd503aab31afd99b99e3d1d0ace221c004a Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 14 May 2015 08:37:34 +0200 Subject: [PATCH] MDEV-8159 InnoDB: Failing assertion: key_state->key_id to simplify various checks, set crypt_data->key_id even for not encrypted tablespaces --- .../suite/encryption/r/innodb-encr-threads.result | 7 +++++++ .../suite/encryption/t/innodb-encr-threads.test | 14 ++++++++++++++ storage/innobase/fil/fil0crypt.cc | 2 +- storage/xtradb/fil/fil0crypt.cc | 2 +- 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 mysql-test/suite/encryption/r/innodb-encr-threads.result create mode 100644 mysql-test/suite/encryption/t/innodb-encr-threads.test 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; }