Comment 2 for bug 1154558

Revision history for this message
Valerii Kravchuk (valerii-kravchuk) wrote :

This is suspicious in your log:

---TRANSACTION 108A468, ACTIVE 120653 sec
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_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
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);
                if (ref_count == 0) {
                        break;
                }

                /* 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. */
                if (retries >= 60000) {
                        ut_error;
                }
        }

Not sure what to do with this, if only make adaptive indexing smaller or switch it off entirely.