mariadb/storage/xtradb
Marko Mäkelä 582545a384 MDEV-13637 InnoDB change buffer housekeeping can cause redo log overrun and possibly deadlocks
The function ibuf_remove_free_page() may be called while the caller
is holding several mutexes or rw-locks. Because of this, this
housekeeping loop may cause performance glitches for operations that
involve tables that are stored in the InnoDB system tablespace.
Also deadlocks might be possible.

The worst impact of all is that due to the mutexes being held, calls to
log_free_check() had to be skipped during this housekeeping.
This means that the cyclic InnoDB redo log may be overwritten.
If the system crashes during this, it would be unable to recover.

The entry point to the problematic code is ibuf_free_excess_pages().
It would make sense to call it before acquiring any mutexes or rw-locks,
in any 'pessimistic' operation that involves the system tablespace.

fseg_create_general(), fseg_alloc_free_page_general(): Do not call
ibuf_free_excess_pages() while potentially holding some latches.

ibuf_remove_free_page(): Do call log_free_check(), like every operation
that is about to generate redo log should do.

ibuf_free_excess_pages(): Remove some assertions that are replaced
by stricter assertions in the log_free_check() that is now called by
ibuf_remove_free_page().

row_ins_sec_index_entry(), row_undo_ins_remove_sec_low(),
row_undo_mod_del_mark_or_remove_sec_low(),
row_undo_mod_del_unmark_sec_and_undo_update(): Call
ibuf_free_excess_pages() if the operation may involve allocating pages
and change buffering in the system tablespace.
2017-08-25 14:01:51 +03:00
..
api Merge branch 'merge-xtradb-5.6' into 10.0 2015-10-09 18:16:27 +02:00
btr Merge remote-tracking branch 'origin/10.0' into 10.0 2017-05-18 15:45:55 +03:00
buf Merge branch 'merge-xtradb-5.6' into 10.0 2017-08-02 12:15:58 +03:00
data 5.6.31-77.0 2016-08-10 19:24:58 +02:00
dict MDEV-13325: InnoDB assert dict_sys->size > 0 during ALTER TABLE 2017-07-21 16:05:20 +03:00
dyn Merge branch '5.5' into 10.0 2017-03-03 01:37:54 +02:00
eval move to storage/xtradb 2015-05-04 19:15:28 +02:00
fil Merge remote-tracking branch 'origin/10.0' into 10.0 2017-05-18 15:45:55 +03:00
fsp MDEV-13637 InnoDB change buffer housekeeping can cause redo log overrun and possibly deadlocks 2017-08-25 14:01:51 +03:00
fts Merge branch 'merge-xtradb-5.6' into 10.0 2017-05-17 12:11:12 +03:00
fut move to storage/xtradb 2015-05-04 19:15:28 +02:00
ha 5.6.30-76.3 2016-06-21 14:20:09 +02:00
handler MDEV-13325: InnoDB assert dict_sys->size > 0 during ALTER TABLE 2017-07-21 16:05:20 +03:00
ibuf MDEV-13637 InnoDB change buffer housekeeping can cause redo log overrun and possibly deadlocks 2017-08-25 14:01:51 +03:00
include Merge branch 'merge-xtradb-5.6' into 10.0 2017-08-02 12:15:58 +03:00
lock Never pass NULL to innobase_get_stmt() 2017-05-17 08:11:01 +03:00
log Merge branch 'merge-xtradb-5.6' into 10.0 2017-08-02 12:15:58 +03:00
mach 5.6.35-80.0 2017-03-04 20:50:02 +02:00
mem 5.6.31-77.0 2016-08-10 19:24:58 +02:00
mtr Merge branch '5.5' into 10.0 2017-03-03 01:37:54 +02:00
mysql-test/storage_engine MDEV-12915 ST_Centroid does not return the same result than MySQL 2017-08-01 09:52:59 +02:00
os MDEV-13059 XtraDB hangs on Windows due to failing to release block->lock X-latch 2017-06-12 18:43:23 +00:00
page 5.6.35-80.0 2017-03-04 20:50:02 +02:00
pars Merge branch 'merge-xtradb-5.6' into 10.0 2017-05-17 12:11:12 +03:00
que 5.6.24-72.2 2015-06-16 11:04:40 +02:00
read move to storage/xtradb 2015-05-04 19:15:28 +02:00
rem Fix some __attribute__((nonnull)) misuse 2017-05-18 09:07:15 +03:00
row MDEV-13637 InnoDB change buffer housekeeping can cause redo log overrun and possibly deadlocks 2017-08-25 14:01:51 +03:00
srv MDEV-13325: InnoDB assert dict_sys->size > 0 during ALTER TABLE 2017-07-21 16:05:20 +03:00
sync Silence bogus GCC 7 warnings -Wimplicit-fallthrough 2017-05-17 08:07:02 +03:00
trx MDEV-13606 XA PREPARE transactions should survive innodb_force_recovery=1 or 2 2017-08-23 13:03:13 +03:00
usr Remove redundant UT_LIST_INIT() calls 2017-05-17 10:33:49 +03:00
ut MDEV-9276: MySQL Bug #78754: FK definitions missing from SHOW CREATE TABLE in "innodb_read_only" mode 2015-12-14 22:10:37 +02:00
CMakeLists.txt compilation fix for SLES 11 SP4 2017-08-13 23:37:21 +02:00
COPYING.Google move to storage/xtradb 2015-05-04 19:15:28 +02:00
COPYING.Percona move to storage/xtradb 2015-05-04 19:15:28 +02:00
Doxyfile move to storage/xtradb 2015-05-04 19:15:28 +02:00
ha_innodb.def move to storage/xtradb 2015-05-04 19:15:28 +02:00