summaryrefslogtreecommitdiff
path: root/sql/event_scheduler.h
diff options
context:
space:
mode:
authorunknown <andrey@lmy004.>2006-07-05 17:12:50 +0200
committerunknown <andrey@lmy004.>2006-07-05 17:12:50 +0200
commitb9a7fe2757d9040296311e96a9e2740416d181f2 (patch)
treeb703fe1427d5c31cc528ae515b4514eeb6c9dce8 /sql/event_scheduler.h
parenta5dfeb02e991e6e5e9e332443522de1bb4592df8 (diff)
downloadmariadb-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.h187
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_ */