Commit fcc741f3 authored by Luis Soares's avatar Luis Soares

BUG#54144: manual merged bzr bundle from bug report.

parents 36051b01 06e92181
...@@ -6,19 +6,19 @@ show status like 'Slave_heartbeat_period';; ...@@ -6,19 +6,19 @@ show status like 'Slave_heartbeat_period';;
Variable_name Slave_heartbeat_period Variable_name Slave_heartbeat_period
Value 5.000 Value 5.000
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 4294968; change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 4294968;
ERROR HY000: The requested value for the heartbeat period is negative or exceeds the maximum 4294967 seconds ERROR HY000: The requested value for the heartbeat period is either negative or exceeds the maximum allowed (4294967 seconds).
show status like 'Slave_heartbeat_period';; show status like 'Slave_heartbeat_period';;
Variable_name Slave_heartbeat_period Variable_name Slave_heartbeat_period
Value 5.000 Value 5.000
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 0.0009999; change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 0.0009999;
Warnings: Warnings:
Warning 1624 The requested value for the heartbeat period is less than 1 msec. The period is reset to zero which means no heartbeats will be sending Warning 1703 The requested value for the heartbeat period is less than 1 millisecond. The value is reset to 0, meaning that heartbeating will effectively be disabled.
show status like 'Slave_heartbeat_period';; show status like 'Slave_heartbeat_period';;
Variable_name Slave_heartbeat_period Variable_name Slave_heartbeat_period
Value 0.000 Value 0.000
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 4294967; change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 4294967;
Warnings: Warnings:
Warning 1624 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout. Warning 1704 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout.
show status like 'Slave_heartbeat_period';; show status like 'Slave_heartbeat_period';;
Variable_name Slave_heartbeat_period Variable_name Slave_heartbeat_period
Value 4294967.000 Value 4294967.000
...@@ -30,7 +30,7 @@ reset slave; ...@@ -30,7 +30,7 @@ reset slave;
set @@global.slave_net_timeout= 5; set @@global.slave_net_timeout= 5;
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 5.001; change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root', master_heartbeat_period= 5.001;
Warnings: Warnings:
Warning 1624 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout. Warning 1704 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout.
show status like 'Slave_heartbeat_period';; show status like 'Slave_heartbeat_period';;
Variable_name Slave_heartbeat_period Variable_name Slave_heartbeat_period
Value 5.001 Value 5.001
...@@ -42,7 +42,7 @@ Variable_name Slave_heartbeat_period ...@@ -42,7 +42,7 @@ Variable_name Slave_heartbeat_period
Value 4.000 Value 4.000
set @@global.slave_net_timeout= 3 /* must be a warning */; set @@global.slave_net_timeout= 3 /* must be a warning */;
Warnings: Warnings:
Warning 1624 The current value for master_heartbeat_period exceeds the new value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout. Warning 1704 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout.
reset slave; reset slave;
drop table if exists t1; drop table if exists t1;
set @@global.slave_net_timeout= 10; set @@global.slave_net_timeout= 10;
......
...@@ -38,14 +38,14 @@ RESET SLAVE; ...@@ -38,14 +38,14 @@ RESET SLAVE;
*** Warning if updated slave_net_timeout < slave_heartbeat_timeout *** *** Warning if updated slave_net_timeout < slave_heartbeat_timeout ***
SET @@global.slave_net_timeout=FLOOR(SLAVE_HEARTBEAT_TIMEOUT)-1; SET @@global.slave_net_timeout=FLOOR(SLAVE_HEARTBEAT_TIMEOUT)-1;
Warnings: Warnings:
Warning 1624 The current value for master_heartbeat_period exceeds the new value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout. Warning 1704 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout.
SET @@global.slave_net_timeout=@restore_slave_net_timeout; SET @@global.slave_net_timeout=@restore_slave_net_timeout;
RESET SLAVE; RESET SLAVE;
*** Warning if updated slave_heartbeat_timeout > slave_net_timeout *** *** Warning if updated slave_heartbeat_timeout > slave_net_timeout ***
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=SLAVE_NET_TIMEOUT; CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=SLAVE_NET_TIMEOUT;
Warnings: Warnings:
Warning 1624 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout. Warning 1704 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout.
RESET SLAVE; RESET SLAVE;
*** CHANGE MASTER statement only updates slave_heartbeat_period *** *** CHANGE MASTER statement only updates slave_heartbeat_period ***
...@@ -140,7 +140,7 @@ Slave_heartbeat_period 0.001 ...@@ -140,7 +140,7 @@ Slave_heartbeat_period 0.001
RESET SLAVE; RESET SLAVE;
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.0009; CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.0009;
Warnings: Warnings:
Warning 1624 The requested value for the heartbeat period is less than 1 msec. The period is reset to zero which means no heartbeats will be sending Warning 1703 The requested value for the heartbeat period is less than 1 millisecond. The value is reset to 0, meaning that heartbeating will effectively be disabled.
SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period'; SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
Variable_name Value Variable_name Value
Slave_heartbeat_period 0.000 Slave_heartbeat_period 0.000
...@@ -149,19 +149,19 @@ RESET SLAVE; ...@@ -149,19 +149,19 @@ RESET SLAVE;
*** Max slave_heartbeat_timeout *** *** Max slave_heartbeat_timeout ***
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294967; CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294967;
Warnings: Warnings:
Warning 1624 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout. Warning 1704 The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout.
SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period'; SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
Variable_name Value Variable_name Value
Slave_heartbeat_period 4294967.000 Slave_heartbeat_period 4294967.000
RESET SLAVE; RESET SLAVE;
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294968; CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294968;
ERROR HY000: The requested value for the heartbeat period is negative or exceeds the maximum 4294967 seconds ERROR HY000: The requested value for the heartbeat period is either negative or exceeds the maximum allowed (4294967 seconds).
RESET SLAVE; RESET SLAVE;
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=8589935; CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=8589935;
ERROR HY000: The requested value for the heartbeat period is negative or exceeds the maximum 4294967 seconds ERROR HY000: The requested value for the heartbeat period is either negative or exceeds the maximum allowed (4294967 seconds).
RESET SLAVE; RESET SLAVE;
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294967296; CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=4294967296;
ERROR HY000: The requested value for the heartbeat period is negative or exceeds the maximum 4294967 seconds ERROR HY000: The requested value for the heartbeat period is either negative or exceeds the maximum allowed (4294967 seconds).
RESET SLAVE; RESET SLAVE;
*** Misc incorrect values *** *** Misc incorrect values ***
......
...@@ -6152,7 +6152,7 @@ ER_WARN_ENGINE_TRANSACTION_ROLLBACK ...@@ -6152,7 +6152,7 @@ ER_WARN_ENGINE_TRANSACTION_ROLLBACK
ER_SLAVE_HEARTBEAT_FAILURE ER_SLAVE_HEARTBEAT_FAILURE
eng "Unexpected master's heartbeat data: %s" eng "Unexpected master's heartbeat data: %s"
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
eng "The requested value for the heartbeat period %s %s" eng "The requested value for the heartbeat period is either negative or exceeds the maximum allowed (%s seconds)."
ER_NDB_REPLICATION_SCHEMA_ERROR ER_NDB_REPLICATION_SCHEMA_ERROR
eng "Bad schema for mysql.ndb_replication table. Message: %-.64s" eng "Bad schema for mysql.ndb_replication table. Message: %-.64s"
...@@ -6385,3 +6385,10 @@ ER_TRUNCATE_ILLEGAL_FK 42000 ...@@ -6385,3 +6385,10 @@ ER_TRUNCATE_ILLEGAL_FK 42000
ER_PLUGIN_IS_PERMANENT ER_PLUGIN_IS_PERMANENT
eng "Plugin '%s' is force_plus_permanent and can not be unloaded" eng "Plugin '%s' is force_plus_permanent and can not be unloaded"
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN
eng "The requested value for the heartbeat period is less than 1 millisecond. The value is reset to 0, meaning that heartbeating will effectively be disabled."
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX
eng "The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout."
...@@ -1933,35 +1933,28 @@ master_def: ...@@ -1933,35 +1933,28 @@ master_def:
| MASTER_HEARTBEAT_PERIOD_SYM EQ NUM_literal | MASTER_HEARTBEAT_PERIOD_SYM EQ NUM_literal
{ {
Lex->mi.heartbeat_period= (float) $3->val_real(); Lex->mi.heartbeat_period= (float) $3->val_real();
if (Lex->mi.heartbeat_period > SLAVE_MAX_HEARTBEAT_PERIOD || if (Lex->mi.heartbeat_period > SLAVE_MAX_HEARTBEAT_PERIOD ||
Lex->mi.heartbeat_period < 0.0) Lex->mi.heartbeat_period < 0.0)
{ {
const char format[]= "%d seconds"; const char format[]= "%d";
char buf[4*sizeof(SLAVE_MAX_HEARTBEAT_PERIOD) + sizeof(format)]; char buf[4*sizeof(SLAVE_MAX_HEARTBEAT_PERIOD) + sizeof(format)];
sprintf(buf, format, SLAVE_MAX_HEARTBEAT_PERIOD); sprintf(buf, format, SLAVE_MAX_HEARTBEAT_PERIOD);
my_error(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE, my_error(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE, MYF(0), buf);
MYF(0), " is negative or exceeds the maximum ", buf); MYSQL_YYABORT;
MYSQL_YYABORT;
} }
if (Lex->mi.heartbeat_period > slave_net_timeout) if (Lex->mi.heartbeat_period > slave_net_timeout)
{ {
push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN, push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE, ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX,
ER(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE), ER(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX));
" exceeds the value of `slave_net_timeout' sec.",
" A sensible value for the period should be"
" less than the timeout.");
} }
if (Lex->mi.heartbeat_period < 0.001) if (Lex->mi.heartbeat_period < 0.001)
{ {
if (Lex->mi.heartbeat_period != 0.0) if (Lex->mi.heartbeat_period != 0.0)
{ {
push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN, push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE, ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN,
ER(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE), ER(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN));
" is less than 1 msec.",
" The period is reset to zero which means"
" no heartbeats will be sending");
Lex->mi.heartbeat_period= 0.0; Lex->mi.heartbeat_period= 0.0;
} }
Lex->mi.heartbeat_opt= LEX_MASTER_INFO::LEX_MI_DISABLE; Lex->mi.heartbeat_opt= LEX_MASTER_INFO::LEX_MI_DISABLE;
......
...@@ -2943,11 +2943,8 @@ static bool fix_slave_net_timeout(sys_var *self, THD *thd, enum_var_type type) ...@@ -2943,11 +2943,8 @@ static bool fix_slave_net_timeout(sys_var *self, THD *thd, enum_var_type type)
(active_mi? active_mi->heartbeat_period : 0.0))); (active_mi? active_mi->heartbeat_period : 0.0)));
if (active_mi && slave_net_timeout < active_mi->heartbeat_period) if (active_mi && slave_net_timeout < active_mi->heartbeat_period)
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE, ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX,
"The current value for master_heartbeat_period" ER(ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX));
" exceeds the new value of `slave_net_timeout' sec."
" A sensible value for the period should be"
" less than the timeout.");
mysql_mutex_unlock(&LOCK_active_mi); mysql_mutex_unlock(&LOCK_active_mi);
return false; return false;
} }
......
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