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

Reply via email to