InnoDB: Assertion failure in thread N in file dict0dict.c line 1900
Bug #1154558 reported by
renton
This bug report is a duplicate of:
Bug #1086227: InnoDB: Assertion failure in thread <nr> in file dict0dict.c line 1883 | in dict_index_remove_from_cache | on ALTER TABLE (related to Bug 897258).
Edit
Remove
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS |
New
|
Undecided
|
Valerii Kravchuk |
Bug Description
Hi,
I use percona-server on my LAMP shared hosting. On the average each mysqld provides 3-5k of clients' bases, in total there's about 65k of active bases. It works rather stable on percona 5.1 that's why I didn't hurry up with upgrading to 5.5 bases.
But after upgraning to 5.5 the servers started hanging while providing services for even 50 bases.
Can anything be done here?
Thank you in advance.
Changed in percona-server: | |
status: | Incomplete → New |
To post a comment you must log in.
This is suspicious in your log:
---TRANSACTION 108A468, ACTIVE 120653 sec attr_products WHERE (attr_value LIKE "%" AND attr_id=25) AND product_id IN (SELECT product_id from products_ attr_products WHERE (attr_value LIKE "%" AND attr_id=24) AND product_id IN (SELECT product_id from products_ attr_products WHERE (attr_value LIKE "%" AND attr_id=23) AND product_id IN (SELECT product_id from products_ attr_products WHERE (attr_value LIKE "%" AND attr_id=22) AND product_id IN (SELECT product_id from products_ attr_products WHERE (attr_value LIKE "%" AND attr_id=21) AND product_id IN (SELECT product_id from products_ attr_products WHERE (attr_va
mysql tables in use 7, locked 0
MySQL thread id 189440, OS thread handle 0x795f0f75d700, query id 78664538 81.177.174.10 gb_tmt Sending data
SELECT product_id from products_
Trx read view will not see trx with id >= 108A469, sees < 108A469
Is it normal to have transactions active for so long time? had you got similar ones in 5.1.x?
Assertion failure happened in the dict_index_ remove_ from_cache( ) function that has this 600 seconds limit hardcoded:
for (;;) {
ulint ref_count = btr_search_ info_get_ ref_count( info, index->id);
break;
if (ref_count == 0) {
}
/* Sleep for 10ms before trying again. */
os_thread_ sleep(10000) ;
++retries;
if (retries % 500 == 0) {
/* No luck after 5 seconds of wait. */
fprintf( stderr, "InnoDB: Error: Waited for"
" %lu secs for hash index"
" ref_count (%lu) to drop"
" to 0.\n"
"index: \"%s\""
" table: \"%s\"\n",
retries/ 100,
ref_ count,
index- >name,
table- >name);
}
/* To avoid a hang here we commit suicide if the
ref_count doesn't drop to zero in 600 seconds. */
ut_error;
if (retries >= 60000) {
}
}
Not sure what to do with this, if only make adaptive indexing smaller or switch it off entirely.