Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-14587

dict_stats_process_entry_from_defrag_pool() fails to call dict_table_close() when index==NULL

    Details

      Description

      The function dict_stats_process_entry_from_defrag_pool() fails to invoke dict_table_close() when an index does not exist in the table (for example because it has been dropped):

      	dict_index_t*	index = dict_table_find_index_on_id(table, index_id);
       
      	if (index == NULL) {
      		return;
      	}
       
      	/* Check whether index is corrupted */
      	if (dict_index_is_corrupted(index)) {
      		dict_table_close(table, FALSE, FALSE);
      		return;
      	}
      

      As you can see above, existing but corrupted indexes are handled correctly.

      Failure to release a table handle should cause an infinite wait at some point in InnoDB, at least in DROP TABLE:

      2017-12-02 21:06:52 139784064132864 [Warning] InnoDB: Waited 270 seconds for ref-count on table: `db`.`tablename` space: 12345
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                marko Marko Mäkelä
                Reporter:
                marko Marko Mäkelä
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: