Replies: 2 comments 4 replies
-
|
@graemerocher or @altro3 can you pls confirm whether rxjava2:Observable type not serializable in 4.9.x ? |
Beta Was this translation helpful? Give feedback.
-
Root CauseThe issue is a known bug fixed in Micronaut 4.8.3Between Micronaut 4.0.0 and 4.8.2, there was a regression in how reactive types (specifically What happened:
Why Why upgrading to 4.8.3 fixes it: The bug was fixed in Micronaut Core #11847 and related commits around reactive type unwrapping. Solution : Upgrade to Micronaut 4.8.3 or higher (Recommended)This is the simplest fix since you already confirmed it works. pom.xml: <parent>
<groupId>io.micronaut.platform</groupId>
<artifactId>micronaut-parent</artifactId>
<version>4.8.3</version> <!-- or anything >= 4.8.3 -->
<relativePath/>
</parent> |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I have a simple micronaut jaxrs app created from mn tool. And I updated the Resource class [1] to have two following apis.
Note that in the pom I added micronaut-rxjava2 dependency also.
But if I just change the pom's micronaut-parent to 4.8.3, it just works.(meaning /pets/observable also gives me success response). Looks like there is a breaking change introduced ? or any workaround for this. Our teams have lot of rxjava2 Observable usage.
Also rxjava Single also works fine. Only Observable or Flowable types failing with this error.
And I attached the project here. [
micronaut-jaxrs-jdbc-maven-java.zip
](url)
[1]
[2]
10:02:33.567 [main] INFO io.micronaut.runtime.Micronaut - Startup completed in 427ms. Server Running: http://localhost:8080 10:02:36.371 [virtual-executor--776552351] ERROR i.m.http.server.RouteExecutor - Unexpected error occurred: Error encoding object [io.micronaut.core.async.propagation.ReactivePropagation$1@6edd7ace] to JSON: No serializable introspection present for type . Consider adding Serdeable. Serializable annotate to type . Alternatively if you are not in control of the project's source code, you can use @SerdeImport(.class) to enable serialization of this type. io.micronaut.http.codec.CodecException: Error encoding object [io.micronaut.core.async.propagation.ReactivePropagation$1@6edd7ace] to JSON: No serializable introspection present for type . Consider adding Serdeable. Serializable annotate to type . Alternatively if you are not in control of the project's source code, you can use @SerdeImport(.class) to enable serialization of this type. at io.micronaut.json.body.JsonMessageHandler.writePiece(JsonMessageHandler.java:156) at io.micronaut.http.body.ResponseBodyWriter.write(ResponseBodyWriter.java:62) at io.micronaut.http.netty.body.NettyJsonHandler.write(NettyJsonHandler.java:132) at io.micronaut.jaxrs.common.JaxRsGenericEntityMessageBodyWriter$2.writeInner0(JaxRsGenericEntityMessageBodyWriter.java:164) at io.micronaut.jaxrs.common.JaxRsGenericEntityMessageBodyWriter$ByteBodyState.writeInner(JaxRsGenericEntityMessageBodyWriter.java:343) at io.micronaut.jaxrs.common.JaxRsGenericEntityMessageBodyWriter$ByteBodyState.run(JaxRsGenericEntityMessageBodyWriter.java:293) at io.micronaut.jaxrs.common.JaxRsGenericEntityMessageBodyWriter.write(JaxRsGenericEntityMessageBodyWriter.java:168) at io.micronaut.jaxrs.common.JaxRsGenericEntityMessageBodyWriter.write(JaxRsGenericEntityMessageBodyWriter.java:54) at io.micronaut.http.server.ResponseLifecycle.buildFinalResponse(ResponseLifecycle.java:331) at io.micronaut.http.server.ResponseLifecycle.lambda$buildFinalResponse$7(ResponseLifecycle.java:326) at io.micronaut.core.execution.ExecutionFlow.lambda$async$0(ExecutionFlow.java:92) at io.micronaut.core.propagation.PropagatedContext.lambda$wrap$3(PropagatedContext.java:232) at java.base/java.util.concurrent.ThreadPerTaskExecutor$TaskRunner.run(ThreadPerTaskExecutor.java:314) at java.base/java.lang.VirtualThread.run(VirtualThread.java:329) Caused by: io.micronaut.serde.exceptions.SerdeException: No serializable introspection present for type . Consider adding Serdeable. Serializable annotate to type . Alternatively if you are not in control of the project's source code, you can use @SerdeImport(.class) to enable serialization of this type. at io.micronaut.serde.support.serializers.RuntimeTypeSerializer.lambda$getSerializer$0(RuntimeTypeSerializer.java:135) at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) at io.micronaut.serde.support.serializers.RuntimeTypeSerializer.getSerializer(RuntimeTypeSerializer.java:131) at io.micronaut.serde.support.serializers.RuntimeTypeSerializer.serialize(RuntimeTypeSerializer.java:76) at io.micronaut.serde.jackson.JacksonJsonMapper.writeValue(JacksonJsonMapper.java:246) at io.micronaut.serde.jackson.JacksonJsonMapper.writeValue0(JacksonJsonMapper.java:228) at io.micronaut.serde.jackson.JacksonJsonMapper.writeValue0(JacksonJsonMapper.java:223) at io.micronaut.serde.jackson.JacksonJsonMapper.writeValue(JacksonJsonMapper.java:328) at io.micronaut.json.body.JsonMessageHandler.lambda$writePiece$0(JsonMessageHandler.java:154) at io.micronaut.http.netty.body.NettyByteBodyFactory.buffer(NettyByteBodyFactory.java:77) at io.micronaut.json.body.JsonMessageHandler.writePiece(JsonMessageHandler.java:154) ... 13 common frames omitted Caused by: io.micronaut.core.beans.exceptions.IntrospectionException: No serializable introspection present for type . Consider adding Serdeable. Serializable annotate to type . Alternatively if you are not in control of the project's source code, you can use @SerdeImport(.class) to enable serialization of this type. at io.micronaut.serde.support.DefaultSerdeIntrospections.getSerializableIntrospection(DefaultSerdeIntrospections.java:111) at io.micronaut.serde.support.serializers.SerBean.<init>(SerBean.java:118) at io.micronaut.serde.support.serializers.ObjectSerializer.lambda$getSerializableBean$0(ObjectSerializer.java:165) at io.micronaut.core.util.SupplierUtil$2.get(SupplierUtil.java:79) at io.micronaut.serde.support.serializers.ObjectSerializer.getSerializableBean(ObjectSerializer.java:170) at io.micronaut.serde.support.serializers.ObjectSerializer.createSpecificInternal(ObjectSerializer.java:107) at io.micronaut.serde.support.serializers.ObjectSerializer.createSpecific(ObjectSerializer.java:99) at io.micronaut.serde.jackson.JacksonJsonMapper.writeValue(JacksonJsonMapper.java:243) ... 19 common frames omittedBeta Was this translation helpful? Give feedback.
All reactions