Smallrye error reporting bug: ...SmallRyeConfigFactory: ...QuarkusConfigFactory not a subtype
See original GitHub issueDescribe the bug
When an error occurs in smallrye, the error handling itself throws an error.
Expected behavior
Only the original error stacktrace is shown, it doesn’t cause an error in the error handling.
Actual behavior
This extra error fills the log (after the original error’s stacktrace):
2021-07-30 15:48:25,681 ERROR [io.sma.rea.mes.amqp] (ForkJoinPool.commonPool-worker-3) SRMSG16225: Failure reported for channel `solver_response`, closing client: java.util.ServiceConfigurationError: io.smallrye.config.SmallRyeConfigFactory: io.quarkus.runtime.configuration.QuarkusConfigFactory not a subtype
at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:588)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1236)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264)
at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299)
at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384)
at io.smallrye.config.SmallRyeConfigProviderResolver.getFactoryFor(SmallRyeConfigProviderResolver.java:100)
at io.smallrye.config.SmallRyeConfigProviderResolver.getConfig(SmallRyeConfigProviderResolver.java:76)
at io.smallrye.config.SmallRyeConfigProviderResolver.getConfig(SmallRyeConfigProviderResolver.java:64)
at org.eclipse.microprofile.config.ConfigProvider.getConfig(ConfigProvider.java:85)
at io.smallrye.reactive.messaging.amqp.AmqpConnectorCommonConfiguration.getFromAlias(AmqpConnectorCommonConfiguration.java:36)
at io.smallrye.reactive.messaging.amqp.AmqpConnectorCommonConfiguration.getFromAliasWithDefaultValue(AmqpConnectorCommonConfiguration.java:48)
at io.smallrye.reactive.messaging.amqp.AmqpConnectorCommonConfiguration.lambda$getReconnectAttempts$3(AmqpConnectorCommonConfiguration.java:159)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at io.smallrye.reactive.messaging.amqp.AmqpConnectorCommonConfiguration.getReconnectAttempts(AmqpConnectorCommonConfiguration.java:159)
at io.smallrye.reactive.messaging.amqp.AmqpCreditBasedSender.send(AmqpCreditBasedSender.java:215)
at io.smallrye.reactive.messaging.amqp.AmqpCreditBasedSender.lambda$onNext$3(AmqpCreditBasedSender.java:131)
at io.smallrye.context.impl.wrappers.SlowContextualFunction.apply(SlowContextualFunction.java:21)
at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:68)
at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
at io.smallrye.mutiny.operators.uni.UniOnCancellation$UniOnCancellationProcessor.onItem(UniOnCancellation.java:43)
at io.smallrye.mutiny.operators.uni.UniOnItemConsume$UniOnItemComsumeProcessor.onItem(UniOnItemConsume.java:43)
at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:60)
at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem$KnownItemSubscription.forward(UniCreateFromKnownItem.java:38)
at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem$KnownItemSubscription.access$100(UniCreateFromKnownItem.java:26)
at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem.subscribe(UniCreateFromKnownItem.java:23)
at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:81)
at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem$KnownItemSubscription.forward(UniCreateFromKnownItem.java:38)
at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem$KnownItemSubscription.access$100(UniCreateFromKnownItem.java:26)
at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem.subscribe(UniCreateFromKnownItem.java:23)
at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
at io.smallrye.mutiny.operators.uni.UniOnItemConsume.subscribe(UniOnItemConsume.java:30)
at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
at io.smallrye.mutiny.operators.uni.UniOnCancellation.subscribe(UniOnCancellation.java:23)
at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
at io.smallrye.mutiny.groups.UniSubscribe.withSubscriber(UniSubscribe.java:50)
at io.smallrye.mutiny.groups.UniSubscribe.with(UniSubscribe.java:90)
at io.smallrye.reactive.messaging.amqp.AmqpCreditBasedSender.onNext(AmqpCreditBasedSender.java:140)
at io.smallrye.reactive.messaging.amqp.AmqpCreditBasedSender.onNext(AmqpCreditBasedSender.java:33)
at io.smallrye.mutiny.subscription.SafeSubscriber.onNext(SafeSubscriber.java:98)
at io.smallrye.mutiny.helpers.HalfSerializer.onNext(HalfSerializer.java:31)
at io.smallrye.mutiny.helpers.StrictMultiSubscriber.onItem(StrictMultiSubscriber.java:83)
at io.smallrye.mutiny.subscription.MultiSubscriber.onNext(MultiSubscriber.java:61)
at io.smallrye.mutiny.streams.utils.ConnectableProcessor.onNext(ConnectableProcessor.java:122)
at org.eclipse.microprofile.reactive.streams.operators.CompletionSubscriber$1DefaultCompletionSubscriber.onNext(CompletionSubscriber.java:85)
at org.eclipse.microprofile.reactive.streams.operators.CompletionSubscriber$1DefaultCompletionSubscriber.onNext(CompletionSubscriber.java:85)
at io.smallrye.mutiny.subscription.SafeSubscriber.onNext(SafeSubscriber.java:98)
at io.smallrye.mutiny.subscription.SafeSubscriber.onNext(SafeSubscriber.java:98)
at io.smallrye.mutiny.helpers.HalfSerializer.onNext(HalfSerializer.java:31)
at io.smallrye.mutiny.helpers.StrictMultiSubscriber.onItem(StrictMultiSubscriber.java:83)
at io.smallrye.mutiny.operators.multi.MultiOperatorProcessor.onItem(MultiOperatorProcessor.java:67)
at io.smallrye.mutiny.operators.multi.builders.BufferItemMultiEmitter.drain(BufferItemMultiEmitter.java:118)
at io.smallrye.mutiny.operators.multi.builders.BufferItemMultiEmitter.emit(BufferItemMultiEmitter.java:34)
at io.smallrye.mutiny.operators.multi.builders.SerializedMultiEmitter.onItem(SerializedMultiEmitter.java:49)
at io.smallrye.mutiny.operators.multi.builders.SerializedMultiEmitter.emit(SerializedMultiEmitter.java:139)
at io.smallrye.reactive.messaging.extension.ThrowingEmitter.emit(ThrowingEmitter.java:63)
at io.smallrye.reactive.messaging.extension.AbstractEmitter.emit(AbstractEmitter.java:146)
at io.smallrye.reactive.messaging.extension.EmitterImpl.send(EmitterImpl.java:29)
at org.acme.schooltimetabling.messaging.TimeTableMessagingHandler.reply(TimeTableMessagingHandler.java:106)
at org.acme.schooltimetabling.messaging.TimeTableMessagingHandler.replyFailure(TimeTableMessagingHandler.java:97)
at org.acme.schooltimetabling.messaging.TimeTableMessagingHandler.lambda$solve$0(TimeTableMessagingHandler.java:83)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1728)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
How to Reproduce?
git clone https://github.com/kiegroup/optaplanner-quickstarts.git
cd optaplanner-quickstarts
git checkout development
cd technology/java-activemq-quarkus
gedit pom.xml // Switch it to 2.1.0.Final
mvn clean install -DskipTests
cd solver
mvn test -Dtest=TimeTableMessagingHandlerTest#solve
Scroll past the first stacktrace (drools related) to the second one.
Output of uname -a
or ver
No response
Output of java -version
No response
GraalVM version (if different from Java)
No response
Quarkus version or git rev
No response
Build tool (ie. output of mvnw --version
or gradlew --version
)
No response
Additional information
No response
Issue Analytics
- State:
- Created 2 years ago
- Comments:5 (3 by maintainers)
Top Results From Across the Web
Quarkus 1.13.x WebSocket Client - wrong ClassLoader?
ServiceConfigurationError: io.smallrye.config.SmallRyeConfigFactory: io.quarkus.runtime.configuration.QuarkusConfigFactory not a subtype.
Read more >Keycloak custom provider with Quarkus extension
The problem starts when I'm trying to deploy my custom provider to the production environment. ... QuarkusConfigFactory not a subtype .
Read more >Exception java.util.ServiceConfigurationError thrown
Describe the bug In certain cases, tests throw an exception before being executed java.util. ... QuarkusConfigFactory not a subtype.
Read more >not a subtype on java 11 with fault-tolerance - quarkus
ServiceConfigurationError: io.smallrye.config.SmallRyeConfigFactory: io.quarkus.runtime.configuration.QuarkusConfigFactory not a subtype
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
@geoand I think this report focuses on how the Smallrye communicates the root cause (#19136). The extra error log illustrated in the “Actual behavior” section detracts attention from the root cause. In other words, yes, it is still an issue.
Probably (as Radovan said), but note that it will only reproduce if there’s another issue, because it’s an issue in the error reporting. You can use the reproducer in the description to reproduce by using quarkus 2.1.0.Final, but not 2.1.1.Final once that’s out.