I have InnoDB assertion failure during the trx rollback
160316 10:47:31 InnoDB: Rolling back trx with id 5ADBE4173, 1 rows to undo
160316 10:47:31 InnoDB: Assertion failure in thread 140611160659712 in file fut0lst.ic line 83
InnoDB: Failing assertion: addr.page == FIL_NULL || addr.bof
I've managed to start MySQL with innodb_force_recovery = 3
(SRV_FORCE_NO_TRX_UNDO). Now I can see this transaction in INFORMATION_SCHEMA
:
mysql> select * from information_schema.innodb_trx\G
*************************** 1. row ***************************
trx_id: 5ADBE4173
trx_state: RUNNING
trx_started: 2016-03-16 11:16:08
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 1
trx_mysql_thread_id: 0
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 0
trx_lock_structs: 0
trx_lock_memory_bytes: 376
trx_rows_locked: 0
trx_rows_modified: 1
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 10000
1 row in set (0.00 sec)
mysql>
It also appears in SHOW ENGINE InnoDB STATUS
:
TRANSACTIONS
------------
Trx id counter 5ADBE4303
Purge done for trx's n:o < 0 undo n:o < 0
History list length 1897
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 56285, OS thread handle 0x7f31cdca4700, query id 174313 localhost root
show engine innodb status
---TRANSACTION 5ADBE4173, ACTIVE 590 sec recovered trx
, undo log entries 1
----------------------------
END OF INNODB MONITOR OUTPUT
============================
MySQL documentation states that "You cannot cancel transactions that are in the process of being rolled back."
So is there any way to know which tables it uses? And if it is, can I just drop the offensive tables and restart server back with innodb_force_shutdown = 0
?