-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Describe the bug
I am trying to deploy micrometer-commons and micrometer-observations in an OSGi environment that includes slf4j 2. Micrometer is compatible with slf4j 2 (#3415) but the OSGi Import-Package version range on the org.slf4j.spi package in micrometer-commons is not.
Environment
- Micrometer version: 1.15.1
- Java version: 17
To Reproduce
How to reproduce the bug:
Deploy micrometer-commons in an OSGi container along with slf4j 2. The micrometer bundle cannot be started:
g! ss micro
id State Bundle
330 INSTALLED micrometer-commons_1.15.1
g! diag 330
micrometer-commons [330]
Unresolved requirement: Import-Package: javax.annotation; version="3.0.2"; resolution:="optional"
Unresolved requirement: Import-Package: javax.annotation.meta; version="3.0.2"; resolution:="optional"
Unresolved requirement: Import-Package: org.slf4j.spi; version="[1.7.0,2.0.0)"
g! packages org.slf4j.spi
osgi.wiring.package; bundle-symbolic-name="slf4j.api"; bundle-version:Version="2.0.17"; version:Version="2.0.17"; osgi.wiring.package="org.slf4j.spi"; uses:="org.slf4j,org.slf4j.event,org.slf4j.helpers"<slf4j.api_2.0.17 [309]>
jcl.over.slf4j_2.0.17 [276] imports
io.netty.common_4.2.1.Final [158] imports
org.jboss.logging.jboss-logging_3.1.1.GA [308] imports
jul.to.slf4j_2.0.17 [236] imports
org.apache.logging.log4j.slf4j2.impl_2.24.3 [266] imports
g! b 309
slf4j.api_2.0.17 [309]
Id=309, Status=ACTIVE Data Root=/var/tmp/org.eclipse.osgi/309/data
"No registered services."
Services in use:
{org.apache.logging.log4j.spi.Provider}={service.id=29, service.bundleid=198, service.scope=singleton, APIVersion=2.6.0}
Exported packages
org.slf4j; version="2.0.17"[exported]
org.slf4j.event; version="2.0.17"[exported]
org.slf4j.helpers; version="2.0.17"[exported]
org.slf4j.spi; version="2.0.17"[exported]
org.slf4j; version="1.7.36"[exported]
org.slf4j.helpers; version="1.7.36"[exported]
Imported packages
org.apache.aries.spifly; version="1.3.7" <org.apache.aries.spifly.dynamic.bundle_1.3.7 [224]>
No fragment bundles
No required bundles
Here slf4j 2 exports 1.7.36 versioned packages for all but the org.slf4j.spi package, which causes Micrometer to fail to resolve because of its required version range [1.7,2.0).
Expected behavior
That Micrometer could still resolve and work with version 2 of the org.sfl4j.spi package. This could be achieved by omitting the upper bounds on the org.slf4j.spi package import version range, or increasing it to 3, or omitting the version range completely.
Additional context
For my use case, I was able to get Micrometer deployed by changing the org.slf4j imports to be dynamic, as in this commit.