james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Labib Iskander, Marcus" ...@cm4all.com>
Subject james 2.1.3: deadlock in mordred code
Date Tue, 13 Apr 2004 15:56:05 GMT
Hi,

since some time we are experiencing a deadlock in the mordred connection
pool. It seems that this deadlock occurs only when sql queries take very
long.

The attached patch goes a little further than just fixing the bug. I don't
think it is wise to kill a connection after a minute execution time. Judge
for yourself.

Cheers,
  Marcus

excerpt from a typical thread dump:

Found one Java-level deadlock:
=============================
"default Worker #4":
  waiting to lock monitor 0x8856f1c (object 0x44b4d568, a
org.apache.james.util.mordred.PoolConnEntry),
  which is held by "Thread-3"
"Thread-3":
  waiting to lock monitor 0x8856ffc (object 0x44b40138, a java.util.Vector),
  which is held by "default Worker #4"

Java stack information for the threads listed above:
===================================================
"default Worker #4":
	at
org.apache.james.util.mordred.PoolConnEntry.lock(PoolConnEntry.java:110)
	- waiting to lock <0x44b4d568> (a
org.apache.james.util.mordred.PoolConnEntry)
	at
org.apache.james.util.mordred.JdbcDataSource.getConnection(JdbcDataSource.ja
va:178)
	- locked <0x44b40138> (a java.util.Vector)
	at
org.apache.james.mailrepository.JDBCSpoolRepository.loadPendingMessages(JDBC
SpoolRepository.java:281)
	- locked <0x44b5f218> (a java.util.LinkedList)
	at
org.apache.james.mailrepository.JDBCSpoolRepository.getNextPendingMessage(JD
BCSpoolRepository.java:256)
	- locked <0x44b5f218> (a java.util.LinkedList)
	at
org.apache.james.mailrepository.JDBCSpoolRepository.accept(JDBCSpoolReposito
ry.java:154)
	at
org.apache.james.transport.JamesSpoolManager.run(JamesSpoolManager.java:350)
	at
org.apache.avalon.excalibur.thread.impl.ExecutableRunnable.execute(Executabl
eRunnable.java:47)
	at
org.apache.avalon.excalibur.thread.impl.WorkerThread.run(WorkerThread.java:8
0)
	- locked <0x44ba24b0> (a
org.apache.avalon.excalibur.thread.impl.WorkerThread)
"Thread-3":
	at java.util.Vector.removeElement(Vector.java:605)
	- waiting to lock <0x44b40138> (a java.util.Vector)
	at
org.apache.james.util.mordred.JdbcDataSource.finalizeEntry(JdbcDataSource.ja
va:579)
	- locked <0x44b400b0> (a
org.apache.james.util.mordred.JdbcDataSource)
	at
org.apache.james.util.mordred.JdbcDataSource.run(JdbcDataSource.java:452)
	- locked <0x44b4d568> (a
org.apache.james.util.mordred.PoolConnEntry)
	at java.lang.Thread.run(Thread.java:536)



Mime
View raw message