summaryrefslogtreecommitdiff
path: root/server-tools/instance-manager/instance_map.h
diff options
context:
space:
mode:
authoranozdrin/alik@alik. <>2006-10-24 18:23:16 +0400
committeranozdrin/alik@alik. <>2006-10-24 18:23:16 +0400
commitf40a9d2ece40002f368cdb7e0e75c7b06df80f30 (patch)
tree6d8630918dcef38a122bcfb66ecee31e94a8b0af /server-tools/instance-manager/instance_map.h
parent06d943f1376886bd00f21c975ef7184eec920252 (diff)
downloadmariadb-git-f40a9d2ece40002f368cdb7e0e75c7b06df80f30.tar.gz
Fix for BUG#17486: IM: race condition on exit.
The problem was that IM stoped guarded instances on shutdown, but didn't wait for them to stop. The fix is to wait for guarded instances to stop before exitting from the main thread. The idea is that Instance-monitoring thread should add itself to Thread_registry so that it will be taken into account on shutdown. However, Thread_registry should not signal it on shutdown in order to not interrupt wait()/waitpid().
Diffstat (limited to 'server-tools/instance-manager/instance_map.h')
-rw-r--r--server-tools/instance-manager/instance_map.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/server-tools/instance-manager/instance_map.h b/server-tools/instance-manager/instance_map.h
index 8e6d2360652..9de40e35e0f 100644
--- a/server-tools/instance-manager/instance_map.h
+++ b/server-tools/instance-manager/instance_map.h
@@ -28,6 +28,7 @@
class Guardian_thread;
class Instance;
class Named_value_arr;
+class Thread_registry;
extern int load_all_groups(char ***groups, const char *filename);
extern void free_groups(char **groups);
@@ -104,7 +105,8 @@ public:
int create_instance(const LEX_STRING *instance_name,
const Named_value_arr *options);
- Instance_map(const char *default_mysqld_path_arg);
+ Instance_map(const char *default_mysqld_path_arg,
+ Thread_registry &thread_registry_arg);
~Instance_map();
/*
@@ -130,6 +132,8 @@ private:
enum { START_HASH_SIZE = 16 };
pthread_mutex_t LOCK_instance_map;
HASH hash;
+
+ Thread_registry &thread_registry;
};
#endif /* INCLUDES_MYSQL_INSTANCE_MANAGER_INSTANCE_MAP_H */