diff options
author | unknown <andrey@lmy004.> | 2006-07-05 17:12:50 +0200 |
---|---|---|
committer | unknown <andrey@lmy004.> | 2006-07-05 17:12:50 +0200 |
commit | b9a7fe2757d9040296311e96a9e2740416d181f2 (patch) | |
tree | b703fe1427d5c31cc528ae515b4514eeb6c9dce8 /sql/event_scheduler.h | |
parent | a5dfeb02e991e6e5e9e332443522de1bb4592df8 (diff) | |
download | mariadb-git-b9a7fe2757d9040296311e96a9e2740416d181f2.tar.gz |
WL#3337 (Event scheduler new architecture)
Cleaned up the code a bit. Fixed few leaks.
This code still does not load events on server startup
from disk. The problem is that there is a need for a THD instance, which
does not exist during server boot. This will be solved soon.
Still Event_timed is used both for the memory queue and for exectution.
This will be changed according to WL#3337 probably in the next commit.
sql/event_data_objects.cc:
Strip unneeded stuff from class Event_timed
Event_timed is still used for the queue and execution.
That will be changed in the next commit.
sql/event_data_objects.h:
Strip unneeded stuff from class Event_timed
Event_timed is still used for the queue and execution.
That will be changed in the next commit.
sql/event_db_repository.cc:
Cosmetics.
Add a new method load_named_event_job, to be made complete in the
next commit. It will load from disk an instance of Event_job_data to
be used during execution.
sql/event_db_repository.h:
find_event does not need MEM_ROOT anymore
because the memory is allocated on Event's own root.
sql/event_queue.cc:
Remove dead code.
Move dumping of the queue to separate method.
Make critical sections in create_event & update_event
as small as possible - load the new event outside of the section
and free the object also outside of it.
sql/event_queue.h:
init -> init_queue -> easier for ctags
deinit -> deinit_queue -> easier for ctags
sql/event_scheduler.cc:
empty this file
sql/event_scheduler.h:
empty this file
sql/event_scheduler_ng.cc:
add back DBUG_RETURN(0) in thread handlers.
We don't stop running events when stopping the scheduler. Therefore
remove this method now. If it is needed later it can be added back.
sql/event_scheduler_ng.h:
Remove stop_all_running_threads()
init -> init_scheduler
deinit -> deinit_scheduler
easier for ctags
sql/events.cc:
Cosmetics
sql/events.h:
Cosmetics
sql/set_var.cc:
Remove references to dead code
sql/sql_parse.cc:
Reorganize a bit.
Diffstat (limited to 'sql/event_scheduler.h')
-rw-r--r-- | sql/event_scheduler.h | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/sql/event_scheduler.h b/sql/event_scheduler.h index 7d02e98d4fe..acd0debe391 100644 --- a/sql/event_scheduler.h +++ b/sql/event_scheduler.h @@ -16,191 +16,4 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class sp_name; -class Event_timed; -class Event_db_repository; -class Event_queue; - -class THD; - -int -events_init(); - -void -events_shutdown(); - -#include "event_queue.h" -#include "event_scheduler.h" - -class Event_scheduler -{ -public: - enum enum_state - { - UNINITIALIZED= 0, - INITIALIZED, - COMMENCING, - CANTSTART, - RUNNING, - SUSPENDED, - IN_SHUTDOWN - }; - - enum enum_suspend_or_resume - { - SUSPEND= 1, - RESUME= 2 - }; - - /* This is the current status of the life-cycle of the scheduler. */ - enum enum_state state; - - - static void - create_instance(Event_queue *queue); - - static void - init_mutexes(); - - static void - destroy_mutexes(); - - /* Singleton access */ - static Event_scheduler* - get_instance(); - - bool - init(Event_db_repository *db_repo); - - void - destroy(); - - /* State changing methods follow */ - - bool - start(); - - int - stop(); - - bool - start_suspended(); - - /* - Need to be public because has to be called from the function - passed to pthread_create. - */ - bool - run(THD *thd); - - int - suspend_or_resume(enum enum_suspend_or_resume action); -/* - static void - init_mutexes(); - - static void - destroy_mutexes(); -*/ - void - report_error_during_start(); - - /* Information retrieving methods follow */ - - enum enum_state - get_state(); - - bool - initialized(); - - static int - dump_internal_status(THD *thd); - - /* helper functions for working with mutexes & conditionals */ - void - lock_data(const char *func, uint line); - - void - unlock_data(const char *func, uint line); - - int - cond_wait(int cond, pthread_mutex_t *mutex); - - void - queue_changed(); - - Event_queue *event_queue; - -protected: - - uint - workers_count(); - - /* helper functions */ - bool - execute_top(THD *thd, Event_timed *et); - - void - clean_memory(THD *thd); - - void - stop_all_running_events(THD *thd); - - - bool - check_n_suspend_if_needed(THD *thd); - - bool - check_n_wait_for_non_empty_queue(THD *thd); - - /* Singleton DP is used */ - Event_scheduler(); - - pthread_mutex_t LOCK_data; - pthread_mutex_t *LOCK_scheduler_data; - - /* The MEM_ROOT of the object */ - MEM_ROOT scheduler_root; - - /* Set to start the scheduler in suspended state */ - bool start_scheduler_suspended; - - /* - Holds the thread id of the executor thread or 0 if the executor is not - running. It is used by ::shutdown() to know which thread to kill with - kill_one_thread(). The latter wake ups a thread if it is waiting on a - conditional variable and sets thd->killed to non-zero. - */ - ulong thread_id; - - enum enum_cond_vars - { - COND_NONE= -1, - COND_new_work= 0, - COND_started_or_stopped, - COND_suspend_or_resume, - /* Must be always last */ - COND_LAST - }; - - uint mutex_last_locked_at_line; - uint mutex_last_unlocked_at_line; - const char* mutex_last_locked_in_func; - const char* mutex_last_unlocked_in_func; - int cond_waiting_on; - bool mutex_scheduler_data_locked; - - static const char * const cond_vars_names[COND_LAST]; - - pthread_cond_t cond_vars[COND_LAST]; - - /* Singleton instance */ - static Event_scheduler *singleton; - -private: - /* Prevent use of these */ - Event_scheduler(const Event_scheduler &); - void operator=(Event_scheduler &); -}; - #endif /* _EVENT_SCHEDULER_H_ */ |