Hi Gary, IMHO the optimizations you're proposing are very important and since I like cooperating with you, I thought was better making aware about what I'd intend to do :P If you agree I could start committing the latest modifications, so you can apply your refactoring later. WDYT? Have a nice day, all the best, Simo
http://people.apache.org/~simonetripodi/ http://www.99soft.org/ On Mon, Dec 20, 2010 at 10:41 PM, Gary Gregory <ggreg...@seagullsoftware.com> wrote: > Don't worry about my stuff. I am in the middle of a move. > > Gary > > On Dec 20, 2010, at 12:20, "Simone Tripodi" <simone.trip...@gmail.com> wrote: > >> 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 >> > > --------------------------------------------------------------------- > 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