I've been diagnosing the cause of
https://issues.apache.org/jira/browse/XMLRPC-168, and I'm rapidly coming
to the conclusion that the XML-RPC thread pool class
(org.apache.xmlrpc.util.ThreadPool) is fundamentally flawed. ThreadPool
uses a nonstatic member class (Poolable) that calls synchronized methods
on the enclosing class, and the enclosing class in turn calls
synchronized methods on the enclosed class. That's a recipe for deadlocks.
I'm tempted so suggest we should just rip it out entirely and replace it
with one of the thread pools from java.util.concurrent. However those
classes didn't appear until JDK 1.5, so we'd lose JDK 1.4 compatibility.
On the other hand, JDK 1.4 went EOSL in 2008 [1], so that *shouldn't*
be a problem.
Is anyone still using JDK 1.4?
[1] http://java.sun.com/products/archive/eol.policy.html
--
Alan Burlison
--