[ 
https://forge.continuent.org/jira/browse/SEQUOIA-1150?page=comments#action_15570
 ] 

Joel Kozikowski commented on SEQUOIA-1150:
------------------------------------------

More info:  actually, I think I may have mispoken slightly.  The "COMMIT only"  
entries I believe were a result of a "being transaction" followed by any query 
that was truely a query with no "FOR UPDATE" statement, followed by an "end 
transaction"  In studying the Sequoia code, I believe that is due to the fact 
that the "BEGING" is written out in a lazy fasion (i.e. it is held until the 
first INSERT, UPDATE, or SELECT ... FOR UPDATE" is issued.

Starting and ending a transaction with no modifications in between is fairly 
common in a Spring based service.  The call into the service starts a 
transaction, and the exiting from the service call ends a transaction.


> 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
> Single controller configuration
>     Reporter: Joel Kozikowski
>     Assignee: Emmanuel Cecchet
>     Priority: Critical
>  Attachments: TestSequoiaSelectForUpdate.java
>
>
> 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