Hi all guys,
I spent the afternoon refactoring the config classes according to
informations collected on[1], have a ready commit.
Do you want to read the patch before I commit or I I can commit so
everybody can review and contribute to the modifications?
This could block the Gary's work on optimization, please let me know!
Thanks in advance,
Simo

[1] http://wiki.apache.org/commons/PoolRoadMap

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



On Sun, Dec 5, 2010 at 2:27 PM, Simone Tripodi <simone.trip...@gmail.com> wrote:
> Hi Gary/all :)
> I collected informations on the wiki on the RoadMap page[1], based on
> what we discussed in this thread.
> If you agree on what is written, we can start back coding.
> Have a nice weekend,
> Simo
>
> [1] http://wiki.apache.org/commons/PoolRoadMap
>
> http://people.apache.org/~simonetripodi/
> http://www.99soft.org/
>
>
>
> On Wed, Dec 1, 2010 at 3:21 PM, Gary Gregory
> <ggreg...@seagullsoftware.com> wrote:
>>> -----Original Message-----
>>> From: Simone Tripodi [mailto:simone.trip...@gmail.com]
>>> Sent: Wednesday, December 01, 2010 08:51
>>> To: Commons Developers List
>>> Subject: Re: [pool] Pool config vs. factory hierarchies.
>>>
>>> Hi Gary,
>>> yes, more people involved on defining these details is better, I
>>> agree. I'm thinking about creating a wiki page to resume all the
>>> requirements, what do you think?
>>
>> Good idea!
>>
>> Gary
>>
>>> Simo
>>>
>>> http://people.apache.org/~simonetripodi/
>>> http://www.99soft.org/
>>>
>>>
>>>
>>> On Wed, Dec 1, 2010 at 2:39 PM, Gary Gregory
>>> <ggreg...@seagullsoftware.com> wrote:
>>> > On Dec 1, 2010, at 2:01, "Simone Tripodi" <simone.trip...@gmail.com> 
>>> > wrote:
>>> >
>>> >> Hi Gary :)
>>> >> thanks for the feedback, IMHO once the Configuration for
>>> >> Generic(Keyed)ObjectPool(Factory) will be fixed, we could start
>>> >> thinking about a new release of the new pool. This evening/tonight (in
>>> >> my local time) I'll start re-arranging stuff, of course suggestions
>>> >> will be more than appreciated.
>>> >>
>>> >> About duplication: I agree with you, but after re-reading all the
>>> >> mails we wrote about it, I recently become convinced that
>>> >> Configuration for GKOB/GOB have different semantic even if some
>>> >> configuration property have same name/type, what's your opinion about
>>> >> it? Many thanks in advance!
>>> >>
>>> > Yes, semantics are different iirc and I'd confusing is that some props 
>>> > have
>>> the same name but mean different things for each pool type.
>>> >
>>> > I am not sure if it worth changing these method names (new method and
>>> deprecated old method) or just writing better javadocs. I would go with an
>>> experts opinion there.
>>> >
>>> > Gary
>>> >> Have a nice day,
>>> >> Simo
>>> >>
>>> >> http://people.apache.org/~simonetripodi/
>>> >> http://www.99soft.org/
>>> >>
>>> >>
>>> >>
>>> >> On Tue, Nov 30, 2010 at 11:02 PM, Gary Gregory
>>> >> <ggreg...@seagullsoftware.com> wrote:
>>> >>> Yes, I thought we were on a roll there! Lots of good discussions and
>>> then... quiet. That's OK though. We all get busy. Time to come back and
>>> reflect.
>>> >>>
>>> >>> I am still looking for these goals:
>>> >>> - Generics released ASAP. I would be OK for a earlier release just to 
>>> >>> get
>>> this out.
>>> >>> - Better names for properties and methods
>>> >>> - Refactor to remove duplication
>>> >>>
>>> >>> Gary
>>> >>>
>>> >>>> -----Original Message-----
>>> >>>> From: Simone Tripodi [mailto:simone.trip...@gmail.com]
>>> >>>> Sent: Tuesday, November 30, 2010 09:33
>>> >>>> To: Commons Developers List
>>> >>>> Subject: Re: [pool] Pool config vs. factory hierarchies.
>>> >>>>
>>> >>>> Hi all guys,
>>> >>>> sorry for resurrecting a zombie message, but I've been busy at work
>>> >>>> and haven't had the chance to contribute at all.
>>> >>>> I could re-start committing code according to the requirements
>>> >>>> described by Phil, If it works for you, so other tasks like
>>> >>>> JMX/autoconfigure can be unlocked, please let me know.
>>> >>>> Have a nice day,
>>> >>>> Simo
>>> >>>>
>>> >>>> http://people.apache.org/~simonetripodi/
>>> >>>> http://www.99soft.org/
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> On Wed, Nov 3, 2010 at 11:01 PM, Phil Steitz <phil.ste...@gmail.com>
>>> wrote:
>>> >>>>>
>>> >>>>>
>>> >>>>>
>>> >>>>>
>>> >>>>> On Nov 3, 2010, at 5:03 PM, Steven Siebert <smsi...@gmail.com> wrote:
>>> >>>>>
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>>> You restore the pool fields that used to hold the configuration
>>> setting
>>> >>>>>>> properties and leave the getters and setters (for the mutable ones) 
>>> >>>>>>> in
>>> >>>>>>> place.
>>> >>>>>>>
>>> >>>>>>> Phil
>>> >>>>>>>
>>> >>>>>>>
>>> >>>>>> so something like this?
>>> >>>>>>
>>> >>>>>> public class GOP extends .... {
>>> >>>>>>
>>> >>>>>>   /**
>>> >>>>>>    * ref to immutable config reference, immutable config values are
>>> either
>>> >>>>>> referred directly here
>>> >>>>>>    * or are copied to a final instance field
>>> >>>>>>   */
>>> >>>>>>   private GOPConfig config
>>> >>>>>
>>> >>>>> No.  There is no config member.  It is used only to encapsulate the
>>> >>>> parameters of the ctors.  The GOP class stores the config data in
>>> individual
>>> >>>> fields, accessed by getters and setters.  The setters at least are
>>> >>>> synchronized using the pool monitor. Look at the old code.  What I am
>>> >>>> proposing is that we limit the use and lifetime of the config objects 
>>> >>>> to
>>> the
>>> >>>> ctors and/or factories.
>>> >>>>>
>>> >>>>> Phil
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>   //mutable configuration values are mutated/accessed from pool
>>> instance
>>> >>>>>>   private volatile int mut1;  //probably better to use read/write 
>>> >>>>>> locks
>>> >>>>>>   private volatile int mut2;
>>> >>>>>>
>>> >>>>>>   public GOP (GOPConfig config) {
>>> >>>>>>      this.config = config;
>>> >>>>>>      reconfigure(config);
>>> >>>>>>   }
>>> >>>>>>
>>> >>>>>>   /**
>>> >>>>>>    * using this model, this method isn't really required (at least 
>>> >>>>>> not
>>> >>>>>> public)
>>> >>>>>>    * but would be a convenience for "batch"/atomic changes to
>>> configuration
>>> >>>>>> values -
>>> >>>>>>    * this is possible if we switch from volatile to a r/w locking
>>> mechanism
>>> >>>>>>   */
>>> >>>>>>   public void reconfigure (GOPConfig config) {
>>> >>>>>>        mut1 = config.getMut1;
>>> >>>>>>        mut2  = config.getMut2;
>>> >>>>>>   }
>>> >>>>>>
>>> >>>>>>   public void setMut1 (int m) {
>>> >>>>>>      mut1 = m;
>>> >>>>>>   }
>>> >>>>>>
>>> >>>>>>   public int getMut1 () {
>>> >>>>>>       return mut1;
>>> >>>>>>   }
>>> >>>>>>
>>> >>>>>>   ....
>>> >>>>>> }
>>> >>>>>>
>>> >>>>>> I wonder, with this model....what is the reason for having an 
>>> >>>>>> immutable
>>> >>>>>> configuration instance if we're going to copy the values locally for
>>> (at
>>> >>>>>> least) mutability purposes?  I believe the attraction of the 
>>> >>>>>> immutable
>>> >>>>>> configuration instance was for concurrency issues...but with this
>>> model, we
>>> >>>>>> would need to use pool-local syncronization (locking) anyway.
>>> >>>>>>
>>> >>>>>> I wrote a quick mock-up implementation like this, using a
>>> >>>>>> ReentrantReadWriteLock, and the amount of concurrency work in each
>>> >>>>>> pool/factory started to pile up.  We already identified that
>>> inheritance of
>>> >>>>>> the Pool/Factory classes might not be the best approach (I agree with
>>> this
>>> >>>>>> as well...which would cause POOL-177 to no longer be 
>>> >>>>>> implemented)...so
>>> this
>>> >>>>>> means duplication of synchronization code as well.
>>> >>>>>>
>>> >>>>>> I think I'm falling back to my initial thought on this in that the
>>> config
>>> >>>>>> classes should, IMO, either be mutable (where appropriate) and made
>>> thread
>>> >>>>>> safe (internally synchronized) to reduce the amount of concurrency 
>>> >>>>>> work
>>> >>>>>> needed in each class that aggregates the instance...or immutable and
>>> any
>>> >>>>>> changes to the config instance needs to be done by going back to the
>>> >>>> Builder
>>> >>>>>> (something like new Builder(configInstance).change().create());) and
>>> then
>>> >>>>>> the config reference in each pool/factory could be made volatile.
>>> >>>>>>
>>> >>>>>> I know this is confusing in email....I would be glad to create a 
>>> >>>>>> quick
>>> >>>> patch
>>> >>>>>> or UML for this to clear things up if this would help.
>>> >>>>>>
>>> >>>>>> Thoughts?
>>> >>>>>>
>>> >>>>>> S
>>> >>>>>
>>> >>>>> ---------------------------------------------------------------------
>>> >>>>> 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