Subject Re: [firebird-support] DeadlockTimeout
Author Ann W. Harrison
casibart wrote:
> Today, a support system for our main database application has crashed
> without being able to update some rows. So it has locked those rows
> and some users couldn't be able to enter data for those rows
> getting "Deadlock" errors.

Errr, that's not really the way firebird works unless you're using the
explicit locking feature in 1.5. Your "Deadlock" errors should have a
secondary message, which could be "update conflict" or "conflict with
no-wait transaction". An application doesn't actually lock records,
certainly not records it has yet to update. And, in theory, when an
application crash is detected, the active transaction for that
application is marked as rolled back and its changes are undone.

That said, the crash of a remote client may take a few minutes to detect.

> So I killed all firebird processes
> (firebird CS), and everthing was fine again.
> There's a setting as DeadlockTimeout in the firebird.conf file. Is it
> in use by default after installing firebird?

Yes. Using the default value, Firebird does a deadlock scan of the lock
table after a process has waited 10 seconds for a lock. On a busy
system with long latency (e.g. a slow network), that algorithm can set
of a lot of deadlock scans. but your problem is not there, I think.
The parameter "ConnectionTimeout" is the one that should help, assuming
that your application is remote.