Driver 4.14 with micrometer in OSGi does not seem to work

Description

Using driver 4.14 and overriding advanced.metrics.factory.class to MicrometerMetricsFactory does not seem to work in OSGi environment. Driver uses reflection to construct the class but the class cannot be found because the com.datastax.oss.java-driver-metrics-micrometer does not export the MicrometerMetricsFactory.

Here’s a stacktrace for reference:

15:21:41.569 ERROR [FelixStartLevel] bundle com.ericsson.bss.cassandra.ecchronos.connection.impl:4.0.0.SNAPSHOT (33)[com.ericsson.bss.cassandra.ecchronos.connection.impl.OSGiLocalNativeConnectionProvider(4)] : The activate method has thrown an exception java.lang.IllegalArgumentException: Can't find class MicrometerMetricsFactory (specified by advanced.metrics.factory.class) at com.datastax.oss.driver.internal.core.util.Reflection.resolveClass(Reflection.java:302) ~[?:?] at com.datastax.oss.driver.internal.core.util.Reflection.buildFromConfig(Reflection.java:235) ~[?:?] at com.datastax.oss.driver.internal.core.util.Reflection.buildFromConfig(Reflection.java:110) ~[?:?] at com.datastax.oss.driver.internal.core.context.DefaultDriverContext.buildMetricsFactory(DefaultDriverContext.java:548) ~[?:?] at com.datastax.oss.driver.internal.core.util.concurrent.LazyReference.get(LazyReference.java:55) ~[?:?] at com.datastax.oss.driver.internal.core.context.DefaultDriverContext.getMetricsFactory(DefaultDriverContext.java:941) ~[?:?] at com.datastax.oss.driver.internal.core.session.DefaultSession.<init>(DefaultSession.java:123) ~[?:?] at com.datastax.oss.driver.internal.core.session.DefaultSession.init(DefaultSession.java:88) ~[?:?] at com.datastax.oss.driver.api.core.session.SessionBuilder.buildDefaultSessionAsync(SessionBuilder.java:903) ~[?:?] at com.datastax.oss.driver.api.core.session.SessionBuilder.buildAsync(SessionBuilder.java:817) ~[?:?] at com.datastax.oss.driver.api.core.session.SessionBuilder.build(SessionBuilder.java:835) ~[?:?] at com.ericsson.bss.cassandra.ecchronos.connection.impl.LocalNativeConnectionProvider$Builder.createSession(LocalNativeConnectionProvider.java:216) ~[?:?] at com.ericsson.bss.cassandra.ecchronos.connection.impl.LocalNativeConnectionProvider$Builder.build(LocalNativeConnectionProvider.java:173) ~[?:?] at com.ericsson.bss.cassandra.ecchronos.connection.impl.OSGiLocalNativeConnectionProvider.activate(OSGiLocalNativeConnectionProvider.java:76) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_231] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_231] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_231]

If anyone has any idea how to get this working without a fix in driver please tell me.

Environment

None

Pull Requests

None

Activity

Show:

Details

Assignee

Reporter

Priority

Created November 15, 2022 at 8:32 AM
Updated November 15, 2022 at 8:37 AM