OK. Got it. We can reason out loading meta data of all the features to the memory for computing the dependency tree. But I don't think that needs feature artifacts to be loaded into memory too. I guess how it works is, first it hash all features in memory and then create dependency tree for the user selected features efficiently f > > Yes Chethiya p2 computes the dependencies before installing features. It > is called a provisioning plan. > > But Rajika's concern is that it's taking a long time at repository adding > stage, which should not be performing any dependency computations. But I > suspect p2 might be loading all the features in the repo to memory at this > stage. Have to clarify with p2-dev. > > Thanks, > Dileepa > > On Mon, Sep 10, 2012 at 5:47 PM, Chethiya Abeysinghe <[email protected]>wrote: > >> AFAIK, installing a p2 feature means not just copying set of files. It >> computes required dependency trees too. Looking at the content.xml I think >> it can take sometime for computation. But always better to check with >> p2-dev as there can be cases which can be configured to >> avoid unnecessary dependency checks. >> >> - Chethiya >> >> On Mon, Sep 10, 2012 at 4:37 PM, Dileepa Jayakody <[email protected]>wrote: >> >>> Hi Rajika, >>> >>> Thanks for the pointers. >>> In the feature-manager we are using p2 sdk, calling the p2-api under the >>> hood. >>> >>> For eg: to add and load a repository following code is used by us. >>> >>> IMetadataRepositoryManager metadataRepositoryManager = >>> ServiceHolder.getMetadataRepositoryManager(); >>> IArtifactRepositoryManager artifactRepositoryManager = >>> ServiceHolder.getArtifactRepositoryManager(); >>> >>> //adding metadata and artifact repositories >>> metadataRepositoryManager.addRepository(location); >>> artifactRepositoryManager.addRepository(location); >>> //Loading the metadata repository >>> metadataRepositoryManager.loadRepository(location, new >>> NullProgressMonitor()); >>> metadataRepositoryManager.setRepositoryProperty(location, >>> IRepository.PROP_NICKNAME, nickName); >>> >>> //Loading the artifact repository >>> artifactRepositoryManager.loadRepository(location, new >>> NullProgressMonitor()); >>> artifactRepositoryManager.setRepositoryProperty(location, >>> IRepository.PROP_NICKNAME, nickName); >>> >>> First we need to clarify how p2-works under the hood when loading a >>> repository from a given location. >>> Ideally it should just index the feature list by reading the the >>> repository's content.xml and artifacts.xml at this point without loading >>> all the features to the memory ( I believe this is what you are also >>> suggesting). >>> I will discuss this with p2-dev also and see how we can improve our >>> feature manager based on that. >>> >>> Thanks, >>> Dileepa >>> >>> >>> On Mon, Sep 10, 2012 at 4:12 PM, Rajika Kumarasiri <[email protected]>wrote: >>> >>>> I meant the consumer task should do the feature installation >>>> asynchronously. >>>> >>>> Rajika >>>> >>>> >>>> On Mon, Sep 10, 2012 at 3:54 PM, Rajika Kumarasiri <[email protected]>wrote: >>>> >>>>> If you have not done already, here how it should be done. >>>>> >>>>> There should be an instance of blocking queue instance which keeps >>>>> track of requested features to install. There should be a producer task >>>>> which drop next requested feature list to install into the blocking queue. >>>>> There should be a consumer task will remove items from the blocking queue. >>>>> For producing and consuming use >>>>> http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html#put<http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html#put%28E%29> >>>>> and >>>>> http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html#take() >>>>> so >>>>> that your consumer and producer task will not kill the CPU. >>>>> >>>>> Since Feature manager will not use frequently this model may not make >>>>> sense much, but I think it will be useful when our p2 feature repository >>>>> starts to grow. >>>>> >>>>> Hope this helps. >>>>> >>>>> Rajika >>>>> >>>>> On Mon, Sep 10, 2012 at 2:47 PM, Dileepa Jayakody <[email protected]>wrote: >>>>> >>>>>> Hi Rajika, >>>>>> >>>>>> Is the repository you are adding a local-repository or a remote >>>>>> repository? >>>>>> >>>>>> Thanks, >>>>>> Dileepa >>>>>> >>>>>> On Mon, Sep 10, 2012 at 2:44 PM, Rajika Kumarasiri >>>>>> <[email protected]>wrote: >>>>>> >>>>>>> I just tried to add the feature repository of 4.0.1 into a AS (built >>>>>>> from 4.0.1 branch) and it seems it just take too much time. >>>>>>> >>>>>>> I still can see the message "Adding repository.." and it just there. >>>>>>> >>>>>>> This need to improve. We just need to load the list features (just >>>>>>> names) and install any selected features asynchronously. >>>>>>> >>>>>>> It seems this loads the whole features into memory. >>>>>>> >>>>>>> Rajika >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Dev mailing list >>>>>>> [email protected] >>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Dileepa Jayakody, >>>>>> Software Engineer, WSO2 Inc. >>>>>> Lean . Enterprise . Middleware >>>>>> >>>>>> Mobile : +94777-857616 >>>>>> >>>>>> >>>>> >>>> >>> >>> >>> -- >>> Dileepa Jayakody, >>> Software Engineer, WSO2 Inc. >>> Lean . Enterprise . Middleware >>> >>> Mobile : +94777-857616 >>> >>> >>> _______________________________________________ >>> Dev mailing list >>> [email protected] >>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>> >>> >> >> >> -- >> Chethiya Abeysinghe >> Software Engineer; WSO2, Inc.; http://wso2.com/ >> email: [email protected] phone: +94 777444891 >> blog: chethiya3000.blogspot.com >> >> >> > > > -- > Dileepa Jayakody, > Software Engineer, WSO2 Inc. > Lean . Enterprise . Middleware > > Mobile : +94777-857616 > >
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
