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

Reply via email to