SELECT  ... FOR UPDATE with no actual UPDATE prevents backend recovery
----------------------------------------------------------------------

         Key: SEQUOIA-1150
         URL: https://forge.continuent.org/jira/browse/SEQUOIA-1150
     Project: Sequoia
        Type: Bug

  Components: Recovery Log  
    Versions: sequoia 2.10.10    
 Environment: Discovered on Centos 5 with MySQL 5.1 for backends and Controller
    Reporter: Joel Kozikowski
    Priority: Critical


If the following sequence is issued to the database:

1) Start transaction
2) SELECT * WHERE ID = 1234 FOR UPDATE
3) End transaction
4) <zero or more other queries>
5) Start transaction
6) SELECT * WHERE ID = 1234 FOR UPDATE
7) End transaction

The following gets written to the recovery log:

1) BEGIN (transaction n)
2) SELECT * WHERE ID = 1234 FOR UPDATE (transaction n)
3) BEGIN (transaction n+1)
4) SELECT * WHERE ID = 1234 FOR UPDATE (transaction n+1)

The absense of a "COMMIT" in the recovery log causes ""Lock wait timeout 
exceeded; try restarting transaction"
 in MySQL when played back (because two seprate transactions are trying to lock 
the same record, but never release the locks).


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   https://forge.continuent.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

_______________________________________________
Sequoia mailing list
Sequoia@lists.forge.continuent.org
http://forge.continuent.org/mailman/listinfo/sequoia

Reply via email to