mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 11:31:51 +01:00
branches/zip: Roll back dictionary transaction(s) before scanning *.ibd files
innobase_start_or_create_for_mysql(): Roll back data dictionary transactions before scanning the *.ibd files. Then, data dictionary records can be loaded to the cache before opening the *.ibd files. recv_recovery_rollback_active(): Refactored from recv_recovery_from_checkpoint_finish(). rb://235, committing without review, because this is needed for TablespaceDictionary.
This commit is contained in:
parent
e106d9d5ac
commit
ca0d3c8309
3 changed files with 26 additions and 16 deletions
|
@ -176,6 +176,12 @@ UNIV_INTERN
|
|||
void
|
||||
recv_recovery_from_checkpoint_finish(void);
|
||||
/*======================================*/
|
||||
/********************************************************//**
|
||||
Initiates the rollback of active transactions. */
|
||||
UNIV_INTERN
|
||||
void
|
||||
recv_recovery_rollback_active(void);
|
||||
/*===============================*/
|
||||
/*******************************************************//**
|
||||
Scans log from a buffer and stores new log data to the parsing buffer.
|
||||
Parses and hashes the log records if new data found. Unless
|
||||
|
|
|
@ -3212,8 +3212,6 @@ void
|
|||
recv_recovery_from_checkpoint_finish(void)
|
||||
/*======================================*/
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Apply the hashed log records to the respective file pages */
|
||||
|
||||
if (srv_force_recovery < SRV_FORCE_NO_LOG_REDO) {
|
||||
|
@ -3261,6 +3259,16 @@ recv_recovery_from_checkpoint_finish(void)
|
|||
The data dictionary latch should guarantee that there is at
|
||||
most one data dictionary transaction active at a time. */
|
||||
trx_rollback_or_clean_recovered(FALSE);
|
||||
}
|
||||
|
||||
/********************************************************//**
|
||||
Initiates the rollback of active transactions. */
|
||||
UNIV_INTERN
|
||||
void
|
||||
recv_recovery_rollback_active(void)
|
||||
/*===============================*/
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Drop partially created indexes. */
|
||||
row_merge_drop_temp_indexes();
|
||||
|
|
|
@ -1570,6 +1570,14 @@ innobase_start_or_create_for_mysql(void)
|
|||
dict_boot();
|
||||
trx_sys_init_at_db_start();
|
||||
|
||||
/* Initialize the fsp free limit global variable in the log
|
||||
system */
|
||||
fsp_header_get_free_limit();
|
||||
|
||||
/* recv_recovery_from_checkpoint_finish needs trx lists which
|
||||
are initialized in trx_sys_init_at_db_start(). */
|
||||
|
||||
recv_recovery_from_checkpoint_finish();
|
||||
if (srv_force_recovery < SRV_FORCE_NO_IBUF_MERGE) {
|
||||
/* The following call is necessary for the insert
|
||||
buffer to work with multiple tablespaces. We must
|
||||
|
@ -1585,26 +1593,14 @@ innobase_start_or_create_for_mysql(void)
|
|||
every table in the InnoDB data dictionary that has
|
||||
an .ibd file.
|
||||
|
||||
We also determine the maximum tablespace id used.
|
||||
|
||||
TODO: We may have incomplete transactions in the
|
||||
data dictionary tables. Does that harm the scanning of
|
||||
the data dictionary below? */
|
||||
We also determine the maximum tablespace id used. */
|
||||
|
||||
dict_check_tablespaces_and_store_max_id(
|
||||
recv_needed_recovery);
|
||||
}
|
||||
|
||||
srv_startup_is_before_trx_rollback_phase = FALSE;
|
||||
|
||||
/* Initialize the fsp free limit global variable in the log
|
||||
system */
|
||||
fsp_header_get_free_limit();
|
||||
|
||||
/* recv_recovery_from_checkpoint_finish needs trx lists which
|
||||
are initialized in trx_sys_init_at_db_start(). */
|
||||
|
||||
recv_recovery_from_checkpoint_finish();
|
||||
recv_recovery_rollback_active();
|
||||
|
||||
/* It is possible that file_format tag has never
|
||||
been set. In this case we initialize it to minimum
|
||||
|
|
Loading…
Add table
Reference in a new issue