Bug #72117 Scheduler does not notify all procedures that are free to go after a release
Submitted: 24 Mar 2014 23:02 Modified: 26 Mar 2014 4:18
Reporter: Alfranio Junior Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Fabric Severity:S2 (Serious)
Version:1.4.0 OS:Any
Assigned to: Alfranio Junior CPU Architecture:Any

[24 Mar 2014 23:02] Alfranio Junior
Description:
The scheduler is not checking which procedures must be notified after releasing a procedure that is blocking them. The current algorithm checks all the queues for the objects locked by the procedure that has finished but forgets to check that some procedures are at head of the queue for other objects.

For example,

   ['object_1'] = [procedure_1, procedure_2]
   ['object_2'] = [procedure_2]

If "procedure_1" finishes the execution, the scheduler does notify that "procedure_2" can continue its execution because only the queue for "object_1" is being released by "procedure_1".

How to repeat:
Run multiple "sharding.shard_move" concurrently.

Suggested fix:
Fix the release procedure.
[26 Mar 2014 4:18] Philip Olson
Fixed as of the upcoming 1.4.2 release, and here's the changelog entry:

        With fabric, the scheduler did not check and determine which
        procedures needed to be notified after releasing the procedure
        that was blocking them.

Thank you for the bug report.