Hello.
Please could you provide a repeatable test case, so it will be easier for list members to diagnose this weird behavior? Ben De Luca wrote: > Im am trying to implement a task running system with mysql and Im > coming across a few problems with what I am trying to do. > > > Simply I am trying to insert a list of tasks into the DB for various > computers to run, I want to track when they ran and where they ran. I > also have to limit some of the types of tasks that can run, so no more > than 5 of TYPEA can run concurrently. > > > What i have is a table called tasks > > TID (int) > status enum(waiting, completed, failed) > ResourceID (int) > task descriptor varchar (so I know what to run) > > I also have a table > Resource > ResourceID (int) > total (int) > used (int) > > > So I do a select > select * from tasks left join resource on > tasks.resourceID=Resource.Resource.id > where status='waiting' > and ((resource.used<=Resource.total +1) or > resource.id in null) > limit 1 for update; > > Next my code runs an update > update tasks set status='waiting' where TID=<value from above>; > > NOTE: that I have to use Resource.used<=Resource.total +1 because > Resource.used<Resource.total does not seem to be equivilent > > > Though I still need to update the Resource counter. > > So I have a trigger on BEFORE UPDATE tasks; That calls a Stored > procedure. that increments the Resource.used > > The Way I understand it the order for operations is > > Select > Triggered from Update > Stored Procedure (called from the trigger) > Update > > And rows used in the Select should be locked until after the update. > This all happens very fast but when I have around 10 threads all > connected to the DB running tasks, I tend to find that the locking does > not work. The Trigger that exists before UPDATE actualy happens after. > > > Is this a bug or is it meant to be like this? > > bd > > > > > > > > > > > > > > > > > > > -- For technical support contracts, goto https://order.mysql.com/?ref=ensita This email is sponsored by Ensita.NET http://www.ensita.net/ __ ___ ___ ____ __ / |/ /_ __/ __/ __ \/ / Gleb Paharenko / /|_/ / // /\ \/ /_/ / /__ [EMAIL PROTECTED] /_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.NET <___/ www.mysql.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]