Hi Bryan (sorry for the misspelling lat time),
The insert transaction is really simple (see below) so I am pretty
sure it doesn't do anything else else. In support of that, I want to
say that the deadlock trace does not reflect the LOCKCOUNT. There are
literally about 150 lines in the trace even though LOCKCOUNT=476.
Here is the code related one transaction of the insert thread (really
nothing fancy):
while(j-- > 0) {
stmt.setLong(1, agentSessionId);
stmt.setInt(2, 1);
// ... other param setters
stmt.addBatch();
} // while (tracks in batch)
stmt.executeBatch();
conn.commit();
And I would like to come back to the main question: How would you read
the deadlock trace from my previous email (the 3rd in the thread)?
What do you think could be the misterious 3rd connection that causes
the deadlock?
I will also cleanup my unit test (which actually is a benchmark) and
post it on the list so that you can reproduce the bahaviour. It
happens consistently, so this should not be a problem.
thanks,
Bogdan.
On 8/1/07, Bryan Pendleton <[EMAIL PROTECTED]> wrote:
> > Oh, and one more observation. The IX table lock for the insert thread
> > mentions LOCKCOUNT=476. I can only infer the meaning of the column (so
> > this might perfectly normal), but the number of row locks of that
> > connection is about 150 (it could not exceed 200, the number of
> > inserts I do per transaction).
>
> It sounds like the insert thread is doing more work than you expect
> it to be doing. You could investigate this using the logStatementText
> property to figure out what actual SQL is getting executed for each
> transaction in your application:
> http://db.apache.org/derby/docs/10.2/tuning/rtunproper43517.html
>
> thanks,
>
> bryan
>
>