Commit e5a5573f authored by Monty's avatar Monty

rpl.rpl_invoked_features fails sporadically with "Duplicate key error"

The reason was that Event e11 was re-executed before
"ALTER EVENT e11 DISABLE" had been executed.

Fixed by increasing re-schedule time

Other things:
- Removed double accounting of 'execution_count'. It was incremented in
  top->mark_last_executed(thd) that was executed a few lines earlier.
parent 7533062f
...@@ -45,14 +45,14 @@ BEGIN ...@@ -45,14 +45,14 @@ BEGIN
UPDATE t12 SET c = ''; UPDATE t12 SET c = '';
UPDATE t13 SET c = ''; UPDATE t13 SET c = '';
END| END|
CREATE EVENT e1 ON SCHEDULE EVERY 1 SECOND DISABLE DO CREATE EVENT e1 ON SCHEDULE EVERY 10 SECOND DISABLE DO
BEGIN BEGIN
ALTER EVENT e1 DISABLE; ALTER EVENT e1 DISABLE;
CALL p1(10, ''); CALL p1(10, '');
END| END|
Warnings: Warnings:
Warning 1105 Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it. Warning 1105 Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it.
CREATE EVENT e11 ON SCHEDULE EVERY 1 SECOND DISABLE DO CREATE EVENT e11 ON SCHEDULE EVERY 10 SECOND DISABLE DO
BEGIN BEGIN
ALTER EVENT e11 DISABLE; ALTER EVENT e11 DISABLE;
CALL p11(10, ''); CALL p11(10, '');
......
...@@ -102,14 +102,17 @@ BEGIN ...@@ -102,14 +102,17 @@ BEGIN
UPDATE t13 SET c = ''; UPDATE t13 SET c = '';
END| END|
# Create events which will run every 1 sec # Create events which will run every 10 sec
CREATE EVENT e1 ON SCHEDULE EVERY 1 SECOND DISABLE DO # It cannot be much shorter as we have to ensure that a new
# event is not scheduled before the DISABLE has been
# executed.
CREATE EVENT e1 ON SCHEDULE EVERY 10 SECOND DISABLE DO
BEGIN BEGIN
ALTER EVENT e1 DISABLE; ALTER EVENT e1 DISABLE;
CALL p1(10, ''); CALL p1(10, '');
END| END|
CREATE EVENT e11 ON SCHEDULE EVERY 1 SECOND DISABLE DO CREATE EVENT e11 ON SCHEDULE EVERY 10 SECOND DISABLE DO
BEGIN BEGIN
ALTER EVENT e11 DISABLE; ALTER EVENT e11 DISABLE;
CALL p11(10, ''); CALL p11(10, '');
......
...@@ -650,7 +650,6 @@ Event_queue::get_top_for_execution_if_time(THD *thd, ...@@ -650,7 +650,6 @@ Event_queue::get_top_for_execution_if_time(THD *thd,
top->status= Event_parse_data::DISABLED; top->status= Event_parse_data::DISABLED;
DBUG_PRINT("info", ("event %s status is %d", top->name.str, top->status)); DBUG_PRINT("info", ("event %s status is %d", top->name.str, top->status));
top->execution_count++;
(*event_name)->dropped= top->dropped; (*event_name)->dropped= top->dropped;
/* /*
Save new values of last_executed timestamp and event status on stack Save new values of last_executed timestamp and event status on stack
......
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