mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 19:41:47 +01:00
Backport into build-201102032246-5.1.52sp1
> ------------------------------------------------------------ > revno: 3351.14.280 > revision-id: inaam.rana@oracle.com-20101026205418-aq835zpvxdskdf4c > parent: jimmy.yang@oracle.com-20101025055121-j319j363abfgdh6n > committer: Inaam Rana <inaam.rana@oracle.com> > branch nick: mysql-5.1-innodb > timestamp: Tue 2010-10-26 16:54:18 -0400 > message: > Bug #57611 ibdata file and continuous growing undo logs > rb://498 > > Fix handling of update_undo_logs at trx commit. Previously, when > rseg->update_undo_list grows beyond 500 the update_undo_logs were > marked with state TRX_UNDO_TO_FREE which should have been > TRX_UNDO_TO_PURGE. > > Approved by: Sunny Bains
This commit is contained in:
parent
10fd22ad8b
commit
a0dfae2591
2 changed files with 8 additions and 28 deletions
|
@ -1752,21 +1752,11 @@ trx_undo_set_state_at_finish(
|
|||
|
||||
if (undo->size == 1
|
||||
&& mach_read_from_2(page_hdr + TRX_UNDO_PAGE_FREE)
|
||||
< TRX_UNDO_PAGE_REUSE_LIMIT) {
|
||||
< TRX_UNDO_PAGE_REUSE_LIMIT
|
||||
&& UT_LIST_GET_LEN(rseg->update_undo_list) < 500
|
||||
&& UT_LIST_GET_LEN(rseg->insert_undo_list) < 500) {
|
||||
|
||||
/* This is a heuristic to avoid the problem of all UNDO
|
||||
slots ending up in one of the UNDO lists. Previously if
|
||||
the server crashed with all the slots in one of the lists,
|
||||
transactions that required the slots of a different type
|
||||
would fail for lack of slots. */
|
||||
|
||||
if (UT_LIST_GET_LEN(rseg->update_undo_list) < 500
|
||||
&& UT_LIST_GET_LEN(rseg->insert_undo_list) < 500) {
|
||||
|
||||
state = TRX_UNDO_CACHED;
|
||||
} else {
|
||||
state = TRX_UNDO_TO_FREE;
|
||||
}
|
||||
state = TRX_UNDO_CACHED;
|
||||
|
||||
} else if (undo->type == TRX_UNDO_INSERT) {
|
||||
|
||||
|
|
|
@ -1823,21 +1823,11 @@ trx_undo_set_state_at_finish(
|
|||
|
||||
if (undo->size == 1
|
||||
&& mach_read_from_2(page_hdr + TRX_UNDO_PAGE_FREE)
|
||||
< TRX_UNDO_PAGE_REUSE_LIMIT) {
|
||||
< TRX_UNDO_PAGE_REUSE_LIMIT
|
||||
&& UT_LIST_GET_LEN(rseg->update_undo_list) < 500
|
||||
&& UT_LIST_GET_LEN(rseg->insert_undo_list) < 500) {
|
||||
|
||||
/* This is a heuristic to avoid the problem of all UNDO
|
||||
slots ending up in one of the UNDO lists. Previously if
|
||||
the server crashed with all the slots in one of the lists,
|
||||
transactions that required the slots of a different type
|
||||
would fail for lack of slots. */
|
||||
|
||||
if (UT_LIST_GET_LEN(rseg->update_undo_list) < 500
|
||||
&& UT_LIST_GET_LEN(rseg->insert_undo_list) < 500) {
|
||||
|
||||
state = TRX_UNDO_CACHED;
|
||||
} else {
|
||||
state = TRX_UNDO_TO_FREE;
|
||||
}
|
||||
state = TRX_UNDO_CACHED;
|
||||
|
||||
} else if (undo->type == TRX_UNDO_INSERT) {
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue