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
>
>

Reply via email to