Skip to content

Commit 2bf4e57

Browse files
author
Jan Lindström
committed
MDEV-21758 : Events switched randomly to SLAVESIDE_DISABLED
Change events only on Galera environment where idea is that event is enabled only on one node of the cluster and nodes are identified by server_id.
1 parent d7f7415 commit 2bf4e57

File tree

3 files changed

+62
-4
lines changed

3 files changed

+62
-4
lines changed

mysql-test/r/events_restart.result

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,30 @@ Db Name Definer Time zone Type Execute at Interval value Interval field Starts E
110110
test e1 root@localhost SYSTEM RECURRING # 1 SECOND # # DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
111111
DROP EVENT e1;
112112
# end test for bug#11748899
113+
#
114+
# Test for MDEV-21758 Events switched randomly to SLAVESIDE_DISABLED
115+
#
116+
create event ev on schedule every 1 minute do set @a= 1;
117+
select name, originator, status from mysql.event;
118+
name originator status
119+
ev 1 ENABLED
120+
#
121+
# Restarting server with server_id=100
122+
#
123+
select @@global.server_id;
124+
@@global.server_id
125+
100
126+
select name, originator, status from mysql.event;
127+
name originator status
128+
ev 1 ENABLED
129+
set global server_id= 1;
130+
#
131+
# Restarting server with the original server_id=1
132+
#
133+
select @@global.server_id;
134+
@@global.server_id
135+
1
136+
select name, originator, status from mysql.event;
137+
name originator status
138+
ev 1 ENABLED
139+
drop event ev;

mysql-test/t/events_restart.test

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,3 +141,34 @@ SHOW EVENTS;
141141
DROP EVENT e1;
142142

143143
--echo # end test for bug#11748899
144+
145+
--echo #
146+
--echo # Test for MDEV-21758 Events switched randomly to SLAVESIDE_DISABLED
147+
--echo #
148+
149+
create event ev on schedule every 1 minute do set @a= 1;
150+
select name, originator, status from mysql.event;
151+
152+
--let $server_id= `SELECT @@global.server_id`
153+
154+
--echo #
155+
--echo # Restarting server with server_id=100
156+
--echo #
157+
--let $restart_parameters= --server-id=100
158+
--source include/restart_mysqld.inc
159+
160+
select @@global.server_id;
161+
select name, originator, status from mysql.event;
162+
--eval set global server_id= $server_id
163+
164+
--echo #
165+
--echo # Restarting server with the original server_id=$server_id
166+
--echo #
167+
--let $restart_parameters=
168+
--source include/restart_mysqld.inc
169+
170+
select @@global.server_id;
171+
select name, originator, status from mysql.event;
172+
173+
# Cleanup
174+
drop event ev;

sql/events.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,9 +1201,9 @@ Events::load_events_from_db(THD *thd)
12011201

12021202
#ifdef WITH_WSREP
12031203
/**
1204-
IF SST is done from a galera node that is also acting as MASTER
1205-
newly synced node in galera eco-system will also copy-over the event state
1206-
enabling duplicate event in galera eco-system.
1204+
If SST is done from a galera node that is also acting as MASTER
1205+
newly synced node in galera eco-system will also copy-over the
1206+
event state enabling duplicate event in galera eco-system.
12071207
DISABLE such events if the current node is not event orginator.
12081208
(Also, make sure you skip disabling it if is already disabled to avoid
12091209
creation of redundant action)
@@ -1213,7 +1213,7 @@ Events::load_events_from_db(THD *thd)
12131213
Infact, based on galera use-case it seems like it recommends to have each
12141214
node with different server-id.
12151215
*/
1216-
if (et->originator != thd->variables.server_id)
1216+
if (WSREP(thd) && et->originator != thd->variables.server_id)
12171217
{
12181218
if (et->status == Event_parse_data::SLAVESIDE_DISABLED)
12191219
continue;

0 commit comments

Comments
 (0)