maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #01729
bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2776)
#At lp:maria
2776 knielsen@xxxxxxxxxxxxxxx 2009-12-14 [merge]
Merge latest PBXT fixes from Paul.
modified:
storage/pbxt/src/myxt_xt.cc
=== modified file 'storage/pbxt/src/myxt_xt.cc'
--- a/storage/pbxt/src/myxt_xt.cc 2009-12-01 09:50:46 +0000
+++ b/storage/pbxt/src/myxt_xt.cc 2009-12-10 11:36:05 +0000
@@ -3041,14 +3041,6 @@ xtPublic MX_CHARSET_INFO *myxt_getcharse
return (MX_CHARSET_INFO *)&my_charset_utf8_general_ci;
}
-#ifdef DBUG_OFF
-//typedef struct st_plugin_int *plugin_ref;
-#define REF_MYSQL_PLUGIN(x) (x)
-#else
-//typedef struct st_plugin_int **plugin_ref;
-#define REF_MYSQL_PLUGIN(x) (*(x))
-#endif
-
xtPublic void *myxt_create_thread()
{
#ifdef DRIZZLED
@@ -3109,14 +3101,18 @@ xtPublic void *myxt_create_thread()
/*
* If PBXT is the default storage engine, then creating any THD objects will add extra
- * references to the PBXT plugin object and will effectively deadlock the plugin so
- * that server will have to force plugin shutdown. To avoid deadlocking and forced shutdown
- * we must dereference the plugin after creating THD objects.
+ * references to the PBXT plugin object. because the threads are created but PBXT
+ * this creates a self reference, and the reference count does not go to zero
+ * on shutdown.
+ *
+ * The server then issues a message that it is forcing shutdown of the plugin.
+ *
+ * However, the engine reference is not required by the THDs used by PBXT, so
+ * I just remove them here.
*/
- LEX_STRING& plugin_name = REF_MYSQL_PLUGIN(new_thd->variables.table_plugin)->name;
- if ((plugin_name.length == 4) && (strncmp(plugin_name.str, "PBXT", plugin_name.length) == 0)) {
- REF_MYSQL_PLUGIN(new_thd->variables.table_plugin)->ref_count--;
- }
+ plugin_unlock(NULL, new_thd->variables.table_plugin);
+ new_thd->variables.table_plugin = NULL;
+
new_thd->thread_stack = (char *) &new_thd;
new_thd->store_globals();
lex_start(new_thd);
@@ -3151,17 +3147,6 @@ xtPublic void myxt_destroy_thread(void *
#else
close_thread_tables(thd);
#endif
-
- /*
- * In myxt_create_thread we decremented plugin ref-count to avoid dead-locking.
- * Here we need to increment ref-count to avoid assertion failures.
- */
- if (thd->variables.table_plugin) {
- LEX_STRING& plugin_name = REF_MYSQL_PLUGIN(thd->variables.table_plugin)->name;
- if ((plugin_name.length == 4) && (strncmp(plugin_name.str, "PBXT", plugin_name.length) == 0)) {
- REF_MYSQL_PLUGIN(thd->variables.table_plugin)->ref_count++;
- }
- }
delete thd;