diff options
author | unknown <petr@mysql.com> | 2005-01-25 13:54:56 +0300 |
---|---|---|
committer | unknown <petr@mysql.com> | 2005-01-25 13:54:56 +0300 |
commit | fb3d6c39a0dc128f5310aac2906cc1e6c6b7db59 (patch) | |
tree | ada085796e1dc8387942522e6233d9a1b1a1d6d3 /server-tools/instance-manager/instance_map.cc | |
parent | 28f86d8ff1d042a2224c64712e31c65b1d6b7476 (diff) | |
download | mariadb-git-fb3d6c39a0dc128f5310aac2906cc1e6c6b7db59.tar.gz |
IM mostly fixed according to Brian's directions. Will need to do some additional option handling and cleanups
server-tools/instance-manager/Makefile.am:
New file added
server-tools/instance-manager/client_func.c:
typo fixed
server-tools/instance-manager/commands.cc:
there are no admin-user snd admin-password fields anymore, so no need to show their values
server-tools/instance-manager/guardian.cc:
Syncronization added -- now guardian wakes up whenever SIGCLD has been catched
server-tools/instance-manager/guardian.h:
Condition variable declared
server-tools/instance-manager/instance.cc:
Persistent connection to the instance removed. Now we use SIGTERM instead of com_shutdown for STOP. We also
manage SIGCHLD ourselves now (therefore no double fork).
server-tools/instance-manager/instance.h:
Pointer to the instance_map added, MySQL connection structures removed
server-tools/instance-manager/instance_map.cc:
More syncronization added (to make proper STOP)
server-tools/instance-manager/instance_map.h:
added condition variable and mutex for connection threads to wait for SIGCHLD
server-tools/instance-manager/instance_options.cc:
defaults-handling methods have been added.
server-tools/instance-manager/instance_options.h:
New functions and constants declared
server-tools/instance-manager/listener.cc:
No changes here (bk bug?)
server-tools/instance-manager/manager.cc:
SIGCHLD handling added
Diffstat (limited to 'server-tools/instance-manager/instance_map.cc')
-rw-r--r-- | server-tools/instance-manager/instance_map.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/server-tools/instance-manager/instance_map.cc b/server-tools/instance-manager/instance_map.cc index 9399d6e2563..2573729841b 100644 --- a/server-tools/instance-manager/instance_map.cc +++ b/server-tools/instance-manager/instance_map.cc @@ -123,6 +123,9 @@ Instance_map::Instance_map(const char *default_mysqld_path_arg, int Instance_map::init() { + pthread_mutex_init(&pid_cond.LOCK_pid, 0); + pthread_cond_init(&pid_cond.COND_pid, 0); + if (hash_init(&hash, default_charset_info, START_HASH_SIZE, 0, 0, get_instance_key, delete_instance, 0)) return 1; @@ -135,6 +138,8 @@ Instance_map::~Instance_map() hash_free(&hash); pthread_mutex_unlock(&LOCK_instance_map); pthread_mutex_destroy(&LOCK_instance_map); + pthread_mutex_destroy(&pid_cond.LOCK_pid); + pthread_cond_destroy(&pid_cond.COND_pid); } @@ -189,6 +194,7 @@ void Instance_map::complete_initialization() while (i < hash.records) { instance= (Instance *) hash_element(&hash, i); + instance->complete_initialization(this); instance->options.complete_initialization(mysqld_path, user, password); i++; } @@ -218,7 +224,8 @@ Instance_map::find(uint instance_number) Instance *instance; char name[80]; - sprintf(name, "mysqld%i", instance_number); + snprintf(name, sizeof(name) - 1, "mysqld%i", instance_number); + name[sizeof(name) - 1]= 0; /* safety */ pthread_mutex_lock(&LOCK_instance_map); instance= (Instance *) hash_search(&hash, (byte *) name, strlen(name)); pthread_mutex_unlock(&LOCK_instance_map); |