mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 03:17:20 +02:00
Relax assertions on shutdown after aborted startup.
A proper InnoDB shutdown after aborted startup was introduced
in commit 81b7fe9d38.
Also related to this is MDEV-11985, making read-only shutdown more robust.
If startup was aborted, there may exist recovered transactions that were
not rolled back. Relax the assertions accordingly.
This commit is contained in:
parent
070a8754c4
commit
66c6188a4b
6 changed files with 31 additions and 9 deletions
|
|
@ -11,9 +11,16 @@ DELETE FROM t1;
|
|||
SELECT * FROM t1;
|
||||
a
|
||||
42
|
||||
INSERT INTO t1 VALUES (123);
|
||||
INSERT INTO t1 VALUES (0),(123);
|
||||
BEGIN;
|
||||
DELETE FROM t1;
|
||||
DELETE FROM t1 WHERE a>0;
|
||||
# Persist the state of the above incomplete transaction by
|
||||
# causing a redo log write for another transaction.
|
||||
connect con1, localhost, root;
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
DELETE FROM t1 WHERE a=0;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
# Kill the server
|
||||
SELECT * FROM t1;
|
||||
ERROR 42000: Unknown storage engine 'InnoDB'
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ let $restart_parameters = --innodb-log-files-in-group=3 --innodb-log-file-size=5
|
|||
|
||||
SELECT * FROM t1;
|
||||
|
||||
INSERT INTO t1 VALUES (123);
|
||||
INSERT INTO t1 VALUES (0),(123);
|
||||
|
||||
let MYSQLD_DATADIR= `select @@datadir`;
|
||||
let SEARCH_ABORT = NOT FOUND;
|
||||
|
|
@ -57,7 +57,15 @@ let SEARCH_RANGE= -50000;
|
|||
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||
|
||||
BEGIN;
|
||||
DELETE FROM t1;
|
||||
DELETE FROM t1 WHERE a>0;
|
||||
|
||||
--echo # Persist the state of the above incomplete transaction by
|
||||
--echo # causing a redo log write for another transaction.
|
||||
--connect(con1, localhost, root)
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
DELETE FROM t1 WHERE a=0;
|
||||
--disconnect con1
|
||||
--connection default
|
||||
|
||||
--source include/kill_mysqld.inc
|
||||
|
||||
|
|
|
|||
|
|
@ -7609,7 +7609,8 @@ TABLE *create_schema_table(THD *thd, TABLE_LIST *table_list)
|
|||
case MYSQL_TYPE_BLOB:
|
||||
if (!(item= new (mem_root)
|
||||
Item_blob(thd, fields_info->field_name,
|
||||
fields_info->field_length)))
|
||||
std::min(unsigned (strlen(fields_info->field_name)),
|
||||
fields_info->field_length))))
|
||||
{
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1996, 2015, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -1097,6 +1098,7 @@ trx_sys_close(void)
|
|||
|
||||
/* Only prepared transactions may be left in the system. Free them. */
|
||||
ut_a(UT_LIST_GET_LEN(trx_sys->rw_trx_list) == trx_sys->n_prepared_trx
|
||||
|| !srv_was_started
|
||||
|| srv_read_only_mode
|
||||
|| srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2015, 2016, MariaDB Corporation.
|
||||
Copyright (c) 2015, 2017, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -635,7 +635,8 @@ trx_free_prepared(
|
|||
ut_a(trx_state_eq(trx, TRX_STATE_PREPARED)
|
||||
|| (trx_state_eq(trx, TRX_STATE_ACTIVE)
|
||||
&& trx->is_recovered
|
||||
&& (srv_read_only_mode
|
||||
&& (!srv_was_started
|
||||
|| srv_read_only_mode
|
||||
|| srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO)));
|
||||
ut_a(trx->magic_n == TRX_MAGIC_N);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -2021,7 +2022,8 @@ trx_undo_free_prepared(
|
|||
case TRX_UNDO_ACTIVE:
|
||||
/* lock_trx_release_locks() assigns
|
||||
trx->is_recovered=false */
|
||||
ut_a(srv_read_only_mode
|
||||
ut_a(!srv_was_started
|
||||
|| srv_read_only_mode
|
||||
|| srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -2042,7 +2044,8 @@ trx_undo_free_prepared(
|
|||
case TRX_UNDO_ACTIVE:
|
||||
/* lock_trx_release_locks() assigns
|
||||
trx->is_recovered=false */
|
||||
ut_a(srv_read_only_mode
|
||||
ut_a(!srv_was_started
|
||||
|| srv_read_only_mode
|
||||
|| srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO);
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue