Commit 9a4a845a authored by Konstantin Osipov's avatar Konstantin Osipov

Backport of the following revision from 6.0-codebase:

----------------------------------------------------------
revno: 2617.1.12
committer: kostja@bodhi.(none)
timestamp: Sun 2008-04-20 11:18:52 +0400
message:
  A fix for Bug#32771 "events_bugs.test fails randomly".
  In Event_scheduler::stop(), which may be called from destructor,
  wait synchronously for the parallel Event_scheduler::stop() to
  complete before returning. This fixes a race between
  MySQL shutdown thread and the scheduler thread who could call
  stop() in parallel.

sql/event_scheduler.cc:
  There was a race condition between the shutdown thread and
  the scheduler thread: the shutdown thread could delete the scheduler
  mutex before the sheduler has stopped.
parent 99420dd9
......@@ -607,7 +607,12 @@ Event_scheduler::stop()
LOCK_DATA();
DBUG_PRINT("info", ("state before action %s", scheduler_states_names[state].str));
if (state != RUNNING)
{
/* Synchronously wait until the scheduler stops. */
while (state != INITIALIZED)
COND_STATE_WAIT(thd, NULL, "Waiting for the scheduler to stop");
goto end;
}
/* Guarantee we don't catch spurious signals */
do {
......
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