mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
a bunch of IM fixes from the GUI team
This commit is contained in:
@ -62,3 +62,5 @@ SHOW INSTANCES;
|
|||||||
instance_name status
|
instance_name status
|
||||||
mysqld1 online
|
mysqld1 online
|
||||||
mysqld2 offline
|
mysqld2 offline
|
||||||
|
SHOW INSTANCE STATUS;
|
||||||
|
ERROR 42000: You have an error in your command syntax. Check the manual that corresponds to your MySQL Instance Manager version for the right syntax to use
|
||||||
|
@ -140,3 +140,12 @@ SHOW INSTANCES;
|
|||||||
--exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD2_PATH_PID killed
|
--exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD2_PATH_PID killed
|
||||||
|
|
||||||
SHOW INSTANCES;
|
SHOW INSTANCES;
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
#
|
||||||
|
# 1.1.8. Check that Instance Manager returns an error on
|
||||||
|
# incomplete SHOW INSTANCE STATUS command.
|
||||||
|
#
|
||||||
|
###########################################################################
|
||||||
|
--error 1149
|
||||||
|
SHOW INSTANCE STATUS;
|
||||||
|
@ -30,11 +30,9 @@ liboptions_a_CXXFLAGS= $(CXXFLAGS) \
|
|||||||
-DDEFAULT_PID_FILE_NAME="$(localstatedir)/mysqlmanager.pid" \
|
-DDEFAULT_PID_FILE_NAME="$(localstatedir)/mysqlmanager.pid" \
|
||||||
-DDEFAULT_LOG_FILE_NAME="$(localstatedir)/mysqlmanager.log" \
|
-DDEFAULT_LOG_FILE_NAME="$(localstatedir)/mysqlmanager.log" \
|
||||||
-DDEFAULT_SOCKET_FILE_NAME="/tmp/mysqlmanager.sock" \
|
-DDEFAULT_SOCKET_FILE_NAME="/tmp/mysqlmanager.sock" \
|
||||||
-DDEFAULT_PASSWORD_FILE_NAME="$(sysconfdir)/mysqlmanager.passwd" \
|
-DDEFAULT_PASSWORD_FILE_NAME="/etc/mysqlmanager.passwd" \
|
||||||
-DDEFAULT_MYSQLD_PATH="$(libexecdir)/mysqld$(EXEEXT)" \
|
-DDEFAULT_MYSQLD_PATH="$(libexecdir)/mysqld$(EXEEXT)" \
|
||||||
-DDEFAULT_MONITORING_INTERVAL="20" \
|
-DDEFAULT_CONFIG_FILE="/etc/my.cnf" \
|
||||||
-DDEFAULT_PORT="2273" \
|
|
||||||
-DDEFAULT_CONFIG_FILE="/etc/my.cnf" \
|
|
||||||
-DPROTOCOL_VERSION=@PROTOCOL_VERSION@
|
-DPROTOCOL_VERSION=@PROTOCOL_VERSION@
|
||||||
|
|
||||||
liboptions_a_SOURCES= options.h options.cc priv.h priv.cc
|
liboptions_a_SOURCES= options.h options.cc priv.h priv.cc
|
||||||
|
@ -483,7 +483,7 @@ int Show_instance_log::execute(struct st_net *net, ulong connection_id)
|
|||||||
read_buff.reserve(0, buff_size);
|
read_buff.reserve(0, buff_size);
|
||||||
|
|
||||||
/* read in one chunk */
|
/* read in one chunk */
|
||||||
read_len= my_seek(fd, file_stat.st_size - size, MY_SEEK_SET, MYF(0));
|
read_len= (int)my_seek(fd, file_stat.st_size - size, MY_SEEK_SET, MYF(0));
|
||||||
|
|
||||||
if ((read_len= my_read(fd, (byte*) read_buff.buffer,
|
if ((read_len= my_read(fd, (byte*) read_buff.buffer,
|
||||||
buff_size, MYF(0))) < 0)
|
buff_size, MYF(0))) < 0)
|
||||||
|
@ -418,6 +418,10 @@ bool Instance::is_running()
|
|||||||
if (options.mysqld_socket)
|
if (options.mysqld_socket)
|
||||||
socket= strchr(options.mysqld_socket, '=') + 1;
|
socket= strchr(options.mysqld_socket, '=') + 1;
|
||||||
|
|
||||||
|
/* no port was specified => instance falled back to default value */
|
||||||
|
if (!options.mysqld_port && !options.mysqld_socket)
|
||||||
|
port= SERVER_DEFAULT_PORT;
|
||||||
|
|
||||||
pthread_mutex_lock(&LOCK_instance);
|
pthread_mutex_lock(&LOCK_instance);
|
||||||
|
|
||||||
mysql_init(&mysql);
|
mysql_init(&mysql);
|
||||||
|
@ -229,11 +229,33 @@ int Instance_map::load()
|
|||||||
uint args_used= 0;
|
uint args_used= 0;
|
||||||
const char *argv_options[3];
|
const char *argv_options[3];
|
||||||
char **argv= (char **) &argv_options;
|
char **argv= (char **) &argv_options;
|
||||||
|
char defaults_file_arg[FN_REFLEN];
|
||||||
|
|
||||||
/* the name of the program may be orbitrary here in fact */
|
/* the name of the program may be orbitrary here in fact */
|
||||||
argv_options[0]= "mysqlmanager";
|
argv_options[0]= "mysqlmanager";
|
||||||
argv_options[1]= '\0';
|
|
||||||
|
/*
|
||||||
|
If the option file was forced by the user when starting
|
||||||
|
the IM with --defaults-file=xxxx, make sure it is also
|
||||||
|
passed as --defaults-file, not only as Options::config_file.
|
||||||
|
This is important for option files given with relative path:
|
||||||
|
e.g. --defaults-file=my.cnf.
|
||||||
|
Otherwise my_search_option_files will treat "my.cnf" as a group
|
||||||
|
name and start looking for files named "my.cnf.cnf" in all
|
||||||
|
default dirs. Which is not what we want.
|
||||||
|
*/
|
||||||
|
if (Options::is_forced_default_file)
|
||||||
|
{
|
||||||
|
snprintf(defaults_file_arg, FN_REFLEN, "--defaults-file=%s",
|
||||||
|
Options::config_file);
|
||||||
|
|
||||||
|
argv_options[1]= defaults_file_arg;
|
||||||
|
argv_options[2]= '\0';
|
||||||
|
|
||||||
|
argc= 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
argv_options[1]= '\0';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If the routine failed, we'll simply fallback to defaults in
|
If the routine failed, we'll simply fallback to defaults in
|
||||||
|
@ -82,12 +82,13 @@ int main(int argc, char *argv[])
|
|||||||
int return_value= 1;
|
int return_value= 1;
|
||||||
init_environment(argv[0]);
|
init_environment(argv[0]);
|
||||||
Options options;
|
Options options;
|
||||||
struct passwd *user_info;
|
|
||||||
|
|
||||||
if (options.load(argc, argv))
|
if (options.load(argc, argv))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
#ifndef __WIN__
|
#ifndef __WIN__
|
||||||
|
struct passwd *user_info;
|
||||||
|
|
||||||
if ((user_info= check_user(options.user)))
|
if ((user_info= check_user(options.user)))
|
||||||
{
|
{
|
||||||
if (set_user(options.user, user_info))
|
if (set_user(options.user, user_info))
|
||||||
|
@ -55,6 +55,8 @@ uint Options::monitoring_interval= DEFAULT_MONITORING_INTERVAL;
|
|||||||
uint Options::port_number= DEFAULT_PORT;
|
uint Options::port_number= DEFAULT_PORT;
|
||||||
/* just to declare */
|
/* just to declare */
|
||||||
char **Options::saved_argv= NULL;
|
char **Options::saved_argv= NULL;
|
||||||
|
/* Remember if the config file was forced */
|
||||||
|
bool Options::is_forced_default_file= 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
List of options, accepted by the instance manager.
|
List of options, accepted by the instance manager.
|
||||||
@ -118,7 +120,7 @@ static struct my_option my_long_options[] =
|
|||||||
" Server binary.",
|
" Server binary.",
|
||||||
(gptr *) &Options::default_mysqld_path,
|
(gptr *) &Options::default_mysqld_path,
|
||||||
(gptr *) &Options::default_mysqld_path,
|
(gptr *) &Options::default_mysqld_path,
|
||||||
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
|
0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0 },
|
||||||
|
|
||||||
{ "monitoring-interval", OPT_MONITORING_INTERVAL, "Interval to monitor"
|
{ "monitoring-interval", OPT_MONITORING_INTERVAL, "Interval to monitor"
|
||||||
" instances in seconds.",
|
" instances in seconds.",
|
||||||
@ -254,6 +256,7 @@ int Options::load(int argc, char **argv)
|
|||||||
if (is_prefix(argv[1], "--defaults-file="))
|
if (is_prefix(argv[1], "--defaults-file="))
|
||||||
{
|
{
|
||||||
Options::config_file= strchr(argv[1], '=') + 1;
|
Options::config_file= strchr(argv[1], '=') + 1;
|
||||||
|
Options::is_forced_default_file= 1;
|
||||||
}
|
}
|
||||||
if (is_prefix(argv[1], "--defaults-extra-file=") ||
|
if (is_prefix(argv[1], "--defaults-extra-file=") ||
|
||||||
is_prefix(argv[1], "--no-defaults"))
|
is_prefix(argv[1], "--no-defaults"))
|
||||||
|
@ -36,6 +36,7 @@ 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;
|
||||||
#endif
|
#endif
|
||||||
|
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 *socket_file_name;
|
||||||
|
@ -166,7 +166,8 @@ Command *parse_command(Instance_map *map, const char *text)
|
|||||||
skip= true;
|
skip= true;
|
||||||
case TOK_SET:
|
case TOK_SET:
|
||||||
|
|
||||||
get_text_id(&text, &instance_name_len, &instance_name);
|
if (get_text_id(&text, &instance_name_len, &instance_name))
|
||||||
|
goto syntax_error;
|
||||||
text+= instance_name_len;
|
text+= instance_name_len;
|
||||||
|
|
||||||
/* the next token should be a dot */
|
/* the next token should be a dot */
|
||||||
@ -221,7 +222,8 @@ Command *parse_command(Instance_map *map, const char *text)
|
|||||||
switch (Token tok2= shift_token(&text, &word_len)) {
|
switch (Token tok2= shift_token(&text, &word_len)) {
|
||||||
case TOK_OPTIONS:
|
case TOK_OPTIONS:
|
||||||
case TOK_STATUS:
|
case TOK_STATUS:
|
||||||
get_text_id(&text, &instance_name_len, &instance_name);
|
if (get_text_id(&text, &instance_name_len, &instance_name))
|
||||||
|
goto syntax_error;
|
||||||
text+= instance_name_len;
|
text+= instance_name_len;
|
||||||
/* check that this is the end of the command */
|
/* check that this is the end of the command */
|
||||||
get_word(&text, &word_len);
|
get_word(&text, &word_len);
|
||||||
@ -273,7 +275,8 @@ Command *parse_command(Instance_map *map, const char *text)
|
|||||||
goto syntax_error;
|
goto syntax_error;
|
||||||
}
|
}
|
||||||
/* get the size of the log we want to retrieve */
|
/* get the size of the log we want to retrieve */
|
||||||
get_text_id(&text, &word_len, &log_size);
|
if (get_text_id(&text, &word_len, &log_size))
|
||||||
|
goto syntax_error;
|
||||||
text+= word_len;
|
text+= word_len;
|
||||||
/* this parameter is required */
|
/* this parameter is required */
|
||||||
if (!word_len)
|
if (!word_len)
|
||||||
@ -291,7 +294,6 @@ Command *parse_command(Instance_map *map, const char *text)
|
|||||||
instance_name_len, log_type,
|
instance_name_len, log_type,
|
||||||
log_size, text);
|
log_size, text);
|
||||||
|
|
||||||
//get_text_id(&text, &log_size_len, &log_size);
|
|
||||||
break;
|
break;
|
||||||
case '\0':
|
case '\0':
|
||||||
command= new Show_instance_log(map, instance_name,
|
command= new Show_instance_log(map, instance_name,
|
||||||
|
@ -8,13 +8,12 @@
|
|||||||
#ifdef __WIN__
|
#ifdef __WIN__
|
||||||
|
|
||||||
#define vsnprintf _vsnprintf
|
#define vsnprintf _vsnprintf
|
||||||
|
#define snprintf _snprintf
|
||||||
|
|
||||||
#define SIGKILL 9
|
#define SIGKILL 9
|
||||||
#define SHUT_RDWR 0x2
|
#define SHUT_RDWR 0x2
|
||||||
|
|
||||||
/*TODO: fix this */
|
/*TODO: fix this */
|
||||||
#define DEFAULT_MONITORING_INTERVAL 20
|
|
||||||
#define DEFAULT_PORT 2273
|
|
||||||
#define PROTOCOL_VERSION 10
|
#define PROTOCOL_VERSION 10
|
||||||
|
|
||||||
typedef int pid_t;
|
typedef int pid_t;
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
|
#include <mysql_com.h>
|
||||||
#include "priv.h"
|
#include "priv.h"
|
||||||
#include "portability.h"
|
#include "portability.h"
|
||||||
|
|
||||||
@ -52,7 +53,7 @@ unsigned long net_buffer_length= 16384;
|
|||||||
|
|
||||||
unsigned long max_allowed_packet= 16384;
|
unsigned long max_allowed_packet= 16384;
|
||||||
|
|
||||||
unsigned long net_read_timeout= 30; // same as in mysqld
|
unsigned long net_read_timeout= NET_WAIT_TIMEOUT; // same as in mysqld
|
||||||
|
|
||||||
unsigned long net_write_timeout= 60; // same as in mysqld
|
unsigned long net_write_timeout= 60; // same as in mysqld
|
||||||
|
|
||||||
|
@ -24,6 +24,11 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "my_pthread.h"
|
#include "my_pthread.h"
|
||||||
|
|
||||||
|
/* IM-wide platform-independent defines */
|
||||||
|
#define SERVER_DEFAULT_PORT 3306
|
||||||
|
#define DEFAULT_MONITORING_INTERVAL 20
|
||||||
|
#define DEFAULT_PORT 2273
|
||||||
|
|
||||||
/* the pid of the manager process (of the signal thread on the LinuxThreads) */
|
/* the pid of the manager process (of the signal thread on the LinuxThreads) */
|
||||||
extern pid_t manager_pid;
|
extern pid_t manager_pid;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user