-
Dmitry Lenev authored
Implemented support for notification of storage engines about acquisition and release of exclusive metadata locks, which allow metadata to be changed. Such support allows NDB SE to prevent concurrent changes to object metadata on different cluster nodes and opens path to implementation of proper cluster-wide metadata locking. Introduced new handlerton method which is called by MDL subsystem each time before X lock acquisition. This method gets MDL_key in order to be able to identify object on which lock is acquired. Lock acquisition can be refused by SE by returning error from this method. The same method (with a different notification_type argument) is called after release of X lock. Since in case of ALTER TABLE statement upgrade to X metadata lock happens late in the process of statement execution, it is expensive to abort statement execution as result of failed SE notification at upgrade time. To alleviate this issue we additionally notify SE at the start of ALTER TABLE on a base table and at its end. This gives SE chance to abort execution of ALTER TABLE early in the process without wasting precious resources.
Dmitry Lenev authoredImplemented support for notification of storage engines about acquisition and release of exclusive metadata locks, which allow metadata to be changed. Such support allows NDB SE to prevent concurrent changes to object metadata on different cluster nodes and opens path to implementation of proper cluster-wide metadata locking. Introduced new handlerton method which is called by MDL subsystem each time before X lock acquisition. This method gets MDL_key in order to be able to identify object on which lock is acquired. Lock acquisition can be refused by SE by returning error from this method. The same method (with a different notification_type argument) is called after release of X lock. Since in case of ALTER TABLE statement upgrade to X metadata lock happens late in the process of statement execution, it is expensive to abort statement execution as result of failed SE notification at upgrade time. To alleviate this issue we additionally notify SE at the start of ALTER TABLE on a base table and at its end. This gives SE chance to abort execution of ALTER TABLE early in the process without wasting precious resources.
Loading