Thanks for reporting an issue, please review the task list below before submitting the
issue. Your issue report will be closed if the issue is incomplete and the below tasks not completed.
[ ] Example that reproduces the problem uploaded to Github
[x] Full description of the issue provided (see below)
Steps to Reproduce
Implement a cache bean returning a Single (RxJava3) like so
import io.reactivex.rxjava3.core.Single;
...
@Cacheable
public Single getDataById(String id) {
}
2. Setup your caching (I'm using redis) as usual
3. Request the method to store data in cache
### Expected Behaviour
I expect the data to be stored in cache
### Actual Behaviour
A exception is thrown:
`io.micronaut.core.async.publisher.CompletableFuturePublisher cannot be cast to class SomePoJo (io.micronaut.core.async.publisher.CompletableFuturePublisher and SomePoJo are in unnamed module of loader 'app')"`
16:52:38.075 [io-executor-thread-1:SHDZEFFDS] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: class io.micronaut.core.async.publisher.CompletableFuturePublisher cannot be cast to class de.addmore.business.cvpn.repository.ntas.model.GroupVpnData (io.micronaut.core.async.publisher.CompletableFuturePublisher and de.addmore.business.cvpn.repository.ntas.model.GroupVpnData are in unnamed module of loader 'app')
java.lang.ClassCastException: class io.micronaut.core.async.publisher.CompletableFuturePublisher cannot be cast to class de.addmore.business.cvpn.repository.ntas.model.GroupVpnData (io.micronaut.core.async.publisher.CompletableFuturePublisher and de.addmore.business.cvpn.repository.ntas.model.GroupVpnData are in unnamed module of loader 'app')
at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onSuccess(SingleMap.java:58)
at io.micronaut.rxjava3.instrument.RxInstrumentedSingleObserver.onSuccess(RxInstrumentedSingleObserver.java:65)
at io.reactivex.rxjava3.internal.operators.single.SingleResumeNext$ResumeMainSingleObserver.onSuccess(SingleResumeNext.java:65)
at io.micronaut.rxjava3.instrument.RxInstrumentedSingleObserver.onSuccess(RxInstrumentedSingleObserver.java:65)
at io.reactivex.rxjava3.internal.operators.single.SingleJust.subscribeActual(SingleJust.java:30)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.micronaut.rxjava3.instrument.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleResumeNext.subscribeActual(SingleResumeNext.java:39)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.micronaut.rxjava3.instrument.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:35)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.micronaut.rxjava3.instrument.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.reactivex.rxjava3.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:35)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at io.micronaut.rxjava3.instrument.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
at hu.akarnokd.rxjava3.bridge.SingleV3toV2.subscribeActual(SingleV3toV2.java:32)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
at io.reactivex.Maybe.subscribe(Maybe.java:4290)
at io.reactivex.internal.operators.maybe.MaybeSwitchIfEmptySingle.subscribeActual(MaybeSwitchIfEmptySingle.java:45)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleToFlowable.subscribeActual(SingleToFlowable.java:37)
at io.reactivex.Flowable.subscribe(Flowable.java:14918)
at io.reactivex.Flowable.subscribe(Flowable.java:14865)
at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57)
at io.reactivex.Flowable.subscribe(Flowable.java:14918)
at io.reactivex.Flowable.subscribe(Flowable.java:14865)
at io.reactivex.internal.operators.flowable.FlowableDefer.subscribeActual(FlowableDefer.java:42)
at io.reactivex.Flowable.subscribe(Flowable.java:14918)
at io.reactivex.Flowable.subscribe(Flowable.java:14865)
at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57)
at io.reactivex.Flowable.subscribe(Flowable.java:14918)
at io.reactivex.Flowable.subscribe(Flowable.java:14865)
at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288)
at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253)
at io.micronaut.scheduling.instrument.InvocationInstrumenterWrappedRunnable.run(InvocationInstrumenterWrappedRunnable.java:47)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
A RxJava 2 Single works fine.
### Environment Information
- **Operating System**: Win 10
- **Micronaut Version:** 2.1.4 & 2.2.0
- **JDK Version:** JDK 15
Thanks for reporting an issue, please review the task list below before submitting the issue. Your issue report will be closed if the issue is incomplete and the below tasks not completed.
NOTE: If you are unsure about something and the issue is more of a question a better place to ask questions is on Stack Overflow (https://stackoverflow.com/tags/micronaut) or Gitter (https://gitter.im/micronautfw/). DO NOT use the issue tracker to ask questions.
Task List
Steps to Reproduce
@Cacheable public Single getDataById(String id) {
}
16:52:38.075 [io-executor-thread-1:SHDZEFFDS] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: class io.micronaut.core.async.publisher.CompletableFuturePublisher cannot be cast to class de.addmore.business.cvpn.repository.ntas.model.GroupVpnData (io.micronaut.core.async.publisher.CompletableFuturePublisher and de.addmore.business.cvpn.repository.ntas.model.GroupVpnData are in unnamed module of loader 'app') java.lang.ClassCastException: class io.micronaut.core.async.publisher.CompletableFuturePublisher cannot be cast to class de.addmore.business.cvpn.repository.ntas.model.GroupVpnData (io.micronaut.core.async.publisher.CompletableFuturePublisher and de.addmore.business.cvpn.repository.ntas.model.GroupVpnData are in unnamed module of loader 'app') at io.reactivex.rxjava3.internal.operators.single.SingleMap$MapSingleObserver.onSuccess(SingleMap.java:58) at io.micronaut.rxjava3.instrument.RxInstrumentedSingleObserver.onSuccess(RxInstrumentedSingleObserver.java:65) at io.reactivex.rxjava3.internal.operators.single.SingleResumeNext$ResumeMainSingleObserver.onSuccess(SingleResumeNext.java:65) at io.micronaut.rxjava3.instrument.RxInstrumentedSingleObserver.onSuccess(RxInstrumentedSingleObserver.java:65) at io.reactivex.rxjava3.internal.operators.single.SingleJust.subscribeActual(SingleJust.java:30) at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813) at io.micronaut.rxjava3.instrument.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52) at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813) at io.reactivex.rxjava3.internal.operators.single.SingleResumeNext.subscribeActual(SingleResumeNext.java:39) at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813) at io.micronaut.rxjava3.instrument.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52) at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813) at io.reactivex.rxjava3.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:35) at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813) at io.micronaut.rxjava3.instrument.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52) at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813) at io.reactivex.rxjava3.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:35) at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813) at io.micronaut.rxjava3.instrument.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52) at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813) at hu.akarnokd.rxjava3.bridge.SingleV3toV2.subscribeActual(SingleV3toV2.java:32) at io.reactivex.Single.subscribe(Single.java:3603) at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52) at io.reactivex.Single.subscribe(Single.java:3603) at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41) at io.reactivex.Maybe.subscribe(Maybe.java:4290) at io.reactivex.internal.operators.maybe.MaybeSwitchIfEmptySingle.subscribeActual(MaybeSwitchIfEmptySingle.java:45) at io.reactivex.Single.subscribe(Single.java:3603) at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34) at io.reactivex.Single.subscribe(Single.java:3603) at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52) at io.reactivex.Single.subscribe(Single.java:3603) at io.reactivex.internal.operators.single.SingleToFlowable.subscribeActual(SingleToFlowable.java:37) at io.reactivex.Flowable.subscribe(Flowable.java:14918) at io.reactivex.Flowable.subscribe(Flowable.java:14865) at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57) at io.reactivex.Flowable.subscribe(Flowable.java:14918) at io.reactivex.Flowable.subscribe(Flowable.java:14865) at io.reactivex.internal.operators.flowable.FlowableDefer.subscribeActual(FlowableDefer.java:42) at io.reactivex.Flowable.subscribe(Flowable.java:14918) at io.reactivex.Flowable.subscribe(Flowable.java:14865) at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57) at io.reactivex.Flowable.subscribe(Flowable.java:14918) at io.reactivex.Flowable.subscribe(Flowable.java:14865) at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82) at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288) at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253) at io.micronaut.scheduling.instrument.InvocationInstrumenterWrappedRunnable.run(InvocationInstrumenterWrappedRunnable.java:47) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at java.base/java.lang.Thread.run(Thread.java:832)