Hi, Thanks for reporting. Could you file an Github issue and provide steps to reproduce this issue?
On Wed, Jun 12, 2019 at 10:54 PM [email protected] <[email protected]> wrote: > > Dear experts, > > We are using Dubbo as service registry in our cluster. > > Our DTOs are mainly using Avro for serialization/deserialization. > Fortunately, Dubbo also supports Avro serialization. > > However, as to provide generality in our service APIs, we use GenericRecord > as the DTO type to return for mainly every service method. > > When running, we notice that Dubbo-Serialization-Avro is only accepting to > serialize/deserialize SpecificRecord, the stack trace is as follows: > > org.apache.avro.AvroRuntimeException: Not a Specific class: class > org.apache.avro.generic.GenericData$Record > at > org.apache.avro.specific.SpecificData.createSchema(SpecificData.java:403) > at > org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:605) > at > org.apache.avro.specific.SpecificData$3.computeValue(SpecificData.java:335) > at > org.apache.avro.specific.SpecificData$3.computeValue(SpecificData.java:332) > at java.lang.ClassValue.getFromHashMap(ClassValue.java:227) > at java.lang.ClassValue.getFromBackup(ClassValue.java:209) > at java.lang.ClassValue.get(ClassValue.java:115) > at > org.apache.avro.specific.SpecificData.getSchema(SpecificData.java:346) > at > org.apache.avro.reflect.ReflectDatumWriter.<init>(ReflectDatumWriter.java:47) > at > org.apache.avro.reflect.ReflectDatumWriter.<init>(ReflectDatumWriter.java:43) > at > org.apache.dubbo.common.serialize.avro.AvroObjectOutput.writeObject(AvroObjectOutput.java:100) > at > org.apache.dubbo.rpc.protocol.dubbo.DubboCodec.encodeResponseData(DubboCodec.java:203) > at > org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encodeResponse(ExchangeCodec.java:283) > at > org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:71) > at > org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:40) > at > org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalEncoder.encode(NettyCodecAdapter.java:70) > at > io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) > at > io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) > at > io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) > at > io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816) > at > io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) > at > io.netty.handler.timeout.IdleStateHandler.write(IdleStateHandler.java:302) > at > io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) > at > io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) > at > io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816) > at > io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) > at > io.netty.channel.ChannelDuplexHandler.write(ChannelDuplexHandler.java:106) > at > org.apache.dubbo.remoting.transport.netty4.NettyServerHandler.write(NettyServerHandler.java:100) > at > io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) > at > io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) > at > io.netty.channel.AbstractChannelHandlerContext.access$1900(AbstractChannelHandlerContext.java:38) > at > io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1081) > at > io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1128) > at > io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1070) > at > io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) > at > io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:465) > at > io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) > at > io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > at java.lang.Thread.run(Thread.java:748) > > We wonder if there is any solution to allow the serialization of > GenericRecord? > > Best regards > Tien Dat PHAN -- Best Regards! Huxing
