Hi all mates,
I updated the jira issue uploading my patch; it contains the
configuration extraction and some code modification.
IMHO we shouldn't replicate the same data in both configuration AND
factory/pool, when creating the factory/pool it is enough storing the
configuration reference, just use it.
I intentionally missed the interfaces layer, since they can be added
directly in the JMX support in the required form.
Please take a look at the patch and provide feedbacks, if you agree I
could start committing the modifications and proceed on JMX support.
Have a nice day,
Simo

http://people.apache.org/~simonetripodi/
http://www.99soft.org/



On Fri, Oct 22, 2010 at 5:23 AM, Gary Gregory
<ggreg...@seagullsoftware.com> wrote:
>> -----Original Message-----
>> From: Steven Siebert [mailto:smsi...@gmail.com]
>> Sent: Thursday, October 21, 2010 18:08
>> To: Commons Developers List
>> Subject: Re: [pool] Reusing Config
>>
>> Gary,
>>
>> Great work so far.  I'm checking out the diffs now, I'm gonna hack out some
>> simple UML "diffs", if only to wrap my head around it all. I'll upload the
>> file to the issue once complete.
>>
>> BTW, I hope I didn't offend with the 'academic' comment, I
>> most certainly did not intend to infer that there weren't functional
>> importances to this issue.  I was mostly trying to delineate the two issues
>> in my mind, and putting it to "paper" was a good way to do that =)
>>
>> Cheers,
>>
>> S
>
> Hi Steven,
>
> No offense even considered from this end :)
>
> I'm glad we are going through this exercise. This will improve the software I 
> am sure.
>
> Gary
>
>>
>>
>> On Thu, Oct 21, 2010 at 3:35 PM, Gary Gregory
>> <ggreg...@seagullsoftware.com>wrote:
>>
>> > > -----Original Message-----
>> > > From: Phil Steitz [mailto:phil.ste...@gmail.com]
>> > > Sent: Thursday, October 21, 2010 06:29
>> > > To: Commons Developers List
>> > > Subject: Re: [pool] Reusing Config
>> > >
>> > > On 10/21/10, Simone Tripodi <simone.trip...@gmail.com> wrote:
>> > > > it seems you've been doing a very good work, the only thing I *suggest*
>> > is
>> > > >
>> > > > * simplifying the mutable/immutable interfaces, one interface for
>> > > > already known common (im)mutable fields should be enough;
>> > > > * adding/renaming the interfaces with the <PoolName>`MBean` postfix to
>> > > > be ready for JMX support;
>> > > >
>> > > > btw it seems you're now much more deep inside the topic than me ;)
>> > > >
>> > > > WDYT?
>> > > > Simo
>> > > >
>> > >
>> > > Sorry I have been a little slow on this.  I will have a careful look
>> > > this eve.  Based on a very quick review, I am +1 on the idea and
>> > > approach to separate mutable / immutable.  Also +1 for JMX support.
>> > > Two quick things to keep top of mind:
>> > >
>> > > 1.  Please make sure not to lose documentation.  Whatever is
>> > > documented today in protected field / internal getters / setters docs
>> > > needs to be carried forward.
>> >
>> > Check. I did not check as I refactored that Javadocs were in the right
>> > places. That would be a requirement for a real patch. I only meant this as
>> > an experiment that went a lot further than I thought.
>> >
>> > >
>> > > 2. Somewhat related - I am fine just plowing ahead for now using
>> > > existing API concepts, but some of those concepts are anachronistic or
>> > > broken, IMO, so we may later decide to revamp much of the "accounting"
>> > > aspects of the  API.  That we should and will discuss on other
>> > > threads.  One thing that might be good to think about at this point,
>> > > however, is getting rid of primitive properties (we started that with
>> > > whenExhaustedAction).  I think there is a DBCP issue on this raised by
>> > > Dain a couple of years ago.
>> >
>> > It would be nice to track this someplace, I am not sure if Javadoc is the
>> > right place.
>> >
>> > Gary
>> >
>> > >
>> > > Thanks all for moving this along!
>> > >
>> > > Phil
>> > > > http://people.apache.org/~simonetripodi/
>> > > > http://www.99soft.org/
>> > > >
>> > > >
>> > > >
>> > > > On Thu, Oct 21, 2010 at 8:23 AM, Gary Gregory
>> > > > <ggreg...@seagullsoftware.com> wrote:
>> > > >>> -----Original Message-----
>> > > >>> From: Simone Tripodi [mailto:simone.trip...@gmail.com]
>> > > >>> Sent: Wednesday, October 20, 2010 22:41
>> > > >>> To: Commons Developers List
>> > > >>> Subject: Re: [pool] Reusing Config
>> > > >>>
>> > > >>> Hi Gary!
>> > > >>> unfortunately the link replied with 404 code, can you give me please
>> > > >>> the issue ID?
>> > > >>
>> > > >> It's https://issues.apache.org/jira/browse/POOL-173
>> > > >>
>> > > >> I've updated the diff file a couple of times since my initial msg.
>> > > >>
>> > > >> Gary
>> > > >>
>> > > >>> Many thanks in advance, have a nice day!!!
>> > > >>> Simo
>> > > >>>
>> > > >>> http://people.apache.org/~simonetripodi/
>> > > >>> http://www.99soft.org/
>> > > >>>
>> > > >>>
>> > > >>>
>> > > >>> On Thu, Oct 21, 2010 at 12:16 AM, Gary Gregory
>> > > >>> <ggreg...@seagullsoftware.com> wrote:
>> > > >>> > Hi Simone,
>> > > >>> >
>> > > >>> > Please see my experiment in progress here
>> > > >>>
>> > https://issues.apache.org/jira/secure/attachment/12457710/pool2config.diff
>> > > >>> >
>> > > >>> > Gary Gregory
>> > > >>> > Senior Software Engineer
>> > > >>> > Rocket Software
>> > > >>> > 3340 Peachtree Road, Suite 820 * Atlanta, GA 30326 * USA
>> > > >>> > Tel: +1.404.760.1560
>> > > >>> > Email: ggreg...@seagullsoftware.com
>> > > >>> > Web: seagull.rocketsoftware.com
>> > > >>> >
>> > > >>> >
>> > > >>> >
>> > > >>> >> -----Original Message-----
>> > > >>> >> From: Simone Tripodi [mailto:simone.trip...@gmail.com]
>> > > >>> >> Sent: Wednesday, October 20, 2010 14:53
>> > > >>> >> To: Commons Developers List
>> > > >>> >> Subject: Re: [pool] Reusing Config
>> > > >>> >>
>> > > >>> >> Hi,
>> > > >>> >> sorry for not having been clear, but in my previous email my
>> > intent
>> > > >>> >> was saying that depending on how we manage the Config class, it
>> > could
>> > > >>> >> influence de JMX support design, nothing more, and since I'm not
>> > > >>> >> expert on JMX I was waiting for feedbacks from who knows more than
>> > me
>> > > >>> >>
>> > > >>> >> About Gary's question, I had the following thought
>> > > >>> >>
>> > > >>> >> AbstractGenericObjectPoolConfig
>> > > >>> >> - int maxIdle
>> > > >>> >> - int minIdle
>> > > >>> >> - int maxActive
>> > > >>> >> - long maxWait
>> > > >>> >> - WhenExhaustedAction whenExhaustedAction
>> > > >>> >> - boolean testOnBorrow
>> > > >>> >> - boolean testOnReturn
>> > > >>> >> - boolean testWhileIdle
>> > > >>> >> - long timeBetweenEvictionRunsMillis
>> > > >>> >> - int numTestsPerEvictionRun
>> > > >>> >> - long minEvictableIdleTimeMillis
>> > > >>> >> - boolean lifo
>> > > >>> >>
>> > > >>> >> GenericObjectPoolConfig extends AbstractGenericObjectPoolConfig
>> > > >>> >> - long softMinEvictableIdleTimeMillis
>> > > >>> >>
>> > > >>> >> GenericKeyedObjectPoolConfig extends GenericObjectPoolConfig
>> > > >>> >> - int maxTotal
>> > > >>> >>
>> > > >>> >> About the pools:
>> > > >>> >>
>> > > >>> >> class GenericObjectPool {
>> > > >>> >>   + GenericObjectPool(GenericObjectPoolFactory factory) {
>> > > >>> >>       this(factory, new GenericObjectPoolConfig());
>> > > >>> >>   }
>> > > >>> >>
>> > > >>> >>   + GenericObjectPool(GenericObjectPoolFactory factory,
>> > > >>> >> GenericObjectPoolConfig config) {...}
>> > > >>> >>
>> > > >>> >>   + GenericObjectPoolConfig getConfig() {...}
>> > > >>> >> }
>> > > >>> >>
>> > > >>> >> same thing for the Keyed version.
>> > > >>> >>
>> > > >>> >> Too simple and stupid? Maybe. But reduces the redundancies to 0.
>> > > >>> >> Moreover I'm not sure it is just an academical way to approach the
>> > > >>> >> issue, I'm sure it is more than pragmatic, simplifying the
>> > > >>> >> maintainability and makes easier keep in synch the Pool and
>> > related
>> > > >>> >> Factory configuration.
>> > > >>> >> Just my 2 cents, now off to bed due my local timezone :P
>> > > >>> >> Simo
>> > > >>> >>
>> > > >>> >> http://people.apache.org/~simonetripodi/
>> > > >>> >> http://www.99soft.org/
>> > > >>> >>
>> > > >>> >>
>> > > >>> >>
>> > > >>> >> On Wed, Oct 20, 2010 at 10:40 PM, Gary Gregory
>> > > >>> >> <ggreg...@seagullsoftware.com> wrote:
>> > > >>> >> > So I am doing an experimental refactoring to see what the code
>> > would
>> > > >>> >> > look
>> > > >>> >> like with a Config class extracted and I ran into the following.
>> > > >>> >> >
>> > > >>> >> > The class GenericObjectPool has an
>> > _softMinEvictableIdleTimeMillis
>> > > >>> >> > ivar
>> > > >>> but
>> > > >>> >> the equivalent GenericKeyedObjectPool does not.
>> > > >>> >> >
>> > > >>> >> > Is that a little hole in implementation that could have been
>> > avoided
>> > > >>> >> > with
>> > > >>> a
>> > > >>> >> common classes used for config? Even if GenericKeyedObjectPool
>> > would
>> > > >>> >> throw
>> > > >>> a
>> > > >>> >> "not implemented" exception.
>> > > >>> >> >
>> > > >>> >> > Thoughts?
>> > > >>> >> >
>> > > >>> >> > Gary Gregory
>> > > >>> >> > Senior Software Engineer
>> > > >>> >> > Rocket Software
>> > > >>> >> > 3340 Peachtree Road, Suite 820 * Atlanta, GA 30326 * USA
>> > > >>> >> > Tel: +1.404.760.1560
>> > > >>> >> > Email: ggreg...@seagullsoftware.com
>> > > >>> >> > Web: seagull.rocketsoftware.com
>> > > >>> >> >
>> > > >>> >> >
>> > > >>> >> >
>> > > >>> >> >> -----Original Message-----
>> > > >>> >> >> From: Simone Tripodi [mailto:simone.trip...@gmail.com]
>> > > >>> >> >> Sent: Wednesday, October 20, 2010 12:22
>> > > >>> >> >> To: Commons Developers List
>> > > >>> >> >> Subject: Re: [pool] Reusing Config
>> > > >>> >> >>
>> > > >>> >> >> sure, I always wait for feedbacks before coding :P Cool
>> > expression
>> > > >>> >> >> "Rambo through the code", that was the first time I read it and
>> > > >>> >> >> made
>> > > >>> >> >> me laugh :D
>> > > >>> >> >> All the best,
>> > > >>> >> >> Simo
>> > > >>> >> >>
>> > > >>> >> >> http://people.apache.org/~simonetripodi/
>> > > >>> >> >> http://www.99soft.org/
>> > > >>> >> >>
>> > > >>> >> >>
>> > > >>> >> >>
>> > > >>> >> >> On Wed, Oct 20, 2010 at 9:17 PM, Gary Gregory
>> > > >>> >> >> <ggreg...@seagullsoftware.com> wrote:
>> > > >>> >> >> > It seems to me there is a reason the code is the way it is so
>> > I'd
>> > > >>> really
>> > > >>> >> >> like to hear thoughts from some of the original authors before
>> > we
>> > > >>> >> >> go and
>> > > >>> >> Rambo
>> > > >>> >> >> through the code ;)
>> > > >>> >> >> >
>> > > >>> >> >> > Gary
>> > > >>> >> >> >
>> > > >>> >> >> > On Oct 20, 2010, at 12:13, "Simone Tripodi"
>> > > >>> >> >> > <simone.trip...@gmail.com>
>> > > >>> >> >> wrote:
>> > > >>> >> >> >
>> > > >>> >> >> >> Hi Gary,
>> > > >>> >> >> >> yes that's me that raised the question[1] and discussed a
>> > little
>> > > >>> >> >> >> with
>> > > >>> >> >> >> Seb. What blocked me was the JMX support proposal since I'm
>> > not
>> > > >>> >> >> >> familiar with that technology, so I was consulting
>> > documentation
>> > > >>> >> >> >> to
>> > > >>> >> >> >> study.
>> > > >>> >> >> >>
>> > > >>> >> >> >> My very big +1 for that, with the wish of work directly on
>> > that
>> > > >>> stuff.
>> > > >>> >> >> >> Anyone else has a different thought, before proceeding?
>> > > >>> >> >> >> Thanks in advance,
>> > > >>> >> >> >> Simo
>> > > >>> >> >> >>
>> > > >>> >> >> >> [1] http://markmail.org/message/q4y7ghux57s7hk6v
>> > > >>> >> >> >>
>> > > >>> >> >> >> http://people.apache.org/~simonetripodi/
>> > > >>> >> >> >> http://www.99soft.org/
>> > > >>> >> >> >>
>> > > >>> >> >> >>
>> > > >>> >> >> >>
>> > > >>> >> >> >> On Wed, Oct 20, 2010 at 7:43 PM, Gary Gregory
>> > > >>> >> >> >> <ggreg...@seagullsoftware.com> wrote:
>> > > >>> >> >> >>> In the same department, I see the following ivars:
>> > > >>> >> >> >>>
>> > > >>> >> >> >>> lifo : boolean
>> > > >>> >> >> >>> maxActive : int
>> > > >>> >> >> >>> maxIdle : int
>> > > >>> >> >> >>> maxTotal : int
>> > > >>> >> >> >>> maxWait : long
>> > > >>> >> >> >>> minEvictableIdleTimeMillis : long
>> > > >>> >> >> >>> minIdle : int
>> > > >>> >> >> >>> numTestsPerEvictionRun : int
>> > > >>> >> >> >>> testOnBorrow : boolean
>> > > >>> >> >> >>> testOnReturn : boolean
>> > > >>> >> >> >>> testWhileIdle : boolean
>> > > >>> >> >> >>> timeBetweenEvictionRunsMillis : long
>> > > >>> >> >> >>> whenExhaustedAction : WhenExhaustedAction
>> > > >>> >> >> >>>
>> > > >>> >> >> >>> defined in four classes:
>> > > >>> >> >> >>>
>> > > >>> >> >> >>> GenericKeyedObjectPool
>> > > >>> >> >> >>> GenericKeyedObjectPoolFactory
>> > > >>> >> >> >>> GenericObjectPool
>> > > >>> >> >> >>> GenericObjectPoolFactory
>> > > >>> >> >> >>>
>> > > >>> >> >> >>> Which feels to me like a missed opportunity to avoid
>> > > >>> >> >> >>> duplication.
>> > > >>> >> >> >>>
>> > > >>> >> >> >>> Is making one ivar private or final or volatile be applied
>> > to
>> > > >>> >> >> >>> all
>> > > >>> four
>> > > >>> >> >> classes?
>> > > >>> >> >> >>>
>> > > >>> >> >> >>> We could:
>> > > >>> >> >> >>>
>> > > >>> >> >> >>> Use a config object instead of the 13 ivars.
>> > > >>> >> >> >>> Or a common superclass then we can consider if it should
>> > hold
>> > > >>> >> >> >>> the
>> > > >>> ivar
>> > > >>> >> >> list or a Config object.
>> > > >>> >> >> >>>
>> > > >>> >> >> >>> Would it be too weird to have a common super class for
>> > > >>> BaseObjectPool
>> > > >>> >> and
>> > > >>> >> >> BasePoolableObjectFactory for example?
>> > > >>> >> >> >>>
>> > > >>> >> >> >>> Gary Gregory
>> > > >>> >> >> >>> Senior Software Engineer
>> > > >>> >> >> >>> Rocket Software
>> > > >>> >> >> >>> 3340 Peachtree Road, Suite 820 . Atlanta, GA 30326 . USA
>> > > >>> >> >> >>> Tel: +1.404.760.1560
>> > > >>> >> >> >>> Email: ggreg...@seagullsoftware.com
>> > > >>> >> >> >>> Web: seagull.rocketsoftware.com
>> > > >>> >> >> >>>
>> > > >>> >> >> >>>
>> > > >>> >> >> >>>
>> > > >>> >> >> >>>> -----Original Message-----
>> > > >>> >> >> >>>> From: Gary Gregory [mailto:ggreg...@seagullsoftware.com]
>> > > >>> >> >> >>>> Sent: Wednesday, October 20, 2010 10:29
>> > > >>> >> >> >>>> To: Commons Developers List
>> > > >>> >> >> >>>> Subject: [pool] Reusing Config
>> > > >>> >> >> >>>>
>> > > >>> >> >> >>>> Hi All:
>> > > >>> >> >> >>>>
>> > > >>> >> >> >>>> I think this came up recently. Any thoughts or plans on
>> > > >>> >> >> >>>> extracting
>> > > >>> the
>> > > >>> >> >> Config
>> > > >>> >> >> >>>> class out of GenericKeyedObjectPool and GenericObjectPool
>> > so
>> > > >>> >> >> >>>> it can
>> > > >>> be
>> > > >>> >> >> reused.
>> > > >>> >> >> >>>> The constants for default values could then also be moved
>> > to
>> > > >>> Config.
>> > > >>> >> >> >>>> Gary Gregory
>> > > >>> >> >> >>>> Senior Software Engineer
>> > > >>> >> >> >>>> Rocket Software
>> > > >>> >> >> >>>> 3340 Peachtree Road, Suite 820 * Atlanta, GA 30326 * USA
>> > > >>> >> >> >>>> Tel: +1.404.760.1560
>> > > >>> >> >> >>>> Email:
>> > > >>> >> ggreg...@seagullsoftware.com<mailto:ggreg...@seagullsoftware.com>
>> > > >>> >> >> >>>> Web:
>> > > >>> >> seagull.rocketsoftware.com<http://www.seagull.rocketsoftware.com/
>> > >
>> > > >>> >> >> >>>>
>> > > >>> >> >> >>>
>> > > >>> >> >> >>>
>> > > >>> >> >> >>>
>> > ----------------------------------------------------------------
>> > > ----
>> > > >>> -
>> > > >>> >> >> >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > > >>> >> >> >>> For additional commands, e-mail:
>> > dev-h...@commons.apache.org
>> > > >>> >> >> >>>
>> > > >>> >> >> >>>
>> > > >>> >> >> >>
>> > > >>> >> >> >>
>> > -----------------------------------------------------------------
>> > > ----
>> > > >>> >> >> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > > >>> >> >> >> For additional commands, e-mail:
>> > dev-h...@commons.apache.org
>> > > >>> >> >> >>
>> > > >>> >> >> >
>> > > >>> >> >> >
>> > ------------------------------------------------------------------
>> > > ---
>> > > >>> >> >> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > > >>> >> >> > For additional commands, e-mail: dev-h...@commons.apache.org
>> > > >>> >> >> >
>> > > >>> >> >> >
>> > > >>> >> >>
>> > > >>> >> >>
>> > --------------------------------------------------------------------
>> > > -
>> > > >>> >> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > > >>> >> >> For additional commands, e-mail: dev-h...@commons.apache.org
>> > > >>> >> >
>> > > >>> >> >
>> > > >>> >>
>> > > >>> >>
>> > ---------------------------------------------------------------------
>> > > >>> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > > >>> >> For additional commands, e-mail: dev-h...@commons.apache.org
>> > > >>> >
>> > > >>> >
>> > > >>>
>> > > >>> ---------------------------------------------------------------------
>> > > >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > > >>> For additional commands, e-mail: dev-h...@commons.apache.org
>> > > >>
>> > > >>
>> > > >
>> > > > ---------------------------------------------------------------------
>> > > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > > > For additional commands, e-mail: dev-h...@commons.apache.org
>> > > >
>> > > >
>> > >
>> > > ---------------------------------------------------------------------
>> > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > > For additional commands, e-mail: dev-h...@commons.apache.org
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > For additional commands, e-mail: dev-h...@commons.apache.org
>> >
>> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to