Commit 850ac2e8 authored by andrey@example.com's avatar andrey@example.com

Temporary fix for a deadlock. Needed so we can go with cloning

5.1.12.
parent 895a4442
...@@ -707,6 +707,9 @@ Event_queue::get_top_for_execution_if_time(THD *thd, Event_job_data **job_data) ...@@ -707,6 +707,9 @@ Event_queue::get_top_for_execution_if_time(THD *thd, Event_job_data **job_data)
bool ret= FALSE; bool ret= FALSE;
struct timespec top_time; struct timespec top_time;
struct timespec *abstime; struct timespec *abstime;
Event_queue_element *top= NULL;
bool to_free= FALSE;
bool to_drop= FALSE;
*job_data= NULL; *job_data= NULL;
DBUG_ENTER("Event_queue::get_top_for_execution_if_time"); DBUG_ENTER("Event_queue::get_top_for_execution_if_time");
...@@ -715,7 +718,6 @@ Event_queue::get_top_for_execution_if_time(THD *thd, Event_job_data **job_data) ...@@ -715,7 +718,6 @@ Event_queue::get_top_for_execution_if_time(THD *thd, Event_job_data **job_data)
for (;;) for (;;)
{ {
int res; int res;
Event_queue_element *top= NULL;
thd->end_time(); thd->end_time();
time_t now= thd->query_start(); time_t now= thd->query_start();
...@@ -788,9 +790,8 @@ Event_queue::get_top_for_execution_if_time(THD *thd, Event_job_data **job_data) ...@@ -788,9 +790,8 @@ Event_queue::get_top_for_execution_if_time(THD *thd, Event_job_data **job_data)
sql_print_information("SCHEDULER: Last execution of %s.%s. %s", sql_print_information("SCHEDULER: Last execution of %s.%s. %s",
top->dbname.str, top->name.str, top->dbname.str, top->name.str,
top->dropped? "Dropping.":""); top->dropped? "Dropping.":"");
if (top->dropped) to_free= TRUE;
top->drop(thd); to_drop= top->dropped;
delete top;
queue_remove(&queue, 0); queue_remove(&queue, 0);
} }
else else
...@@ -801,6 +802,13 @@ Event_queue::get_top_for_execution_if_time(THD *thd, Event_job_data **job_data) ...@@ -801,6 +802,13 @@ Event_queue::get_top_for_execution_if_time(THD *thd, Event_job_data **job_data)
} }
end: end:
UNLOCK_QUEUE_DATA(); UNLOCK_QUEUE_DATA();
if (to_drop)
{
DBUG_PRINT("info", ("Dropping from disk"));
top->drop(thd);
}
if (to_free)
delete top;
DBUG_PRINT("info", ("returning %d. et_new=0x%lx abstime.tv_sec=%d ", DBUG_PRINT("info", ("returning %d. et_new=0x%lx abstime.tv_sec=%d ",
ret, *job_data, abstime? abstime->tv_sec:0)); ret, *job_data, abstime? abstime->tv_sec:0));
......
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