You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ji...@apache.org on 2004/04/14 18:41:43 UTC

[jira] Resolved: (JAMES-253) deadlock in mordred connection pool

Message:

   The following issue has been resolved as FIXED.

   Resolver: Noel J. Bergman
       Date: Wed, 14 Apr 2004 9:41 AM

Patch applied based upon Marcus Labib's contribution.  Enforces synchronized access to the pool.  Also added code based upon his patch to first just log overly long-lived connections, and then close them at a later time.  Not sure it is needed, but if the code is ever exercised, it should provide some data on "stuck" connections.

It should be noted that mordred is considered deprecated in favor of DBCP.
---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/JAMES-253

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: JAMES-253
    Summary: deadlock in mordred connection pool
       Type: Bug

     Status: Resolved
   Priority: Major
 Resolution: FIXED

    Project: James
 Components: 
             SpoolManager & Processors
             MailStore & MailRepository
   Fix Fors:
             2.2.0a19
   Versions:
             2.1.3

   Assignee: 
   Reporter: Marcus Labib

    Created: Tue, 13 Apr 2004 9:58 AM
    Updated: Wed, 14 Apr 2004 9:41 AM
Environment: Linux 2.4.24 - glibc 2.2 - j2sdk 1.4.2

Description:
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.

I submitted a patch to the james developer mailing list.

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)





---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org