Hi,

    I'm having problems with replaying recovery logs, where the replay appears 
to be deadlocking itself.  I'm getting the following error:

2008-06-26 09:53:30,103 ERROR 
org.continuent.sequoia.controller.recoverylog.RecoverThread - Recovery process 
failed to replay transaction 1110: request StatementExecuteUpdateTask from 
transaction 1110 (update... ) (Backend AndyCluster - BackendWorkerThread for 
backend 'DB-BACKUP' with RAIDb level:1 failed (A lock could not be obtained 
within the time requested.


As an example, consider the following simplified scenario:

I have a table 'test':

create table test ( a int , b int )
insert into test values ( 1, 1 )

we then have two transactions, t1 & t2 each in different threads which do the 
following:

1) t1: update test set b = 2 where a = 1
2) t2: update test set b = 3 where a = 1
3) t1: commit
4) t2: commit

normally, this will work fine, when t2 executes, it is blocked on a lock, but 
as soon as t1 commits, the lock is freed and t2 then commits.

however, if you replay the transaction log, all the statements are executed 
sequentially, and what I think is happening is that the 2nd statement hangs and 
eventually has a lock timeout, as t1 will not be commited until after it.
This means that you can't recover, as you can't replay the log.

Is my understanding correct, and if so, is there anything I can do about this?

thanks,

    Andrew Lawrenson

_______________________________________________
Sequoia mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/sequoia

Reply via email to