the problem happens when pbxt is the default storage engine. whenever a new thread starts (a thread that inits a THD instance) the following code is executed in function thd_init_vars or something like that (called from THD::THD):
the problem is that pbxt starts its own worker threads that init corresponding THD instances. In some sense pbxt locks itself. to solve this problem we'd need to make another 'background' plugin that would shutdown all pbxt worker threads or have 2-phase shutdown on server side.
the problem happens when pbxt is the default storage engine. whenever a new thread starts (a thread that inits a THD instance) the following code is executed in function thd_init_vars or something like that (called from THD::THD):
2456 pthread_ mutex_lock( &LOCK_plugin) ; table_plugin= plugin_ lock(NULL, global_ system_ variables. table_plugin) ; plugin_ unlock( NULL, old_table_plugin);
2457 thd->variables.
2458 my_intern_
2459 intern_
the problem is that pbxt starts its own worker threads that init corresponding THD instances. In some sense pbxt locks itself. to solve this problem we'd need to make another 'background' plugin that would shutdown all pbxt worker threads or have 2-phase shutdown on server side.