diff options
author | unknown <petr@mysql.com> | 2006-02-10 02:15:55 +0300 |
---|---|---|
committer | unknown <petr@mysql.com> | 2006-02-10 02:15:55 +0300 |
commit | d7ddf0e02f9a2d7515fa0fad3aa4e41eac0f08a2 (patch) | |
tree | 873eae3039ba877792e7071a79a4eb336c9e5e61 /server-tools | |
parent | 4e69c153e31f16c2d46e9bd5cacc92b8e92cf00e (diff) | |
download | mariadb-git-d7ddf0e02f9a2d7515fa0fad3aa4e41eac0f08a2.tar.gz |
a bunch of IM fixes from the GUI team
mysql-test/r/im_life_cycle.result:
correct result
mysql-test/t/im_life_cycle.imtest:
check that wrong command is processed correctly
server-tools/instance-manager/Makefile.am:
always look for passwords in /etc/ on unixes
server-tools/instance-manager/commands.cc:
fix warning
server-tools/instance-manager/instance.cc:
fix monitoring capabilities, when no port was specified
for an instance
server-tools/instance-manager/instance_map.cc:
allow relative paths in --defaults-file option
server-tools/instance-manager/mysqlmanager.cc:
fix windows warning
server-tools/instance-manager/options.cc:
add vars to allow relative paths in --defaults-file option
server-tools/instance-manager/options.h:
add an option
server-tools/instance-manager/parse.cc:
check for get_text_id return value
server-tools/instance-manager/portability.h:
add _snprintf define, move platfrom-independent
ifdefs to priv.h
server-tools/instance-manager/priv.cc:
increase net timeout. it should be equal to mysqld's
server-tools/instance-manager/priv.h:
move platform-independent ifdefs here
Diffstat (limited to 'server-tools')
-rw-r--r-- | server-tools/instance-manager/Makefile.am | 6 | ||||
-rw-r--r-- | server-tools/instance-manager/commands.cc | 2 | ||||
-rw-r--r-- | server-tools/instance-manager/instance.cc | 4 | ||||
-rw-r--r-- | server-tools/instance-manager/instance_map.cc | 26 | ||||
-rw-r--r-- | server-tools/instance-manager/mysqlmanager.cc | 3 | ||||
-rw-r--r-- | server-tools/instance-manager/options.cc | 5 | ||||
-rw-r--r-- | server-tools/instance-manager/options.h | 1 | ||||
-rw-r--r-- | server-tools/instance-manager/parse.cc | 10 | ||||
-rw-r--r-- | server-tools/instance-manager/portability.h | 3 | ||||
-rw-r--r-- | server-tools/instance-manager/priv.cc | 3 | ||||
-rw-r--r-- | server-tools/instance-manager/priv.h | 5 |
11 files changed, 52 insertions, 16 deletions
diff --git a/server-tools/instance-manager/Makefile.am b/server-tools/instance-manager/Makefile.am index 7449735f0bf..5b9690322aa 100644 --- a/server-tools/instance-manager/Makefile.am +++ b/server-tools/instance-manager/Makefile.am @@ -30,11 +30,9 @@ 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" \ + -DDEFAULT_CONFIG_FILE="/etc/my.cnf" \ -DPROTOCOL_VERSION=@PROTOCOL_VERSION@ liboptions_a_SOURCES= options.h options.cc priv.h priv.cc diff --git a/server-tools/instance-manager/commands.cc b/server-tools/instance-manager/commands.cc index b4dd1b469f1..2c9d3236720 100644 --- a/server-tools/instance-manager/commands.cc +++ b/server-tools/instance-manager/commands.cc @@ -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) diff --git a/server-tools/instance-manager/instance.cc b/server-tools/instance-manager/instance.cc index 3d04403f830..39381b457ab 100644 --- a/server-tools/instance-manager/instance.cc +++ b/server-tools/instance-manager/instance.cc @@ -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); diff --git a/server-tools/instance-manager/instance_map.cc b/server-tools/instance-manager/instance_map.cc index 611eda457f2..7dfe0ae688b 100644 --- a/server-tools/instance-manager/instance_map.cc +++ b/server-tools/instance-manager/instance_map.cc @@ -229,11 +229,33 @@ 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"; - 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 diff --git a/server-tools/instance-manager/mysqlmanager.cc b/server-tools/instance-manager/mysqlmanager.cc index 3d2907f4776..d0b2cf2666c 100644 --- a/server-tools/instance-manager/mysqlmanager.cc +++ b/server-tools/instance-manager/mysqlmanager.cc @@ -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)) diff --git a/server-tools/instance-manager/options.cc b/server-tools/instance-manager/options.cc index b16fcabae01..8119e8fc0ea 100644 --- a/server-tools/instance-manager/options.cc +++ b/server-tools/instance-manager/options.cc @@ -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")) diff --git a/server-tools/instance-manager/options.h b/server-tools/instance-manager/options.h index 6d719c69629..abb094eac93 100644 --- a/server-tools/instance-manager/options.h +++ b/server-tools/instance-manager/options.h @@ -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; diff --git a/server-tools/instance-manager/parse.cc b/server-tools/instance-manager/parse.cc index a79a6ad6742..9d9064240d4 100644 --- a/server-tools/instance-manager/parse.cc +++ b/server-tools/instance-manager/parse.cc @@ -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, diff --git a/server-tools/instance-manager/portability.h b/server-tools/instance-manager/portability.h index 2bdeff71a72..1a3be5705e3 100644 --- a/server-tools/instance-manager/portability.h +++ b/server-tools/instance-manager/portability.h @@ -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; diff --git a/server-tools/instance-manager/priv.cc b/server-tools/instance-manager/priv.cc index e39c12f4ebb..d2d6a3f636c 100644 --- a/server-tools/instance-manager/priv.cc +++ b/server-tools/instance-manager/priv.cc @@ -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 diff --git a/server-tools/instance-manager/priv.h b/server-tools/instance-manager/priv.h index 4739bca68eb..af6d2837933 100644 --- a/server-tools/instance-manager/priv.h +++ b/server-tools/instance-manager/priv.h @@ -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; |