diff options
author | unknown <sasha@mysql.sashanet.com> | 2001-10-09 20:56:24 -0600 |
---|---|---|
committer | unknown <sasha@mysql.sashanet.com> | 2001-10-09 20:56:24 -0600 |
commit | 83c04cfdda3c7003ec2a15bd6a4d84a187c6d3fd (patch) | |
tree | 58cc6265f722205aaca76380e2eb9137edfa1c05 | |
parent | 8b209415ffbbcb1dfad4bbeb9893ac8a2d6f6d5c (diff) | |
download | mariadb-git-83c04cfdda3c7003ec2a15bd6a4d84a187c6d3fd.tar.gz |
Added rpl_status. This is a midway commit to be able to pull so I can save
myself a run of compile-pentium-debug. I have not even tried to compile the
new code
sql/Makefile.am:
added repl_failsafe.*
sql/mysqld.cc:
added Rpl_status
sql/sql_show.cc:
added rpl_status
sql/structs.h:
rpl_status
-rw-r--r-- | sql/Makefile.am | 2 | ||||
-rw-r--r-- | sql/mysqld.cc | 17 | ||||
-rw-r--r-- | sql/repl_failsafe.cc | 36 | ||||
-rw-r--r-- | sql/repl_failsafe.h | 13 | ||||
-rw-r--r-- | sql/sql_show.cc | 3 | ||||
-rw-r--r-- | sql/structs.h | 1 |
6 files changed, 71 insertions, 1 deletions
diff --git a/sql/Makefile.am b/sql/Makefile.am index a11b1d0c252..1510869e07f 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -82,7 +82,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc \ sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc \ slave.cc sql_repl.cc sql_union.cc \ mini_client.cc mini_client_errors.c \ - stacktrace.c + stacktrace.c repl_failsafe.h repl_failsafe.cc gen_lex_hash_SOURCES = gen_lex_hash.cc gen_lex_hash_LDADD = $(LDADD) $(CXXLDFLAGS) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 7b0c97c4b79..3158875e43f 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -21,6 +21,7 @@ #include "sql_acl.h" #include "slave.h" #include "sql_repl.h" +#include "repl_failsafe.h" #include "stacktrace.h" #ifdef HAVE_BERKELEY_DB #include "ha_berkeley.h" @@ -1698,6 +1699,7 @@ int main(int argc, char **argv) (void) pthread_mutex_init(&LOCK_slave, MY_MUTEX_INIT_FAST); (void) pthread_mutex_init(&LOCK_server_id, MY_MUTEX_INIT_FAST); (void) pthread_mutex_init(&LOCK_user_conn, MY_MUTEX_INIT_FAST); + (void) pthread_mutex_init(&LOCK_rpl_status, MY_MUTEX_INIT_FAST); (void) pthread_cond_init(&COND_thread_count,NULL); (void) pthread_cond_init(&COND_refresh,NULL); (void) pthread_cond_init(&COND_thread_cache,NULL); @@ -1706,6 +1708,7 @@ int main(int argc, char **argv) (void) pthread_cond_init(&COND_binlog_update, NULL); (void) pthread_cond_init(&COND_slave_stopped, NULL); (void) pthread_cond_init(&COND_slave_start, NULL); + (void) pthread_cond_init(&COND_rpl_status, NULL); init_signals(); if (set_default_charset_by_name(default_charset, MYF(MY_WME))) @@ -2652,6 +2655,7 @@ static struct option long_options[] = { {"gemini-recovery", required_argument, 0, (int) OPT_GEMINI_RECOVER}, {"gemini-unbuffered-io", no_argument, 0, (int) OPT_GEMINI_UNBUFFERED_IO}, #endif + {"init-rpl-role", required_argument, 0, (int) OPT_INIT_RPL_ROLE}, /* We must always support this option to make scripts like mysqltest easier to do */ {"innodb_data_file_path", required_argument, 0, @@ -3101,6 +3105,8 @@ struct show_var_st status_vars[]= { {"Open_streams", (char*) &my_stream_opened, SHOW_INT_CONST}, {"Opened_tables", (char*) &opened_tables, SHOW_LONG}, {"Questions", (char*) 0, SHOW_QUESTION}, + {"Rpl_status", (char*) 0, + SHOW_RPL_STATUS}, {"Select_full_join", (char*) &select_full_join_count, SHOW_LONG}, {"Select_full_range_join", (char*) &select_full_range_join_count, SHOW_LONG}, {"Select_range", (char*) &select_range_count, SHOW_LONG}, @@ -3548,6 +3554,17 @@ static void get_options(int argc,char **argv) opt_log_slave_updates = 1; break; + case (int) OPT_INIT_RPL_ROLE: + { + int role; + if ((role=find_type(optarg, &rpl_role_typelib, 2)) <= 0) + { + fprintf(stderr, "Unknown replication role: %s\n", optarg); + exit(1); + } + rpl_status = (rpl_role == 1) ? RPL_AUTH_MASTER : RPL_IDLE_SLAVE; + break; + } case (int)OPT_REPLICATE_IGNORE_DB: { i_string *db = new i_string(optarg); diff --git a/sql/repl_failsafe.cc b/sql/repl_failsafe.cc new file mode 100644 index 00000000000..541c53ea24a --- /dev/null +++ b/sql/repl_failsafe.cc @@ -0,0 +1,36 @@ +/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB & Sasha + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +// Sasha Pachev <sasha@mysql.com> is currently in charge of this file + +#include "mysql_priv.h" +#include "repl_failsafe.h" + +RPL_STATUS rpl_status=RPL_NULL; +pthread_mutex_t LOCK_rpl_status; +pthread_cond_t COND_rpl_status; + +const char *rpl_role_type[] = {"","MASTER","SLAVE",NullS}; +TYPELIB rpl_role_typelib = {array_elements(rpl_role_type)-4,"", + rpl_role_type+1}; + +const char* rpl_status_type[] = {"AUTH_MASTER","ACTIVE_SLAVE","IDLE_SLAVE", + "LOST_SOLDIER","TROOP_SOLDIER", + "RECOVERY_CAPTAIN","NULL",NullS}; +TYPELIB rpl_status_typelib= {array_elements(rpl_status_type)-1,"", + rpl_status_type}; + + diff --git a/sql/repl_failsafe.h b/sql/repl_failsafe.h new file mode 100644 index 00000000000..1f62da7b05e --- /dev/null +++ b/sql/repl_failsafe.h @@ -0,0 +1,13 @@ +#ifndef REPL_FAILSAFE_H +#define REPL_FAILSAFE_H + +typedef enum {RPL_AUTH_MASTER=0,RPL_ACTIVE_SLAVE,RPL_IDLE_SLAVE, + RPL_LOST_SOLDIER,RPL_TROOP_SOLDIER, + RPL_RECOVERY_CAPTAIN,RPL_NULL} RPL_STATUS; +extern RPL_STATUS rpl_status; + +extern pthread_mutex_t LOCK_rpl_status; +extern pthread_cond_t COND_rpl_status; +extern TYPELIB rpl_role_typelib, rpl_status_typelib; +extern char* rpl_role_type[], *rpl_status_type; +#endif diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 5a9777e24a4..dba6b55443c 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1164,6 +1164,9 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables) case SHOW_QUESTION: net_store_data(&packet2,(uint32) thd->query_id); break; + case SHOW_RPL_STATUS: + net_store_data(&packet2, rpl_status_type[(int)rpl_status]); + break; case SHOW_OPENTABLES: net_store_data(&packet2,(uint32) cached_tables()); break; diff --git a/sql/structs.h b/sql/structs.h index 2f6f850bc9e..439384c7191 100644 --- a/sql/structs.h +++ b/sql/structs.h @@ -140,6 +140,7 @@ enum SHOW_TYPE { SHOW_LONG,SHOW_CHAR,SHOW_INT,SHOW_CHAR_PTR,SHOW_BOOL, ,SHOW_SSL_CTX_SESS_TIMEOUTS, SHOW_SSL_CTX_SESS_CACHE_FULL ,SHOW_SSL_GET_CIPHER_LIST #endif /* HAVE_OPENSSL */ + ,SHOW_RPL_STATUS }; enum SHOW_COMP_OPTION { SHOW_OPTION_YES, SHOW_OPTION_NO, SHOW_OPTION_DISABLED}; |