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