Commit 662d8a86 authored by Sergey Vojtovich's avatar Sergey Vojtovich

Extended debug_sync_control life time

It now lives from THD constructor to THD destructor. Reset before THD is
released to a cache. Change user doesn't reset debug_sync_control anymore.

Needed to be able to make use of DEBUG_SYNC() at later stages like
ha_close_connection().
parent c5868644
...@@ -287,12 +287,6 @@ void debug_sync_end_thread(THD *thd) ...@@ -287,12 +287,6 @@ void debug_sync_end_thread(THD *thd)
{ {
st_debug_sync_control *ds_control= thd->debug_sync_control; st_debug_sync_control *ds_control= thd->debug_sync_control;
/*
This synchronization point can be used to synchronize on thread end.
This is the latest point in a THD's life, where this can be done.
*/
DEBUG_SYNC(thd, "thread_end");
if (ds_control->ds_action) if (ds_control->ds_action)
{ {
st_debug_sync_action *action= ds_control->ds_action; st_debug_sync_action *action= ds_control->ds_action;
...@@ -322,6 +316,20 @@ void debug_sync_end_thread(THD *thd) ...@@ -322,6 +316,20 @@ void debug_sync_end_thread(THD *thd)
} }
void debug_sync_reset_thread(THD *thd)
{
if (thd->debug_sync_control)
{
/*
This synchronization point can be used to synchronize on thread end.
This is the latest point in a THD's life, where this can be done.
*/
DEBUG_SYNC(thd, "thread_end");
thd->debug_sync_control->ds_active= 0;
}
}
/** /**
Move a string by length. Move a string by length.
......
...@@ -41,10 +41,14 @@ extern int debug_sync_init(void); ...@@ -41,10 +41,14 @@ extern int debug_sync_init(void);
extern void debug_sync_end(void); extern void debug_sync_end(void);
extern void debug_sync_init_thread(THD *thd); extern void debug_sync_init_thread(THD *thd);
extern void debug_sync_end_thread(THD *thd); extern void debug_sync_end_thread(THD *thd);
void debug_sync_reset_thread(THD *thd);
extern bool debug_sync_set_action(THD *thd, const char *action_str, size_t len); extern bool debug_sync_set_action(THD *thd, const char *action_str, size_t len);
extern bool debug_sync_update(THD *thd, char *val_str, size_t len); extern bool debug_sync_update(THD *thd, char *val_str, size_t len);
extern uchar *debug_sync_value_ptr(THD *thd); extern uchar *debug_sync_value_ptr(THD *thd);
#else
static inline void debug_sync_init_thread(THD *thd) {}
static inline void debug_sync_end_thread(THD *thd) {}
static inline void debug_sync_reset_thread(THD *thd) {}
#endif /* defined(ENABLED_DEBUG_SYNC) */ #endif /* defined(ENABLED_DEBUG_SYNC) */
#endif /* DEBUG_SYNC_INCLUDED */ #endif /* DEBUG_SYNC_INCLUDED */
...@@ -840,6 +840,7 @@ THD::THD(my_thread_id id, bool is_wsrep_applier) ...@@ -840,6 +840,7 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
reset_open_tables_state(this); reset_open_tables_state(this);
init(); init();
debug_sync_init_thread(this);
#if defined(ENABLED_PROFILING) #if defined(ENABLED_PROFILING)
profiling.set_thd(this); profiling.set_thd(this);
#endif #endif
...@@ -1320,11 +1321,6 @@ void THD::init() ...@@ -1320,11 +1321,6 @@ void THD::init()
/* Set to handle counting of aborted connections */ /* Set to handle counting of aborted connections */
userstat_running= opt_userstat_running; userstat_running= opt_userstat_running;
last_global_update_time= current_connect_time= time(NULL); last_global_update_time= current_connect_time= time(NULL);
#if defined(ENABLED_DEBUG_SYNC)
/* Initialize the Debug Sync Facility. See debug_sync.cc. */
debug_sync_init_thread(this);
#endif /* defined(ENABLED_DEBUG_SYNC) */
#ifndef EMBEDDED_LIBRARY #ifndef EMBEDDED_LIBRARY
session_tracker.enable(this); session_tracker.enable(this);
#endif //EMBEDDED_LIBRARY #endif //EMBEDDED_LIBRARY
...@@ -1576,11 +1572,6 @@ void THD::cleanup(void) ...@@ -1576,11 +1572,6 @@ void THD::cleanup(void)
} }
wt_thd_destroy(&transaction.wt); wt_thd_destroy(&transaction.wt);
#if defined(ENABLED_DEBUG_SYNC)
/* End the Debug Sync Facility. See debug_sync.cc. */
debug_sync_end_thread(this);
#endif /* defined(ENABLED_DEBUG_SYNC) */
my_hash_free(&user_vars); my_hash_free(&user_vars);
my_hash_free(&sequences); my_hash_free(&sequences);
sp_cache_clear(&sp_proc_cache); sp_cache_clear(&sp_proc_cache);
...@@ -1634,6 +1625,7 @@ void THD::free_connection() ...@@ -1634,6 +1625,7 @@ void THD::free_connection()
#if defined(ENABLED_PROFILING) #if defined(ENABLED_PROFILING)
profiling.restart(); // Reset profiling profiling.restart(); // Reset profiling
#endif #endif
debug_sync_reset_thread(this);
} }
/* /*
...@@ -1742,6 +1734,7 @@ THD::~THD() ...@@ -1742,6 +1734,7 @@ THD::~THD()
lf_hash_put_pins(tdc_hash_pins); lf_hash_put_pins(tdc_hash_pins);
if (xid_hash_pins) if (xid_hash_pins)
lf_hash_put_pins(xid_hash_pins); lf_hash_put_pins(xid_hash_pins);
debug_sync_end_thread(this);
/* Ensure everything is freed */ /* Ensure everything is freed */
status_var.local_memory_used-= sizeof(THD); status_var.local_memory_used-= sizeof(THD);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment