Adding global variables for replication hostgroups (#395)

pull/412/head
René Cannaò 11 years ago
parent ee9b62c9de
commit b096ce5976

@ -249,6 +249,8 @@ class MySQL_Threads_Handler
int monitor_connect_timeout;
int monitor_ping_interval;
int monitor_ping_timeout;
int monitor_read_only_interval;
int monitor_read_only_timeout;
int monitor_replication_lag_interval;
int monitor_replication_lag_timeout;
int monitor_query_interval;

@ -705,6 +705,8 @@ __thread int mysql_thread___monitor_connect_interval;
__thread int mysql_thread___monitor_connect_timeout;
__thread int mysql_thread___monitor_ping_interval;
__thread int mysql_thread___monitor_ping_timeout;
__thread int mysql_thread___monitor_read_only_interval;
__thread int mysql_thread___monitor_read_only_timeout;
__thread int mysql_thread___monitor_replication_lag_interval;
__thread int mysql_thread___monitor_replication_lag_timeout;
__thread int mysql_thread___monitor_query_interval;
@ -760,6 +762,8 @@ extern __thread int mysql_thread___monitor_connect_interval;
extern __thread int mysql_thread___monitor_connect_timeout;
extern __thread int mysql_thread___monitor_ping_interval;
extern __thread int mysql_thread___monitor_ping_timeout;
extern __thread int mysql_thread___monitor_read_only_interval;
extern __thread int mysql_thread___monitor_read_only_timeout;
extern __thread int mysql_thread___monitor_replication_lag_interval;
extern __thread int mysql_thread___monitor_replication_lag_timeout;
extern __thread int mysql_thread___monitor_query_interval;

@ -35,8 +35,6 @@ static MySQL_Monitor *GloMyMon;
static void state_machine_handler(int fd, short event, void *arg);
// FIXME:
const int mysql_thread___monitor_read_only_interval=1000;
/*
struct state_data {
int ST;
@ -1014,8 +1012,7 @@ __end_monitor_read_only_loop:
SAFE_SQLITE3_STEP(statement);
rc=sqlite3_clear_bindings(statement); assert(rc==SQLITE_OK);
rc=sqlite3_reset(statement); assert(rc==SQLITE_OK);
// FIXME: MyHGM->replication_lag_action(mmsd->hostgroup_id, mmsd->hostname, mmsd->port, (repl_lag==-1 ? 0 : repl_lag));
char *pta[3];
char roport[10];
char roval[10];
@ -1025,6 +1022,7 @@ __end_monitor_read_only_loop:
sprintf(roval,"%d",read_only);
pta[2]=roval;
result->add_row(pta);
delete mmsd;
}
sqlite3_finalize(statement);

@ -149,6 +149,8 @@ static char * mysql_thread_variables_names[]= {
(char *)"monitor_connect_timeout",
(char *)"monitor_ping_interval",
(char *)"monitor_ping_timeout",
(char *)"monitor_read_only_interval",
(char *)"monitor_read_only_timeout",
(char *)"monitor_replication_lag_interval",
(char *)"monitor_replication_lag_timeout",
(char *)"monitor_username",
@ -213,6 +215,8 @@ MySQL_Threads_Handler::MySQL_Threads_Handler() {
variables.monitor_connect_timeout=200;
variables.monitor_ping_interval=60000;
variables.monitor_ping_timeout=100;
variables.monitor_read_only_interval=1000;
variables.monitor_read_only_timeout=100;
variables.monitor_replication_lag_interval=10000;
variables.monitor_replication_lag_timeout=1000;
variables.monitor_query_interval=60000;
@ -357,6 +361,8 @@ int MySQL_Threads_Handler::get_variable_int(char *name) {
if (!strcasecmp(name,"monitor_connect_timeout")) return (int)variables.monitor_connect_timeout;
if (!strcasecmp(name,"monitor_ping_interval")) return (int)variables.monitor_ping_interval;
if (!strcasecmp(name,"monitor_ping_timeout")) return (int)variables.monitor_ping_timeout;
if (!strcasecmp(name,"monitor_read_only_interval")) return (int)variables.monitor_read_only_interval;
if (!strcasecmp(name,"monitor_read_only_timeout")) return (int)variables.monitor_read_only_timeout;
if (!strcasecmp(name,"monitor_replication_lag_interval")) return (int)variables.monitor_replication_lag_interval;
if (!strcasecmp(name,"monitor_replication_lag_timeout")) return (int)variables.monitor_replication_lag_timeout;
if (!strcasecmp(name,"monitor_query_interval")) return (int)variables.monitor_query_interval;
@ -430,6 +436,14 @@ char * MySQL_Threads_Handler::get_variable(char *name) { // this is the public f
sprintf(intbuf,"%d",variables.monitor_ping_timeout);
return strdup(intbuf);
}
if (!strcasecmp(name,"monitor_read_only_interval")) {
sprintf(intbuf,"%d",variables.monitor_read_only_interval);
return strdup(intbuf);
}
if (!strcasecmp(name,"monitor_read_only_timeout")) {
sprintf(intbuf,"%d",variables.monitor_read_only_timeout);
return strdup(intbuf);
}
if (!strcasecmp(name,"monitor_replication_lag_interval")) {
sprintf(intbuf,"%d",variables.monitor_replication_lag_interval);
return strdup(intbuf);
@ -665,6 +679,24 @@ bool MySQL_Threads_Handler::set_variable(char *name, char *value) { // this is t
return false;
}
}
if (!strcasecmp(name,"monitor_read_only_interval")) {
int intv=atoi(value);
if (intv >= 100 && intv <= 7*24*3600*1000) {
variables.monitor_read_only_interval=intv;
return true;
} else {
return false;
}
}
if (!strcasecmp(name,"monitor_read_only_timeout")) {
int intv=atoi(value);
if (intv >= 100 && intv <= 600*1000) {
variables.monitor_read_only_timeout=intv;
return true;
} else {
return false;
}
}
if (!strcasecmp(name,"monitor_replication_lag_interval")) {
int intv=atoi(value);
if (intv >= 100 && intv <= 7*24*3600*1000) {
@ -1651,6 +1683,8 @@ void MySQL_Thread::refresh_variables() {
mysql_thread___monitor_connect_timeout=GloMTH->get_variable_int((char *)"monitor_connect_timeout");
mysql_thread___monitor_ping_interval=GloMTH->get_variable_int((char *)"monitor_ping_interval");
mysql_thread___monitor_ping_timeout=GloMTH->get_variable_int((char *)"monitor_ping_timeout");
mysql_thread___monitor_read_only_interval=GloMTH->get_variable_int((char *)"monitor_read_only_interval");
mysql_thread___monitor_read_only_timeout=GloMTH->get_variable_int((char *)"monitor_read_only_timeout");
mysql_thread___monitor_replication_lag_interval=GloMTH->get_variable_int((char *)"monitor_replication_lag_interval");
mysql_thread___monitor_replication_lag_timeout=GloMTH->get_variable_int((char *)"monitor_replication_lag_timeout");
mysql_thread___monitor_query_interval=GloMTH->get_variable_int((char *)"monitor_query_interval");

Loading…
Cancel
Save