Hi
Thank you for such complete post.
I have the problem yet and i could not solve it until now.
It will be good is some one with more experience look at this problem and provide some tips to solve this problem.

Thank you
Klas U. wrote:
Dear all,
I've got a similar Problem with Derby locks like it was described in
"Deby create LOCK on my table and do not release it , what is my mistake ?".

I have an JDBC application that uses a Derby 10.0.2.1 Network Server on an IBM AIX machine.

My application performs delete- and update-statements on a table sequentially in one connection for a user request. Then the application
commits the changes and selects some rows from the table (in an other
connection). My application will keep the connections open.
Thereby, on some conditions (I don't know) some locks remain!

I watch the locks in the virtual LockTable with:
   SELECT * FROM NEW org.apache.derby.diag.LockTable() AS LT
(as found on "http://publib.boulder.ibm.com/infocenter/cldscp10/
index.jsp?topic=/com.ibm.cloudscape.doc/hubprnt57.htm" (join link)),
where I get something like

XID  TYPE MODE TABLENAME LOCKNAME STATE TABLETYPE LOCKCOUNT INDEXNAME
123  ROW  U    tableX    (90,78)  GRANT T         1         (null)

but I cannot see any open transaction in the TransactionTable:
  SELECT SQL_TEXT FROM NEW org.apache.derby.diag.TransactionTable()
    AS Trans

The Network Server is started with several properties to get detailed
information (as described in the "FAQ on debugging lock timeout errors"), but I can not join the information I've got: all transactions
are finished and committed.

Sometimes I cannot find any command doing anything with locked table
for the XID (the transaction ID) of the lock, so how is that XID set to the LockTable for the specific table?
In some other tests the XID in the LockTable was (null)!

How can I put the information together? What is wrong? How can I identify the locked data row? (with the LOCKNAME?)

Thank you in advance,
regards,
        Klas.



Reply via email to