diff options
author | unknown <kostja@bodhi.local> | 2006-10-23 12:35:56 +0400 |
---|---|---|
committer | unknown <kostja@bodhi.local> | 2006-10-23 12:35:56 +0400 |
commit | d946b64dcecc083e4df52776dff0e6bd139ba785 (patch) | |
tree | 55d8dd8c7c418b931fb38f3ee01b272e6327b15d /server-tools/instance-manager/manager.cc | |
parent | efcd6b42b44ce178a779924c1e960cde3d9a4246 (diff) | |
parent | 8db4dc3f91dfbe03181e63ed45bdf35a5d65aeb0 (diff) | |
download | mariadb-git-d946b64dcecc083e4df52776dff0e6bd139ba785.tar.gz |
Merge bodhi.local:/opt/local/work/mysql-5.0-runtime
into bodhi.local:/opt/local/work/mysql-5.1-runtime-merge
mysql-test/r/im_daemon_life_cycle.result:
Auto merged
mysql-test/r/ps.result:
Auto merged
mysql-test/r/rpl_insert_id.result:
Auto merged
mysql-test/r/sp-vars.result:
Auto merged
mysql-test/r/trigger.result:
Auto merged
mysql-test/r/view.result:
Auto merged
mysql-test/t/func_gconcat.test:
Auto merged
mysql-test/t/im_daemon_life_cycle.imtest:
Auto merged
mysql-test/t/ps.test:
Auto merged
mysql-test/t/rpl_insert_id.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
mysql-test/t/trigger.test:
Auto merged
server-tools/instance-manager/guardian.cc:
Auto merged
server-tools/instance-manager/guardian.h:
Auto merged
server-tools/instance-manager/instance_map.cc:
Auto merged
server-tools/instance-manager/listener.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_sum.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
tests/mysql_client_test.c:
Auto merged
mysql-test/r/sp-error.result:
Use local
mysql-test/r/sp.result:
Use local
(will overwrite)
mysql-test/t/view.test:
Use local.
mysql-test/mysql-test-run.pl:
Manual merge.
mysql-test/t/sp-error.test:
Manual merge.
server-tools/instance-manager/instance.cc:
Manual merge.
server-tools/instance-manager/manager.cc:
Manual merge.
server-tools/instance-manager/options.cc:
Manual merge.
server-tools/instance-manager/options.h:
Manual merge.
sql/log_event.cc:
Manual merge.
sql/set_var.cc:
Manual merge.
sql/sql_class.h:
Manual merge.
sql/sql_insert.cc:
Manual merge.
sql/sql_load.cc:
Manual merge.
sql/sql_select.cc:
Manual merge.
sql/sql_update.cc:
Manual merge.
Diffstat (limited to 'server-tools/instance-manager/manager.cc')
-rw-r--r-- | server-tools/instance-manager/manager.cc | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/server-tools/instance-manager/manager.cc b/server-tools/instance-manager/manager.cc index d2d498eebf1..3fb967fc352 100644 --- a/server-tools/instance-manager/manager.cc +++ b/server-tools/instance-manager/manager.cc @@ -120,6 +120,19 @@ int my_sigwait(const sigset_t *set, int *sig) #endif +void stop_all(Guardian_thread *guardian, Thread_registry *registry) +{ + /* + Let guardian thread know that it should break it's processing cycle, + once it wakes up. + */ + guardian->request_shutdown(); + /* wake guardian */ + pthread_cond_signal(&guardian->COND_guardian); + /* stop all threads */ + registry->deliver_shutdown(); +} + /* manager - entry point to the main instance manager process: start listener thread, write pid file and enter into signal handling. @@ -251,7 +264,6 @@ void manager() /* Load instances. */ - { instance_map.guardian->lock(); instance_map.lock(); @@ -266,7 +278,8 @@ void manager() log_error("Cannot init instances repository. This might be caused by " "the wrong config file options. For instance, missing mysqld " "binary. Aborting."); - return; + stop_all(&guardian_thread, &thread_registry); + goto err; } } @@ -284,6 +297,7 @@ void manager() if (rc) { log_error("manager(): set_stacksize_n_create_thread(listener) failed"); + stop_all(&guardian_thread, &thread_registry); goto err; } } @@ -302,6 +316,7 @@ void manager() if ((status= my_sigwait(&mask, &signo)) != 0) { log_error("sigwait() failed"); + stop_all(&guardian_thread, &thread_registry); goto err; } @@ -323,8 +338,7 @@ void manager() { if (!guardian_thread.is_stopped()) { - bool stop_instances= TRUE; - guardian_thread.request_shutdown(stop_instances); + guardian_thread.request_shutdown(); pthread_cond_signal(&guardian_thread.COND_guardian); } else |