Hi Alex The resolver always take the latest release candidates. It was always like this. If you use open version range it will take the latest one.
For instance, as reminder, foo/bar/1.0 doesn’t mean only 1.0 but actually [1.0,), so it will take the latest version. It’s also the case for the features repository. So if you don’t want the latest version you have to use [version,version] or blacklist in etc/org.Apache.Karaf.features.xml. Regards JB > Le 18 mai 2021 à 20:18, Alex Soto <[email protected]> a écrit : > > > Hi JB, > > I wonder how to tie the versions, apparently something changed in the > resolver, where it is now picking up the latest released version of various > artifacts, originally it was for wrap but I am now seeing it for others. > Funny thing is, it was working before, but after version 4.3.2 was released, > now it is failing. > > For example, now I am seeing it happening with the Framework. Example: > > > Unable to resolve framework/4.3.1: missing requirement [framework/4.3.1] > osgi.identity; osgi.identity=org.apache.karaf.features.extension; > type=osgi.fragment; version="[4.3.1,4.3.1]"; resolution:=mandatory [caused > by: Fragment was not selected for attachment: > org.apache.karaf.features.extension [1](R 1.0)] > at > org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) > ... 12 more > Caused by: org.apache.felix.resolver.reason.ReasonException: Fragment was not > selected for attachment: org.apache.karaf.features.extension [1](R 1.0) > at > org.apache.felix.resolver.Candidates$FragmentNotSelectedError.toException(Candidates.java:1305) > ... 13 more > > > This is in the context of Custom Karaf distributions. I see multiple > versions being put in the system directory: > > $ ls -l system/org/apache/karaf/features/org.apache.karaf.features.extension > total 0 > drwxr-xr-x. 2 vagrant vagrant 59 May 18 18:04 4.3.1 > drwxr-xr-x. 2 vagrant vagrant 59 May 18 18:04 4.3.2 > > So it is pulling version 4.3.2, but I am only referencing 4.3.1 in my Maven > POM: > > <dependencies> > <dependency> > <groupId>org.apache.karaf.features</groupId> > <artifactId>framework</artifactId> > <version>4.3.1</version> > <type>kar</type> > <scope>provided</scope> > </dependency> > <dependency> > <groupId>org.apache.karaf.features</groupId> > <artifactId>standard</artifactId> > <version>4.3.1</version> > <type>xml</type> > <classifier>features</classifier> > <scope>provided</scope> > </dependency> > </dependencies> > > > Even though I am specifying the versions, the karaf-maven-plugin is still > pulling the newest. So, the question is, how to control the versions I want, > and not be surprised by a future Karaf release? > > Best regards, > Alex soto > > > > >> On May 6, 2021, at 11:56 PM, Jean-Baptiste Onofre <[email protected]> wrote: >> >> Hi Alex, >> >> Yes, the version is not correct. I would check your feature / pom.xml, maybe >> you don’t have version defined, so it takes the latest one. >> >> Regards >> JB >> >>> Le 6 mai 2021 à 18:56, Alex Soto <[email protected]> a écrit : >>> >>> >>> I see… >>> >>> Karaf is looking for wrap version 2.6.7, but the version the framework >>> feature brings is version is 2.6.2, so it does not find it. >>> However, I don’t know who is pulling version 2.6.7. Will search for that... >>> >>> Best regards, >>> Alex soto >>> >>> >>> >>> >>>> On May 6, 2021, at 10:15 AM, Alex Soto <[email protected]> wrote: >>>> >>>> Thanks, JB, >>>> >>>> but I don’t understand. When I inspect my >>>> /etc/org.apache.karaf.features.cfg file: >>>> >>>> # >>>> # Comma separated list of features repositories to register by default >>>> # >>>> featuresRepositories = \ >>>> mvn:org.apache.karaf.features/standard/4.3.0/xml/features, \ >>>> mvn:org.apache.karaf.features/framework/4.3.0/xml/features, ... >>>> >>>> # >>>> # Comma separated list of features to install at startup >>>> # >>>> featuresBoot = \ >>>> (wrap), \ >>>> package/4.3.1, \ >>>> log/4.3.1, \ >>>> ssh/4.3.1, \ >>>> framework/4.3.0, \ >>>> system/4.3.1, \ >>>> ... >>>> >>>> >>>> >>>> The framework feature is there. >>>> >>>> Also there is the jar: >>>> /system/org/osgi/org.osgi.util.function/1.0.0/org.osgi.util.function-1.0.0.jar >>>> >>>> >>>> So, what do I need to do? >>>> >>>> Best regards, >>>> Alex soto >>>> >>>> >>>> >>>> >>>>> On May 6, 2021, at 9:59 AM, Jean-Baptiste Onofre <[email protected]> >>>>> wrote: >>>>> >>>>> Hi, >>>>> >>>>> osgi.function is part of the framework feature: >>>>> >>>>> https://github.com/apache/karaf/blob/main/assemblies/features/framework/src/main/feature/feature.xml#L34 >>>>> >>>>> That’s for Karaf 4.3.1/4.3.2. >>>>> >>>>> For 4.3.0, it’s there but in version 1.0.0: >>>>> >>>>> https://repo1.maven.org/maven2/org/apache/karaf/features/framework/4.3.0/framework-4.3.0-features.xml >>>>> >>>>> Regards >>>>> JB >>>>> >>>>>> Le 6 mai 2021 à 17:36, Alex Soto <[email protected]> a écrit : >>>>>> >>>>>> Hello, >>>>>> >>>>>> Using a custom distribution, based on Karaf version 4.3.0, I am getting >>>>>> the following error, and Karaf would not start: >>>>>> >>>>>> >>>>>> $ bin/karaf >>>>>> org.apache.felix.resolver.reason.ReasonException: Unable to resolve >>>>>> root: missing requirement [root] osgi.identity; osgi.identity=wrap; >>>>>> type=karaf.feature; version="[2.6.7,2.6.7]"; >>>>>> filter:="(&(osgi.identity=wrap)(type=karaf.feature)(version>=2.6.7)(version<=2.6.7))" >>>>>> [caused by: Unable to resolve wrap/2.6.7: missing requirement >>>>>> [wrap/2.6.7] osgi.identity; osgi.identity=pax-url-wrap; >>>>>> type=karaf.feature; version="[2.6.7,2.6.7]" [caused by: Unable to >>>>>> resolve pax-url-wrap/2.6.7: missing requirement [pax-url-wrap/2.6.7] >>>>>> osgi.identity; osgi.identity=org.ops4j.pax.url.wrap; type=osgi.bundle; >>>>>> version="[2.6.7,2.6.7]"; resolution:=mandatory [caused by: Unable to >>>>>> resolve org.ops4j.pax.url.wrap/2.6.7: missing requirement >>>>>> [org.ops4j.pax.url.wrap/2.6.7] osgi.wiring.package; >>>>>> filter:="(&(osgi.wiring.package=org.osgi.util.function)(version>=1.1.0)(!(version>=2.0.0)))"]]] >>>>>> at >>>>>> org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) >>>>>> at >>>>>> org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:434) >>>>>> at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:421) >>>>>> at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:375) >>>>>> at >>>>>> org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:257) >>>>>> at >>>>>> org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:392) >>>>>> at >>>>>> org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1062) >>>>>> at >>>>>> org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:998) >>>>>> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) >>>>>> at >>>>>> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) >>>>>> at >>>>>> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) >>>>>> at java.base/java.lang.Thread.run(Thread.java:829) >>>>>> Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to >>>>>> resolve wrap/2.6.7: missing requirement [wrap/2.6.7] osgi.identity; >>>>>> osgi.identity=pax-url-wrap; type=karaf.feature; version="[2.6.7,2.6.7]" >>>>>> [caused by: Unable to resolve pax-url-wrap/2.6.7: missing requirement >>>>>> [pax-url-wrap/2.6.7] osgi.identity; >>>>>> osgi.identity=org.ops4j.pax.url.wrap; type=osgi.bundle; >>>>>> version="[2.6.7,2.6.7]"; resolution:=mandatory [caused by: Unable to >>>>>> resolve org.ops4j.pax.url.wrap/2.6.7: missing requirement >>>>>> [org.ops4j.pax.url.wrap/2.6.7] osgi.wiring.package; >>>>>> filter:="(&(osgi.wiring.package=org.osgi.util.function)(version>=1.1.0)(!(version>=2.0.0)))"]] >>>>>> at >>>>>> org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) >>>>>> ... 12 more >>>>>> Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to >>>>>> resolve pax-url-wrap/2.6.7: missing requirement [pax-url-wrap/2.6.7] >>>>>> osgi.identity; osgi.identity=org.ops4j.pax.url.wrap; type=osgi.bundle; >>>>>> version="[2.6.7,2.6.7]"; resolution:=mandatory [caused by: Unable to >>>>>> resolve org.ops4j.pax.url.wrap/2.6.7: missing requirement >>>>>> [org.ops4j.pax.url.wrap/2.6.7] osgi.wiring.package; >>>>>> filter:="(&(osgi.wiring.package=org.osgi.util.function)(version>=1.1.0)(!(version>=2.0.0)))"] >>>>>> at >>>>>> org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) >>>>>> ... 13 more >>>>>> Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to >>>>>> resolve org.ops4j.pax.url.wrap/2.6.7: missing requirement >>>>>> [org.ops4j.pax.url.wrap/2.6.7] osgi.wiring.package; >>>>>> filter:="(&(osgi.wiring.package=org.osgi.util.function)(version>=1.1.0)(!(version>=2.0.0)))" >>>>>> at >>>>>> org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) >>>>>> ... 14 more >>>>>> >>>>>> >>>>>> >>>>>> Java version is: openjdk version "11.0.11" 2021-04-20 LTS >>>>>> OS: Linux version 3.10.0-1127.el7.x86_64 >>>>>> ([email protected]) (gcc version 4.8.5 20150623 (Red >>>>>> Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020 >>>>>> >>>>>> >>>>>> I have verified the required jar is present: >>>>>> >>>>>> $ ls -l system/org/osgi/org.osgi.util.function/1.1.0/ >>>>>> total 16 >>>>>> -rw-r--r--. 1 vagrant vagrant 14053 May 6 14:49 >>>>>> org.osgi.util.function-1.1.0.jar >>>>>> >>>>>> >>>>>> Any help will be appreciated. >>>>>> >>>>>> Best regards, >>>>>> Alex soto >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >
