summaryrefslogtreecommitdiff
path: root/server-tools/instance-manager/manager.cc
diff options
context:
space:
mode:
authorunknown <petr@mysql.com>2005-02-11 14:21:59 +0300
committerunknown <petr@mysql.com>2005-02-11 14:21:59 +0300
commitdce2554f9130920ab18e4e31432df7d6ca165ee0 (patch)
tree5a46c104b5146373b9e754ea5691cfa5ef3d2fcf /server-tools/instance-manager/manager.cc
parent79ba407d64ad4387b7b279f80a7bf95e68414df5 (diff)
downloadmariadb-git-dce2554f9130920ab18e4e31432df7d6ca165ee0.tar.gz
Post-review fixes + some bugs fixed + several minor features
BitKeeper/deleted/.del-client_func.c~3476a8a85cbd3c29: Delete: server-tools/instance-manager/client_func.c server-tools/instance-manager/Makefile.am: clien_func removed server-tools/instance-manager/buffer.cc: several methods added server-tools/instance-manager/buffer.h: Some error-handling fixes. server-tools/instance-manager/commands.cc: check for Buffer errors server-tools/instance-manager/guardian.cc: Guardian rewiriten. Not it works in a finite state machine-way. server-tools/instance-manager/guardian.h: Appropriate (to .cc) changes in the header + some comment added server-tools/instance-manager/instance.cc: added proxy thread to monitor instance. Two kinds of stop() now -- stop() and kill_instance which only sends a signal server-tools/instance-manager/instance.h: appropriate changes server-tools/instance-manager/instance_map.cc: cleanup server-tools/instance-manager/instance_map.h: cleanup server-tools/instance-manager/instance_options.cc: Caching of the pid-file-name is added. some comments added server-tools/instance-manager/instance_options.h: cleanup server-tools/instance-manager/listener.cc: listener my_thread_init added (though it doesn't use any mysys functions). Just in case server-tools/instance-manager/manager.cc: SIGCHLD handler removed. now instance monitoring is implemented through proxy threads. This is to work nicely with LinuxThreads server-tools/instance-manager/options.cc: added option to create a password file entry (this was implemented by Sergei Vojtovich) server-tools/instance-manager/parse.cc: inline function get_word moved to the header server-tools/instance-manager/parse.h: get_word moved here to use form parse_output server-tools/instance-manager/parse_output.cc: get_word() clone removed. now looking through the output linewise server-tools/instance-manager/protocol.cc: Buffer error chech added server-tools/instance-manager/user_map.cc: typo fixed
Diffstat (limited to 'server-tools/instance-manager/manager.cc')
-rw-r--r--server-tools/instance-manager/manager.cc26
1 files changed, 8 insertions, 18 deletions
diff --git a/server-tools/instance-manager/manager.cc b/server-tools/instance-manager/manager.cc
index b48c020786f..af8dac47dca 100644
--- a/server-tools/instance-manager/manager.cc
+++ b/server-tools/instance-manager/manager.cc
@@ -90,7 +90,6 @@ void manager(const Options &options)
sigemptyset(&mask);
sigaddset(&mask, SIGINT);
sigaddset(&mask, SIGTERM);
- sigaddset(&mask, SIGCHLD);
sigaddset(&mask, SIGPIPE);
sigaddset(&mask, SIGHUP);
/*
@@ -128,7 +127,7 @@ void manager(const Options &options)
int rc;
/*
- NOTE: Guardian should be shutdowned first. Only then all other threads
+ NOTE: Guardian should be shutdown 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.
*/
@@ -160,12 +159,8 @@ void manager(const Options &options)
more then 10 alarms at the same time.
*/
init_thr_alarm(10);
- /*
- Now we can init the list of guarded instances. We have to do it after
- alarm structures initialization as we have to use net_* functions while
- making the list. And they in their turn need alarms for timeout suppport.
- */
- guardian_thread.start();
+ /* init list of guarded instances */
+ guardian_thread.init();
/*
After the list of guarded instances have been initialized,
Guardian should start them.
@@ -182,18 +177,12 @@ void manager(const Options &options)
case THR_SERVER_ALARM:
process_alarm(signo);
break;
- case SIGCHLD:
- wait(NULL);
- /* wake threads waiting for an instance to shutdown */
- pthread_cond_broadcast(&instance_map.pid_cond.COND_pid);
- /* wake guardian */
- pthread_cond_signal(&guardian_thread.COND_guardian);
- break;
default:
- if (!guardian_thread.is_stopped)
+ {
+ if (!guardian_thread.is_stopped())
{
- guardian_thread.request_stop_instances();
- guardian_thread.shutdown();
+ bool stop_instances= true;
+ guardian_thread.request_shutdown(stop_instances);
pthread_cond_signal(&guardian_thread.COND_guardian);
}
else
@@ -201,6 +190,7 @@ void manager(const Options &options)
thread_registry.deliver_shutdown();
shutdown_complete= TRUE;
}
+ }
break;
}
}