Hello all,

I'd like to confirm that the behavior I'm seeing is expected:

We have a multithreaded application against an embedded derby database
(10.4).  While one thread is chugging away doing many thousands of inserts
inside a transaction other threads are getting SQLExceptions about "a lock
could not be obtained withing the time requested".  The exceptions
consistently happen trying to do a SELECT from a table that is not modified
by the big transaction in the other thread so I don't think we are dealing
with a deadlock.  If it matters, we are using the default isolation level:
TRANSACTION_READ_COMMITTED.

I did some searching and found this in the derby documentation:

Even if a transaction is not involved in a deadlock, it might have to wait a
considerable amount of time to obtain a lock because of a long-running
transaction or transactions holding locks on the tables it needs.
[http://db.apache.org/derby/docs/10.2/devguide/cdevconcepts89097.html]

Is it true that a long-running transaction will essentially lock the entire
database?

Much thanks.
- Adam

Reply via email to