Subject deadlock
Author mieke janson
Hi,



Firebird 2.0, delphi2007, dbexpress



I encounter a problem, the firebird log file tells me:

lock conflict on no wait transaction

deadlock

update conflicts with concurrent update

operation was cancelled

internal gds software consistency check (error during savepoint
backout (290), file: exe.cpp line: 3711)





A restart iof the fbserver and a backup/restore solved the problem..



When I look in Helens book I see the following:



Lock Timeout for WAIT Transactions

Karyakin, D. Yemanov



All Firebird versions provide two transaction wait modes: NO WAIT and WAIT.
NO WAIT mode means that

lock conflicts and deadlocks are reported immediately, while WAIT performs a
blocking wait which times out

only when the conflicting concurrent transaction ends by being committed or
rolled back.



So,

Would it be a solution for me to use the 'WAIT' mode in my transaction? Or
could there be an underlying problem? At the moment, I use the defaults:



var

TD : TTransactionDesc;

begin

TD.TransactionID := 1;

TD.IsolationLevel := xilReadCommitted;

try

fDatabase.DatabasedbExpress.StartTransaction(TD);

...

fDatabase.DatabasedbExpress.Commit(TD);

except

fDatabase.DatabasedbExpress.Rollback(TD);

end;



Another question: here I use TD.TransactionID := 1; Is that right? If I have
multiple users, don't they all use the same transactionID now? Could that be
the problem?



Thank you,

Mieke





[Non-text portions of this message have been removed]