Re: Discontinuity between createThreadPool and SoftResourcePool

Peter Donald <[email protected]>
Newsgroups gmane.comp.jakarta.avalon.apps.devel,gmane.comp.jakarta.avalon.devel
Message-ID <[email protected]>
Works for me. Want to send a diff and/or add it into bugzilla.

On Mon, 9 Dec 2002 21:24, Noel J. Bergman wrote:
> Peter,
>
> Actually, I've contributed before by proxy.  And I did mention this some
> months ago, but be that as it may, here is the problem:
>
> org.apache.avalon.cornerstone.blocks.threads.DefaultThreadManager.configure
>T hreadPool:
>
> final DefaultThreadPool threadPool = new DefaultThreadPool(name,
> maxThreads, threadContext);
>
> --------
>
> org.apache.avalon.excalibur.thread.impl.DefaultThreadPool.DefaultThreadPool
>( String name, int capacity, ThreadContext context)
>
>         m_underlyingPool = new SoftResourceLimitingPool( this, capacity );
>
> --------
>
> excalibur.pool.SoftResourceLimitingPool.SoftResourceLimitingPool(ObjectFact
>o ry factory, int min)
>
>         this( factory, null, min, min * 2 );
>
> --------
>
> Note how maxThreads passed by configureThreadPool into DefaultThreadPool as
> the capacity became the min passed to SoftResourceLimitingPool.
>
> One problem is that DefaultThreadPool doesn't have a semantic for min.  The
> int value "capacity" could be interpreted as either a min capacity or a
> max, and obviously there was a disconnect at some point.  My own preference
> is that if you are going to discard something, discard my min, not my max.
>
> As for how you want to fix it, that's up to you.  One way:
>
>     public DefaultThreadPool( final String name,
>                               final int min, final int max,
>                               final ThreadContext context )
>         throws Exception
>     {
>         super( name );
>         m_underlyingPool = new SoftResourceLimitingPool( this, min, max );
>         m_pool = new BasicThreadPool( this, name, m_underlyingPool,
> context );
>     }
>
>     threadPool = new DefaultThreadPool(name, minThreads, maxThreads,
> threadContext);
>
> That's two quick changes.
>
> 	--- Noel
>
> -----Original Message-----
> From: Peter Donald [mailto:[email protected]]
> Sent: Monday, December 09, 2002 3:09
> To: Avalon Developers List
> Subject: Re: DO NOT REPLY [Bug 15060] - deadlock in ResourceLimitingPool
>
> On Mon, 9 Dec 2002 12:46, Noel J. Bergman wrote:
> > Peter,
> >
> > While you're working in the pooling code, do you think that you could fix
> > the pooling bug that causes the max to become the min, and the real max
> > to be twice the original?
> >
> > Trace the constructor calls.
>
> If you know what the problem is and where the problem is then it is a
> perfect
> opportunity for you to make your first contribution. Otherwise bugzilla it
> so
> it doesn't fall through the cracks.

-- 
Cheers,

Peter Donald
--------------------------------------------
 Beer is proof that God loves us and wants 
 us to be happy. -- Benjamin Franklin
--------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.