Avro is a relatively new module contributed by community users. I am not familiar with its usage and code too.
File an issue to look for help might be an effective way. Jun > On Jun 13, 2019, at 10:27 AM, Huxing Zhang <[email protected]> wrote: > > 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
