Commit 1c7bc085 authored by petr@mysql.com's avatar petr@mysql.com

a bunch of IM fixes from the GUI team

parent 0766fb3a
......@@ -62,3 +62,5 @@ SHOW INSTANCES;
instance_name status
mysqld1 online
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
SHOW INSTANCES;
###########################################################################
#
# 1.1.8. Check that Instance Manager returns an error on
# incomplete SHOW INSTANCE STATUS command.
#
###########################################################################
--error 1149
SHOW INSTANCE STATUS;
......@@ -30,10 +30,8 @@ liboptions_a_CXXFLAGS= $(CXXFLAGS) \
-DDEFAULT_PID_FILE_NAME="$(localstatedir)/mysqlmanager.pid" \
-DDEFAULT_LOG_FILE_NAME="$(localstatedir)/mysqlmanager.log" \
-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_MONITORING_INTERVAL="20" \
-DDEFAULT_PORT="2273" \
-DDEFAULT_CONFIG_FILE="/etc/my.cnf" \
-DPROTOCOL_VERSION=@PROTOCOL_VERSION@
......
......@@ -483,7 +483,7 @@ int Show_instance_log::execute(struct st_net *net, ulong connection_id)
read_buff.reserve(0, buff_size);
/* 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,
buff_size, MYF(0))) < 0)
......
......@@ -418,6 +418,10 @@ bool Instance::is_running()
if (options.mysqld_socket)
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);
mysql_init(&mysql);
......
......@@ -229,10 +229,32 @@ int Instance_map::load()
uint args_used= 0;
const char *argv_options[3];
char **argv= (char **) &argv_options;
char defaults_file_arg[FN_REFLEN];
/* the name of the program may be orbitrary here in fact */
argv_options[0]= "mysqlmanager";
/*
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';
/*
......
......@@ -82,12 +82,13 @@ int main(int argc, char *argv[])
int return_value= 1;
init_environment(argv[0]);
Options options;
struct passwd *user_info;
if (options.load(argc, argv))
goto err;
#ifndef __WIN__
struct passwd *user_info;
if ((user_info= check_user(options.user)))
{
if (set_user(options.user, user_info))
......
......@@ -55,6 +55,8 @@ uint Options::monitoring_interval= DEFAULT_MONITORING_INTERVAL;
uint Options::port_number= DEFAULT_PORT;
/* just to declare */
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.
......@@ -118,7 +120,7 @@ static struct my_option my_long_options[] =
" Server binary.",
(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"
" instances in seconds.",
......@@ -254,6 +256,7 @@ int Options::load(int argc, char **argv)
if (is_prefix(argv[1], "--defaults-file="))
{
Options::config_file= strchr(argv[1], '=') + 1;
Options::is_forced_default_file= 1;
}
if (is_prefix(argv[1], "--defaults-extra-file=") ||
is_prefix(argv[1], "--no-defaults"))
......
......@@ -36,6 +36,7 @@ struct Options
static char run_as_service; /* handle_options doesn't support bool */
static const char *user;
#endif
static bool is_forced_default_file;
static const char *log_file_name;
static const char *pid_file_name;
static const char *socket_file_name;
......
......@@ -166,7 +166,8 @@ Command *parse_command(Instance_map *map, const char *text)
skip= true;
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;
/* 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)) {
case TOK_OPTIONS:
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;
/* check that this is the end of the command */
get_word(&text, &word_len);
......@@ -273,7 +275,8 @@ Command *parse_command(Instance_map *map, const char *text)
goto syntax_error;
}
/* 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;
/* this parameter is required */
if (!word_len)
......@@ -291,7 +294,6 @@ Command *parse_command(Instance_map *map, const char *text)
instance_name_len, log_type,
log_size, text);
//get_text_id(&text, &log_size_len, &log_size);
break;
case '\0':
command= new Show_instance_log(map, instance_name,
......
......@@ -8,13 +8,12 @@
#ifdef __WIN__
#define vsnprintf _vsnprintf
#define snprintf _snprintf
#define SIGKILL 9
#define SHUT_RDWR 0x2
/*TODO: fix this */
#define DEFAULT_MONITORING_INTERVAL 20
#define DEFAULT_PORT 2273
#define PROTOCOL_VERSION 10
typedef int pid_t;
......
......@@ -15,6 +15,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_global.h>
#include <mysql_com.h>
#include "priv.h"
#include "portability.h"
......@@ -52,7 +53,7 @@ unsigned long net_buffer_length= 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
......
......@@ -24,6 +24,11 @@
#endif
#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) */
extern pid_t manager_pid;
......
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