diff options
author | unknown <petr@mysql.com> | 2005-02-03 20:48:58 +0300 |
---|---|---|
committer | unknown <petr@mysql.com> | 2005-02-03 20:48:58 +0300 |
commit | ab432d6c05d957eeaf7b311a16f2928614241f03 (patch) | |
tree | c4350e561d489a4259b85272a8151651f10c9624 /server-tools/instance-manager/manager.cc | |
parent | 92a52cccf6fe4f41f2b234b162daaae3d2e3ab26 (diff) | |
download | mariadb-git-ab432d6c05d957eeaf7b311a16f2928614241f03.tar.gz |
Various fixes (cleanups, valgrind, makefiles, ...)
server-tools/instance-manager/Makefile.am:
increased default_monitoring interval
server-tools/instance-manager/guardian.cc:
some fixes for proper shutdown
server-tools/instance-manager/guardian.h:
removed init() prototype, as it was never used
server-tools/instance-manager/instance.cc:
cleanup() function removed
server-tools/instance-manager/instance.h:
cleanup() prototype removed
server-tools/instance-manager/instance_map.cc:
Instance_map::cleanup() removed, as instances have nothing to clean up
server-tools/instance-manager/instance_map.h:
Instance_map::cleanup() prototype removed
server-tools/instance-manager/instance_options.cc:
added print_argv() function for debug purposes
server-tools/instance-manager/instance_options.h:
declared print_argv()
server-tools/instance-manager/listener.cc:
some fixed in listener for proper shutdown
server-tools/instance-manager/log.cc:
cleanup
server-tools/instance-manager/log.h:
cleanup
server-tools/instance-manager/manager.cc:
some comments added
server-tools/instance-manager/mysqlmanager.cc:
we need to free memory in the very end
server-tools/instance-manager/options.cc:
fixed default options handling (as they were not working properly), added new method to cleanup Options
server-tools/instance-manager/options.h:
cleanup() declared
server-tools/instance-manager/thread_registry.cc:
cleanup
server-tools/instance-manager/user_map.cc:
missing password file is not a critical error anymore, as IM should be able to work as mysqld_safe only
Diffstat (limited to 'server-tools/instance-manager/manager.cc')
-rw-r--r-- | server-tools/instance-manager/manager.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/server-tools/instance-manager/manager.cc b/server-tools/instance-manager/manager.cc index 6d9ee569d04..b48c020786f 100644 --- a/server-tools/instance-manager/manager.cc +++ b/server-tools/instance-manager/manager.cc @@ -127,6 +127,12 @@ void manager(const Options &options) pthread_attr_t guardian_thd_attr; int rc; + /* + NOTE: Guardian should be shutdowned first. Only then all other threads + need to be stopped. This should be done, as guardian is responsible for + shutting down the instances, and this is a long operation. + */ + pthread_attr_init(&guardian_thd_attr); pthread_attr_setdetachstate(&guardian_thd_attr, PTHREAD_CREATE_DETACHED); rc= pthread_create(&guardian_thd_id, &guardian_thd_attr, guardian, @@ -160,6 +166,11 @@ void manager(const Options &options) making the list. And they in their turn need alarms for timeout suppport. */ guardian_thread.start(); + /* + After the list of guarded instances have been initialized, + Guardian should start them. + */ + pthread_cond_signal(&guardian_thread.COND_guardian); signal(SIGPIPE, SIG_IGN); @@ -176,14 +187,14 @@ void manager(const Options &options) /* wake threads waiting for an instance to shutdown */ pthread_cond_broadcast(&instance_map.pid_cond.COND_pid); /* wake guardian */ - pthread_cond_broadcast(&guardian_thread.COND_guardian); + pthread_cond_signal(&guardian_thread.COND_guardian); break; default: if (!guardian_thread.is_stopped) { guardian_thread.request_stop_instances(); guardian_thread.shutdown(); - pthread_cond_broadcast(&guardian_thread.COND_guardian); + pthread_cond_signal(&guardian_thread.COND_guardian); } else { @@ -198,9 +209,6 @@ err: /* delete the pid file */ my_delete(options.pid_file_name, MYF(0)); - /* close permanent connections to the running instances */ - instance_map.cleanup(); - /* free alarm structures */ end_thr_alarm(1); /* don't pthread_exit to kill all threads who did not shut down in time */ |