Closed
Description
Describe the bug
amqp-client-5.18.0's Import-Package has only:
io.micrometer.core.instrument;version="[1.11,2)";resolution:=optional
which is satisfied by an optional dependency in pom.xml
amqp-client-5.19.0's Import-Package has also:
io.micrometer.common;version="[1.11,2)";resolution:=optional,
io.micrometer.common.docs;version="[1.11,2)";resolution:=optional,
io.micrometer.common.util;version="[1.11,2)";resolution:=optional,
io.micrometer.core.instrument;version="[1.11,2)",
io.micrometer.observation;version="[1.11,2)",
io.micrometer.observation.docs;version="[1.11,2)";resolution:=optional,
io.micrometer.observation.transport;version="[1.11,2)";resolution:=optional
This leads to failure to resolve the bundle if micrometer is not present
Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve com.rabbitmq.client/5.19.0: missing requirement [com.rabbitmq.client/5.19.0] osgi.wiring.package; filter:="(&(osgi.wiring.package=io.micrometer.core.instrument)(version>=1.11.0)(!(version>=2.0.0)))"
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[?:?]
at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1341) ~[?:?]
... 12 more
Observed transitively through metrics-graphite upgrade from 4.2.20 to 4.2.21, which transitively upgrades ampq-client from 5.18.0 to 5.19.0).
Reproduction steps
- Attempt to deploy amqp-client into an OSGi container without also deploying micrometer
Expected behavior
Micrometer remains optional, or the pom.xml dependency on on micrometer-core is not optional=true.
Additional context
Logs from a Karaf validation run: https://s3-logs.opendaylight.org/logs/releng/vex-yul-odl-jenkins-1/controller-maven-verify-7.0.x-mvn38-openjdk17/33/features/odl-mdsal-clustering-commons/target/SFT/karaf.log.gz, the feature being tested is:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0" name="odl-controller-7.0.11-SNAPSHOT">
<repository>mvn:org.opendaylight.odlparent/odl-apache-commons-lang3/12.0.9/xml/features</repository>
<repository>mvn:org.opendaylight.odlparent/odl-dropwizard-metrics/12.0.9/xml/features</repository>
<repository>mvn:org.opendaylight.odlparent/odl-servlet-api/12.0.9/xml/features</repository>
<repository>mvn:org.opendaylight.yangtools/odl-yangtools-data/10.0.11/xml/features</repository>
<repository>mvn:org.opendaylight.yangtools/odl-yangtools-codec/10.0.11/xml/features</repository>
<repository>mvn:org.opendaylight.controller/odl-controller-akka/7.0.11-SNAPSHOT/xml/features</repository>
<feature name="odl-mdsal-clustering-commons" description="OpenDaylight :: Controller :: Clustering Commons" version="7.0.11.SNAPSHOT">
<details>Common Clustering utilities</details>
<feature version="[12,13)">odl-apache-commons-lang3</feature>
<feature version="[12,13)">odl-dropwizard-metrics</feature> <!-- contains metrics-core and a few others ... -->
<feature version="[12,13)">odl-servlet-api</feature>
<feature version="[10,11)">odl-yangtools-data</feature>
<feature version="[10,11)">odl-yangtools-codec</feature>
<feature version="7.0.11.SNAPSHOT" prerequisite="false" dependency="false">odl-controller-akka</feature>
<bundle>mvn:org.opendaylight.controller/sal-clustering-commons/7.0.11-SNAPSHOT</bundle>
<bundle>mvn:io.dropwizard.metrics/metrics-graphite/4.2.21</bundle> <!-- pulls in metrics-graphite ... -->
<bundle>mvn:com.rabbitmq/amqp-client/5.19.0</bundle> <!-- ... which has this discovered dependency and nothing else -->
<bundle>mvn:org.lz4/lz4-java/1.8.0</bundle>
<bundle>mvn:org.opendaylight.controller/sal-akka-raft/7.0.11-SNAPSHOT</bundle>
<bundle>mvn:org.opendaylight.controller/cds-mgmt-api/7.0.11-SNAPSHOT</bundle>
<bundle>mvn:org.opendaylight.controller/sal-akka-segmented-journal/7.0.11-SNAPSHOT</bundle>
<bundle>mvn:org.opendaylight.controller/atomix-storage/7.0.11-SNAPSHOT</bundle>
</feature>
</features>