Hi Kasun and All,

Let me raise a different, but fundamental concern to this issue. Please
correct me if I am wrong.

It's perfectly valid to have the same feature on different run-times (or
profiles) of a product, but if that same feature appears in "different
versions",
meaning, with slight or major differences of their implementations, at
different run-times of the product, wouldn't that open up any possibilities
of functional inconsistencies or even failures to the overall system ?

Thanks,
Dilan.

*Dilan U. Ariyaratne*
Senior Software Engineer
WSO2 Inc. <http://wso2.com/>
Mobile: +94766405580 <%2B94766405580>
lean . enterprise . middleware


On Thu, Aug 17, 2017 at 8:19 PM, Kasun Siyambalapitiya <[email protected]>
wrote:

> Hi Niranjan,
>
> When generating the p2-repository using `carbon-maven-plugin version 3.x`
> this issue arises due to the fact that it resolves dependencies for each
> given feature with the dependencies we defined in the pom itself (note that
> the effective pom is used for the resolving). Since maven picks only one
> version of a given dependency due the use of `nearest in the dependency
> tree` strategy, a p2-repo with multiple versions of the same feature can
> not be created by using the current `carbon-maven-plugin version 3.1.3`.
>
> But in the case of `carbon-maven-plugin version 1.5.x` this is possible as
> the dependencies of each feature is defined in a string form as below
>
> org.apache.axis2.transport:org.apache.axis2.transport.jms.feature:${axis2-
>> transports.wso2.version.1.1.0.wso2v17}
>
>
> and the version `${axis2-transports.wso2.version.1.1.0.wso2v17}` is
> replaced with the value of the relevant property we defined in the pom.xml.
> Since there are no restrictions like above in defining properties in
> pom.xml this works.
>
> Thanks.
>
> On Thu, Aug 17, 2017 at 10:39 AM, Niranjan Karunanandham <
> [email protected]> wrote:
>
>> Hi Kasun,
>>
>> On Thu, Aug 17, 2017 at 10:04 AM, Kasun Siyambalapitiya <[email protected]
>> > wrote:
>>
>>> Hi Niranjan,
>>>
>>> The build fails before successful generation of the p2-repo by giving
>>> the following error
>>>
>>> [ERROR] Failed to execute goal org.wso2.carbon.maven:carbon-f
>>>> eature-plugin:3.1.1:generate-repo (p2-repo-generation) on project
>>>> wso2carbon-kernel: Feature org.wso2.carbon.pax.exam.feature_5.2.0.1
>>>> not found -> [Help 1]
>>>
>>>
>>>
>>> Since in the new C5 model the p2-repo containing all the features
>>> required for all the runtimes of the product, is generated at a single
>>> specified directory(by default the target directory) multiple version of
>>> the same feature cannot be generated as maven build will pick only one
>>> version of the dependency due to the use of "nearest in the dependency
>>> tree" strategy as shown in above mail. As a result although we can have
>>> multiple versions at the p2-repo per feature due to the above nature of
>>> maven, runtimes with different feature versions cannot be created in C5.
>>> This problem was not there in the previous C4 model as the profiles(runtime
>>> in C5 wording) were generated at separate locations and their respective
>>> p2-repos were created at their own locations(where the profile is created)
>>> [1]
>>>
>>> IMO this issue can be avoided by always using the newest feature version
>>> available when creating runtimes in C5 products. WDYT?
>>>
>> The profiles that were used in C4 were used to install features, but only
>> one p2-repo is created. In the case of EI, they have created separate
>> modules (folders for each profile) and then they are handling it. In the
>> case of AS 5.3.0, we had a single pom to create a distribution with
>> multiple profiles. Wilkes p2-repo is generated using the
>> carbon-feature-repository [1], here in the pom, the p2-repo is generated
>> with different versions of the same feature. Similarly for C5, it should
>> follow the same. We need to look into the carbon-maven-plugins version
>> 1.5.x [2] and 3.x [3].
>>
>>
>>>
>>> [1] https://github.com/wso2/product-ei/tree/v6.2.0-m2/p2-profile
>>>
>>> On Wed, Aug 16, 2017 at 3:51 PM, Niranjan Karunanandham <
>>> [email protected]> wrote:
>>>
>>>> Hi Kasun,
>>>>
>>>> On Wed, Aug 16, 2017 at 3:30 PM, Kasun Siyambalapitiya <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> When I was creating a custom product using carbon-kernel version
>>>>> 5.2.0-alpha[1] the following issue aroused.
>>>>> In a scenario where a product is build with 2 runtimes called runtimeA
>>>>> and runtimeB.
>>>>>
>>>>> runtimeA contains the below feature among it's other features
>>>>>
>>>>> pax.exam.feature v5.2.0.0
>>>>> sample-bundle2 v5.2.0.0
>>>>> log-bundle v1.5.0
>>>>>
>>>>>
>>>>> while runtmeB contains the below feature among it's other features
>>>>>
>>>>> sample.feature v5.2.0.1
>>>>> sample-bundle1 v5.2.0.0
>>>>> monitor-bundle v1.5.0
>>>>> pax.exam.feature v5.2.0.1
>>>>>
>>>>>
>>>>>
>>>>> As shown above since there is a dependency to the
>>>>> `pax.exam.feature,v5.2.0.1` from the `sample.feature,v5.2.0.1`, to have
>>>>> both versions of `pax.exam.feature` to be installed into the separate
>>>>> runtimes of the product, it is required to define dependency information 
>>>>> of
>>>>> each `pax.exam.feature` versions (v5.2.0.0 and v5.2.0.1) under the
>>>>> <dependencies> tag in the pom.xml file.
>>>>>
>>>>> But during the build process, maven will only pick one version of that
>>>>> dependency and omit the other versions to avoid any conflicts using the 
>>>>> *"nearest
>>>>> in the dependency tree"* strategy (already asked in stackoverflow
>>>>> [1]). This will results in a build failure as if the build process 
>>>>> resolves
>>>>> dependency of `pax.exam.feature` v5.2.0.0`, the version v5.2.0.1 will not
>>>>> be available during build and vice versa.
>>>>>
>>>>> Is this a legitimate case that we should address?
>>>>> IMO it will be a best practise to use the newest versions of the
>>>>> features available when creating runtimes than using the older versions
>>>>> which in turn will resolve this issue.
>>>>>
>>>>> Your comments are highly appreciated.
>>>>>
>>>>
>>>> As per the offline discussion, this issue is for generating the
>>>> p2-repo. You will need to check whether both versions of the feature are
>>>> there in the p2-repo that is being generated. If it does not exist then we
>>>> would need to fix it there.
>>>>
>>>>
>>>>>
>>>>> [1] https://github.com/wso2/carbon-kernel/tree/v5.2.0-alpha
>>>>> [2] https://stackoverflow.com/questions/24962607/multiple-ve
>>>>> rsions-of-the-same-dependency-in-maven
>>>>>
>>>>> Thanks
>>>>>
>>>>> --
>>>>> *Regards,*
>>>>>
>>>>> *Kasun Siyambalapitiya*
>>>>> *Software Engineer*
>>>>> WSO2 Inc. - http://wso2.com/
>>>>> lean . enterprise . middleware
>>>>> Tel : 0715523466
>>>>> E mail : [email protected]
>>>>> Blog: https://medium.com/@kasunsiyambalapitiya
>>>>> <https://wso2.com/signature>
>>>>>
>>>>
>>>> Regards,
>>>> Nira
>>>>
>>>> --
>>>>
>>>>
>>>> *Niranjan Karunanandham*
>>>> Associate Technical Lead - WSO2 Inc.
>>>> WSO2 Inc.: http://www.wso2.com
>>>>
>>>>
>>>
>>>
>>> --
>>> *Regards,*
>>>
>>> *Kasun Siyambalapitiya*
>>> *Software Engineer*
>>> WSO2 Inc. - http://wso2.com/
>>> lean . enterprise . middleware
>>> Tel : 0715523466
>>> E mail : [email protected]
>>> Blog: https://medium.com/@kasunsiyambalapitiya
>>> <https://wso2.com/signature>
>>>
>>
>> [1] - https://github.com/wso2/carbon-feature-repository
>> [2] - https://github.com/wso2/carbon-maven-plugins/tree/1.5.x
>> [3] - https://github.com/wso2/carbon-maven-plugins
>>
>> Regards,
>> Nira
>>
>> --
>>
>>
>> *Niranjan Karunanandham*
>> Associate Technical Lead - WSO2 Inc.
>> WSO2 Inc.: http://www.wso2.com
>>
>>
>
>
> --
> *Regards,*
>
> *Kasun Siyambalapitiya*
> *Software Engineer*
> WSO2 Inc. - http://wso2.com/
> lean . enterprise . middleware
> Tel : 0715523466
> E mail : [email protected]
> Blog: https://medium.com/@kasunsiyambalapitiya
> <https://wso2.com/signature>
>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to