summaryrefslogtreecommitdiff
path: root/server-tools/instance-manager/manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'server-tools/instance-manager/manager.cc')
-rw-r--r--server-tools/instance-manager/manager.cc37
1 files changed, 23 insertions, 14 deletions
diff --git a/server-tools/instance-manager/manager.cc b/server-tools/instance-manager/manager.cc
index cb51197d52a..11a3289adbf 100644
--- a/server-tools/instance-manager/manager.cc
+++ b/server-tools/instance-manager/manager.cc
@@ -30,6 +30,23 @@
#include "log.h"
#include "guardian.h"
+static int create_pid_file(const char *pid_file_name)
+{
+ if (FILE *pid_file= my_fopen(pid_file_name,
+ O_WRONLY | O_CREAT | O_BINARY, MYF(0)))
+ {
+ fprintf(pid_file, "%d\n", (int) getpid());
+ my_fclose(pid_file, MYF(0));
+ }
+ else
+ {
+ log_error("can't create pid file %s: errno=%d, %s",
+ pid_file_name, errno, strerror(errno));
+ return 1;
+ }
+ return 0;
+}
+
/*
manager - entry point to the main instance manager process: start
@@ -53,32 +70,24 @@ void manager(const Options &options)
&instance_map,
options.monitoring_interval);
+ Listener_thread_args listener_args(thread_registry, options, user_map,
+ instance_map);
+
instance_map.mysqld_path= options.default_mysqld_path;
instance_map.user= options.default_admin_user;
instance_map.password= options.default_admin_password;
instance_map.guardian= &guardian_thread;
- instance_map.load();
- Listener_thread_args listener_args(thread_registry, options, user_map,
- instance_map);
+ if (instance_map.load())
+ return;
if (user_map.load(options.password_file_name))
return;
/* write pid file */
- if (FILE *pid_file= my_fopen(options.pid_file_name,
- O_WRONLY | O_CREAT | O_BINARY, MYF(0)))
- {
- fprintf(pid_file, "%d\n", (int) getpid());
- my_fclose(pid_file, MYF(0));
- }
- else
- {
- log_error("can't create pid file %s: errno=%d, %s",
- options.pid_file_name, errno, strerror(errno));
+ if (create_pid_file(options.pid_file_name))
return;
- }
/* block signals */
sigset_t mask;