Commit graph

2 commits

Author SHA1 Message Date
Sergey Vojtovich
954d21deb2 MDEV-4897 - Assertion `share->tdc.prev == 0 && share->tdc.next == 0'
failed in TABLE_SHARE* tdc_acquire_share(THD*, const char*,
            const char*, const char*, uint, uint, TABLE**)

Removed false assertions.

When multiple threads acquire the same previously unused share,
only one thread shall remove share from unused list (the one that
has was_unused == true). Other threads will ignore this step and
may continue even if share is not yet removed from unused list.
2013-08-15 18:15:32 +04:00
Sergey Vojtovich
b7f9c89423 MDEV-4702 - Reduce usage of LOCK_open
Following variables do not require LOCK_open protection anymore:
- table_def_cache (renamed to tdc_hash) is protected by rw-lock
  LOCK_tdc_hash;
- table_def_shutdown_in_progress doesn't need LOCK_open protection;
- last_table_id use atomics;
- TABLE_SHARE::ref_count (renamed to TABLE_SHARE::tdc.ref_count)
  is protected by TABLE_SHARE::tdc.LOCK_table_share;
- TABLE_SHARE::next, ::prev (renamed to tdc.next and tdc.prev),
  oldest_unused_share, end_of_unused_share are protected by
  LOCK_unused_shares;
- TABLE_SHARE::m_flush_tickets (renamed to tdc.m_flush_tickets)
  is protected by TABLE_SHARE::tdc.LOCK_table_share;
- refresh_version (renamed to tdc_version) use atomics.
2013-08-14 12:48:50 +04:00