Subject Troubleshooting concurrency issues
Author Alec Swan
Hello,

We have a test which spawns several treads which update and read data
from the database and verify the database post-state. The test
succeeds when spawning 2 threads but hangs with spawning 3 threads.
Note that the same test passes with any number of threads on SQL
Express, so this is unlikely to be a problem with the test itself.

I decided to remove deadlock as a potential culprit of the test hang
by switching to isc_tpb_consistency,isc_tpb_write,isc_tpb_wait
isolation level. After that the test still hanged in a state where two
threads were looking up a row in the same table. Why would two threads
be blocked on reading?

What's the best way to go about troubleshooting this situation? What
monitoring tables should I check to understand the blocking condition?

We are using Embedded Firebird 2.1.3.

Thanks,

Alec