Subject | Troubleshooting concurrency issues |
---|---|
Author | Alec Swan |
Post date | 2011-05-20T19:52:29Z |
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
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