diff options
author | Michael Widenius <monty@askmonty.org> | 2011-05-09 15:14:04 +0300 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2011-05-09 15:14:04 +0300 |
commit | 8882d71f3f1dd03ef98d072def39b29e6a03f5b8 (patch) | |
tree | 2229342bc1cd1d19278e40edc478851b81d65520 /sql/event_scheduler.cc | |
parent | 4cb68c0e8940aca5c02363c27d09cab5a1b2fcd8 (diff) | |
download | mariadb-git-8882d71f3f1dd03ef98d072def39b29e6a03f5b8.tar.gz |
Make event stop code even more robust.
(Test failed if we added my_sleep(200000) in event_queue::cond_wait() just before pthread_cond_wait(); Not likely scenario but better to get that fixed too)
Diffstat (limited to 'sql/event_scheduler.cc')
-rwxr-xr-x | sql/event_scheduler.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sql/event_scheduler.cc b/sql/event_scheduler.cc index 4d6636eedb2..ecddcb7ca46 100755 --- a/sql/event_scheduler.cc +++ b/sql/event_scheduler.cc @@ -648,7 +648,14 @@ Event_scheduler::stop() /* thd could be 0x0, when shutting down */ sql_print_information("Event Scheduler: " "Waiting for the scheduler thread to reply"); - COND_STATE_WAIT(thd, NULL, "Waiting scheduler to stop"); + + /* + Wait only 2 seconds, as there is a small chance the thread missed the + above awake() call and we may have to do it again + */ + struct timespec top_time; + set_timespec(top_time, 2); + COND_STATE_WAIT(thd, &top_time, "Waiting scheduler to stop"); } while (state == STOPPING); DBUG_PRINT("info", ("Scheduler thread has cleaned up. Set state to INIT")); sql_print_information("Event Scheduler: Stopped"); |