question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Smallrye error reporting bug: ...SmallRyeConfigFactory: ...QuarkusConfigFactory not a subtype

See original GitHub issue

Describe 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:open
  • Created 2 years ago
  • Comments:5 (3 by maintainers)

github_iconTop GitHub Comments

1reaction
rsynekcommented, Aug 3, 2021

@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.

0reactions
ge0ffreycommented, Aug 3, 2021

With #19136 fixed, is this 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.

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found