[jboss-dev] org.jboss.util.threadpool.BasicThreadPool issue
Anil Saldhana
Anil.Saldhana at redhat.com
Tue Sep 11 11:38:16 EDT 2007
Sorry to have pointed at you. Scott has a nice comment also:
-------
/**
* A basic thread pool.
* TODO: this port to jdk concurrent still needs to be tested.
*
* @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
* @author Scott.Stark at jboss.org
* @version $Revision$
*/
-------
A combination of head, tail, cat, vi were needed to see through the maze
of the logging - 900MB of server.log is not easy to deal with. :)
So should I make the fix to this class and do a snapshot release for
common-core? What should it be 2.2.2-SNAPSHOT?
Adrian wrote:
> I'm not making use of anything, Scott wrote this code. :-)
>
> The issue looks to be related to the conversion
> of the code from using Heap (which returns null when empty)
> to PriorityQueue.
> http://viewvc.jboss.org/cgi-bin/viewvc.cgi/common/common-core/trunk/src/main/java/org/jboss/util/threadpool/BasicThreadPool.java?view=diff&r1=2390&r2=2391
>
> Contrary to your comment, PriorityQueue throws an Exception
> when empty on the remove() as opposed to remove(Object):
> http://java.sun.com/j2se/1.5.0/docs/api/java/util/AbstractQueue.html#remove()
>
> A simple check for isEmpty() and return null
> (assuming the code is already thread safe) should stop the logging?
>
> On Tue, 2007-09-11 at 09:57 -0500, Anil Saldhana wrote:
>
>> Adrian,
>> with some progressive changes in my AS5 trunk workspace, while
>> running one of the tests in the test suite, the server log is filling up
>> with the following exception (it is reaching something like 800MB in log
>> size)
>> =================
>> 2007-09-11 09:40:10,843 DEBUG
>> [org.jboss.util.threadpool.BasicThreadPool] Timeou
>> t monitor saw unexpected error
>> java.util.NoSuchElementException
>> at java.util.AbstractQueue.remove(AbstractQueue.java:80)
>> at
>> org.jboss.util.threadpool.BasicThreadPool.getNextTimeout(BasicThreadPool.java:475)
>> at
>> org.jboss.util.threadpool.BasicThreadPool$TimeoutMonitor.run(BasicThreadPool.java:593)
>> at java.lang.Thread.run(Thread.java:595)
>>
>> =====================
>>
>> I am still checking why this issue is happening. But I see that you are
>> making use of a PriorityQueue and whose remove is supposed to be safe
>> from any exception.
>>
>> Regards,
>> Anil
>>
More information about the jboss-development
mailing list