james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Noel J. Bergman" <n...@devtech.com>
Subject Decision required for JAMES-603
Date Sat, 02 Sep 2006 15:22:43 GMT
The following is a summary of the problem.

  1) It occurs ONLY when using JDBCSpoolRepository for RemoteDelivery
  2) If there are more items in the spool than fit in the cache, it is
     possible to delay delivery for messages that ought to be delivered.
  3) If iterating through the cache takes more than one second, it is
     possible to spinloop.

There are a variety of approaches.  One is to fix it.  So far neither
Stefano nor I (not that I've had much time to look, but he spent all day on
it), have come up with a trivial fix.  The types of fixes for this code
would push back release for weeks.  At that point I might as well implement
the right long-term change, planned for the next release, rather than a
one-off bandaid to resolve v2.3.

Alternatively, we could add a configuration parameter for the hardcoded
timeout value (there is already one for the cache size), document the
potential problem, and release JAMES v2.3.

I do not want to just remove the cache, which is one of Stefano's
suggestions.  The cache prevents JAMES from crashing when the message
arrival rate is higher than it can process.  Throwing OOMs and possibly
discarding messages in the process is not acceptable.

Recognize that part of the problem is the conflating of the RemoteDelivery
spool and the main pipeline spool, which have different requirements, since
the former applies scheduling on top of the spool.  Again, that's on the
roadmap to change, but wasn't planned for v2.3.

	--- Noel

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

View raw message