mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 20:11:42 +01:00
Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0
into moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug19111
This commit is contained in:
commit
41eb26c94e
4 changed files with 23 additions and 5 deletions
|
@ -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)
|
||||||
#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)
|
||||||
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)
|
||||||
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)
|
||||||
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);
|
||||||
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[] =
|
||||||
(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
|
||||||
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 */
|
||||||
|
|
Loading…
Add table
Reference in a new issue