quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.36k stars 2.56k forks source link

Infinispan NPE when upgrading to Quarkus 3 #34050

Closed ia3andy closed 1 year ago

ia3andy commented 1 year ago

Describe the bug

2023-06-15 09:20:02,360 INFO  [org.inf.HOTROD] (Quarkus Main Thread) ISPN004021: Infinispan version: Infinispan 'Flying Saucer' 14.0.9.Final, using defaults.
2023-06-15 09:20:02,479 INFO  [io.sma.rea.mes.kafka] (Quarkus Main Thread) SRMSG18229: Configured topics for channel 'power-in': [power]
2023-06-15 09:20:02,503 INFO  [io.sma.rea.mes.kafka] (Quarkus Main Thread) SRMSG18214: Key deserializer omitted, using String as default
2023-06-15 09:20:02,694 INFO  [io.sma.rea.mes.kafka] (Quarkus Main Thread) SRMSG18229: Configured topics for channel 'game-events-in': [game-events]
2023-06-15 09:20:02,698 INFO  [io.sma.rea.mes.kafka] (Quarkus Main Thread) SRMSG18214: Key deserializer omitted, using String as default
2023-06-15 09:20:02,734 INFO  [io.sma.rea.mes.kafka] (smallrye-kafka-producer-thread-0) SRMSG18258: Kafka producer kafka-producer-user-actions-out, connected to Kafka brokers 'OUTSIDE://localhost:55003', is configured to write records to 'user-actions'
2023-06-15 09:20:02,748 INFO  [io.sma.rea.mes.kafka] (smallrye-kafka-producer-thread-1) SRMSG18258: Kafka producer kafka-producer-power-out, connected to Kafka brokers 'OUTSIDE://localhost:55003', is configured to write records to 'power'
2023-06-15 09:20:02,758 INFO  [io.sma.rea.mes.kafka] (smallrye-kafka-producer-thread-2) SRMSG18258: Kafka producer kafka-producer-game-events-out, connected to Kafka brokers 'OUTSIDE://localhost:55003', is configured to write records to 'game-events'
2023-06-15 09:20:02,814 INFO  [org.acm.GameResource] (Quarkus Main Thread) List of names initialized with 151671 items
2023-06-15 09:20:02,954 ERROR [io.qua.run.Application] (Quarkus Main Thread) Failed to start application (with profile [dev]): java.lang.NullPointerException: Cannot invoke "org.infinispan.client.hotrod.RemoteCacheManager.getCounterManager()" because "cacheManager" is null
    at org.infinispan.client.hotrod.RemoteCounterManagerFactory.asCounterManager(RemoteCounterManagerFactory.java:17)
    at io.quarkus.infinispan.client.runtime.InfinispanClientProducer.getNamedCounterManager(InfinispanClientProducer.java:413)
    at io.quarkus.infinispan.client.runtime.InfinispanRecorder$2.apply(InfinispanRecorder.java:45)
    at io.quarkus.infinispan.client.runtime.InfinispanRecorder$2.apply(InfinispanRecorder.java:42)
    at io.quarkus.infinispan.client.runtime.InfinispanRecorder$InfinispanClientSupplier.get(InfinispanRecorder.java:82)
    at io.quarkus.arc.runtime.ArcRecorder$4.apply(ArcRecorder.java:129)
    at io.quarkus.arc.runtime.ArcRecorder$4.apply(ArcRecorder.java:126)
    at org.infinispan.counter.api.CounterManager_61f5b93d82d87a655acb41cf48813f6b0c87c990_Synthetic_Bean.createSynthetic(Unknown Source)
    at org.infinispan.counter.api.CounterManager_61f5b93d82d87a655acb41cf48813f6b0c87c990_Synthetic_Bean.doCreate(Unknown Source)
    at org.infinispan.counter.api.CounterManager_61f5b93d82d87a655acb41cf48813f6b0c87c990_Synthetic_Bean.create(Unknown Source)
    at org.infinispan.counter.api.CounterManager_61f5b93d82d87a655acb41cf48813f6b0c87c990_Synthetic_Bean.create(Unknown Source)
    at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:113)
    at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:37)
    at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:34)
    at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
    at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
    at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:34)
    at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:21)
    at org.infinispan.counter.api.CounterManager_61f5b93d82d87a655acb41cf48813f6b0c87c990_Synthetic_ClientProxy.arc$delegate(Unknown Source)
    at org.infinispan.counter.api.CounterManager_61f5b93d82d87a655acb41cf48813f6b0c87c990_Synthetic_ClientProxy.defineCounter(Unknown Source)
    at org.acme.GameResource.<init>(GameResource.java:57)
    at org.acme.GameResource_Subclass.<init>(Unknown Source)
    at org.acme.GameResource_Bean.doCreate(Unknown Source)

Expected behavior

No NPE

Quarkus version or git rev

3.1.1.Final

quarkus-bot[bot] commented 1 year ago

/cc @karesti (infinispan), @wburns (infinispan)

gsmet commented 1 year ago

I think a reproducer would help.

ia3andy commented 1 year ago

Here is a reproducer: https://github.com/redhat-developer-demos/quinoa-wind-turbine/pull/44

run quarkus dev

main branch is still on 2.x and works fine.

karesti commented 1 year ago

@ia3andy having a look

karesti commented 1 year ago

@ia3andy there has been a major change in the extension, now we are using application scoped synthetic beans (thus can be mocked too :)) ) in RemoteCacheManager and CounterManager. However, looks like there is an issue when we don't configure anything and we inject the CounterManager only ...