Commit fb79e1e8 authored by unknown's avatar unknown

Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0

into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug19111
parents 1761ed15 e30a2b08
...@@ -215,7 +215,9 @@ int Instance_map::flush_instances() ...@@ -215,7 +215,9 @@ int Instance_map::flush_instances()
hash_init(&hash, default_charset_info, START_HASH_SIZE, 0, 0, hash_init(&hash, default_charset_info, START_HASH_SIZE, 0, 0,
get_instance_key, delete_instance, 0); get_instance_key, delete_instance, 0);
rc= load(); rc= load();
guardian->init(); // TODO: check error status. /* don't init guardian if we failed to load instances */
if (!rc)
guardian->init(); // TODO: check error status.
pthread_mutex_unlock(&LOCK_instance_map); pthread_mutex_unlock(&LOCK_instance_map);
guardian->unlock(); guardian->unlock();
return rc; return rc;
......
...@@ -104,6 +104,19 @@ int my_sigwait(const sigset_t *set, int *sig) ...@@ -104,6 +104,19 @@ int my_sigwait(const sigset_t *set, int *sig)
#endif #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(true);
/* wake guardian */
pthread_cond_signal(&guardian->COND_guardian);
/* stop all threads */
registry->deliver_shutdown();
}
/* /*
manager - entry point to the main instance manager process: start manager - entry point to the main instance manager process: start
listener thread, write pid file and enter into signal handling. listener thread, write pid file and enter into signal handling.
...@@ -210,7 +223,8 @@ void manager(const Options &options) ...@@ -210,7 +223,8 @@ void manager(const Options &options)
log_error("Cannot init instances repository. This might be caused by " log_error("Cannot init instances repository. This might be caused by "
"the wrong config file options. For instance, missing mysqld " "the wrong config file options. For instance, missing mysqld "
"binary. Aborting."); "binary. Aborting.");
return; stop_all(&guardian_thread, &thread_registry);
goto err;
} }
/* create the listener */ /* create the listener */
...@@ -227,6 +241,7 @@ void manager(const Options &options) ...@@ -227,6 +241,7 @@ void manager(const Options &options)
if (rc) if (rc)
{ {
log_error("manager(): set_stacksize_n_create_thread(listener) failed"); log_error("manager(): set_stacksize_n_create_thread(listener) failed");
stop_all(&guardian_thread, &thread_registry);
goto err; goto err;
} }
...@@ -245,6 +260,7 @@ void manager(const Options &options) ...@@ -245,6 +260,7 @@ void manager(const Options &options)
if ((status= my_sigwait(&mask, &signo)) != 0) if ((status= my_sigwait(&mask, &signo)) != 0)
{ {
log_error("sigwait() failed"); log_error("sigwait() failed");
stop_all(&guardian_thread, &thread_registry);
goto err; goto err;
} }
......
...@@ -45,10 +45,10 @@ const char *default_password_file_name= QUOTE(DEFAULT_PASSWORD_FILE_NAME); ...@@ -45,10 +45,10 @@ const char *default_password_file_name= QUOTE(DEFAULT_PASSWORD_FILE_NAME);
const char *default_log_file_name= QUOTE(DEFAULT_LOG_FILE_NAME); const char *default_log_file_name= QUOTE(DEFAULT_LOG_FILE_NAME);
const char *Options::config_file= QUOTE(DEFAULT_CONFIG_FILE); const char *Options::config_file= QUOTE(DEFAULT_CONFIG_FILE);
const char *Options::angel_pid_file_name= NULL; const char *Options::angel_pid_file_name= NULL;
const char *Options::socket_file_name= QUOTE(DEFAULT_SOCKET_FILE_NAME);
#endif #endif
const char *Options::log_file_name= default_log_file_name; const char *Options::log_file_name= default_log_file_name;
const char *Options::pid_file_name= QUOTE(DEFAULT_PID_FILE_NAME); const char *Options::pid_file_name= QUOTE(DEFAULT_PID_FILE_NAME);
const char *Options::socket_file_name= QUOTE(DEFAULT_SOCKET_FILE_NAME);
const char *Options::password_file_name= default_password_file_name; const char *Options::password_file_name= default_password_file_name;
const char *Options::default_mysqld_path= QUOTE(DEFAULT_MYSQLD_PATH); const char *Options::default_mysqld_path= QUOTE(DEFAULT_MYSQLD_PATH);
const char *Options::bind_address= 0; /* No default value */ const char *Options::bind_address= 0; /* No default value */
...@@ -106,11 +106,11 @@ static struct my_option my_long_options[] = ...@@ -106,11 +106,11 @@ static struct my_option my_long_options[] =
(gptr *) &Options::angel_pid_file_name, (gptr *) &Options::angel_pid_file_name,
(gptr *) &Options::angel_pid_file_name, (gptr *) &Options::angel_pid_file_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
#endif
{ "socket", OPT_SOCKET, "Socket file to use for connection.", { "socket", OPT_SOCKET, "Socket file to use for connection.",
(gptr *) &Options::socket_file_name, (gptr *) &Options::socket_file_name, (gptr *) &Options::socket_file_name, (gptr *) &Options::socket_file_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
#endif
{ "passwd", 'P', "Prepare entry for passwd file and exit.", 0, 0, 0, { "passwd", 'P', "Prepare entry for passwd file and exit.", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 }, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 },
......
...@@ -36,11 +36,11 @@ struct Options ...@@ -36,11 +36,11 @@ struct Options
static char run_as_service; /* handle_options doesn't support bool */ static char run_as_service; /* handle_options doesn't support bool */
static const char *user; static const char *user;
static const char *angel_pid_file_name; static const char *angel_pid_file_name;
static const char *socket_file_name;
#endif #endif
static bool is_forced_default_file; static bool is_forced_default_file;
static const char *log_file_name; static const char *log_file_name;
static const char *pid_file_name; static const char *pid_file_name;
static const char *socket_file_name;
static const char *password_file_name; static const char *password_file_name;
static const char *default_mysqld_path; static const char *default_mysqld_path;
/* the option which should be passed to process_default_option_files */ /* the option which should be passed to process_default_option_files */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment