MDEV-13516: encryption.create_or_replace test fails in buildbot with InnoDB assertion failure

fil_crypt_rotate_pages
	If tablespace is marked as stopping stop also page rotation

fil_crypt_flush_space
	If tablespace is marked as stopping do not try to read
	page 0 and write it back.
This commit is contained in:
Jan Lindström 2018-04-16 15:06:41 +03:00
parent 3e12e39fb3
commit 3d1ad2a5e8
2 changed files with 32 additions and 16 deletions

View file

@ -2019,6 +2019,12 @@ fil_crypt_rotate_pages(
continue;
}
/* If space is marked as stopping, stop rotating
pages. */
if (state->space->is_stopping()) {
break;
}
fil_crypt_rotate_page(key_state, state);
}
}
@ -2067,20 +2073,22 @@ fil_crypt_flush_space(
crypt_data->type = CRYPT_SCHEME_UNENCRYPTED;
}
/* update page 0 */
mtr_t mtr;
mtr_start(&mtr);
if (!space->is_stopping()) {
/* update page 0 */
mtr_t mtr;
mtr_start(&mtr);
const uint zip_size = fsp_flags_get_zip_size(state->space->flags);
const uint zip_size = fsp_flags_get_zip_size(state->space->flags);
buf_block_t* block = buf_page_get_gen(space->id, zip_size, 0,
buf_block_t* block = buf_page_get_gen(space->id, zip_size, 0,
RW_X_LATCH, NULL, BUF_GET,
__FILE__, __LINE__, &mtr);
byte* frame = buf_block_get_frame(block);
byte* frame = buf_block_get_frame(block);
crypt_data->write_page0(frame, &mtr);
crypt_data->write_page0(frame, &mtr);
mtr_commit(&mtr);
mtr_commit(&mtr);
}
}
/***********************************************************************

View file

@ -2019,6 +2019,12 @@ fil_crypt_rotate_pages(
continue;
}
/* If space is marked as stopping, stop rotating
pages. */
if (state->space->is_stopping()) {
break;
}
fil_crypt_rotate_page(key_state, state);
}
}
@ -2067,20 +2073,22 @@ fil_crypt_flush_space(
crypt_data->type = CRYPT_SCHEME_UNENCRYPTED;
}
/* update page 0 */
mtr_t mtr;
mtr_start(&mtr);
if (!space->is_stopping()) {
/* update page 0 */
mtr_t mtr;
mtr_start(&mtr);
const uint zip_size = fsp_flags_get_zip_size(state->space->flags);
const uint zip_size = fsp_flags_get_zip_size(state->space->flags);
buf_block_t* block = buf_page_get_gen(space->id, zip_size, 0,
buf_block_t* block = buf_page_get_gen(space->id, zip_size, 0,
RW_X_LATCH, NULL, BUF_GET,
__FILE__, __LINE__, &mtr);
byte* frame = buf_block_get_frame(block);
byte* frame = buf_block_get_frame(block);
crypt_data->write_page0(frame, &mtr);
crypt_data->write_page0(frame, &mtr);
mtr_commit(&mtr);
mtr_commit(&mtr);
}
}
/***********************************************************************