fast-serialization icon indicating copy to clipboard operation
fast-serialization copied to clipboard

Problem with serialization java.util.locale

Open mrshawn191 opened this issue 8 years ago • 3 comments

io.netty.handler.codec.EncoderException: java.lang.RuntimeException: Unsupported backward compatibility mode for class 'java.util.Locale'. Pls register a Custom Serializer to fix at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:125) [netty-codec-4.1.13.Final.jar:4.1.13.Final] at org.redisson.client.handler.CommandEncoder.write(CommandEncoder.java:63) ~[redisson-2.10.0.jar:na] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:120) [netty-codec-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.ChannelOutboundHandlerAdapter.write(ChannelOutboundHandlerAdapter.java:104) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at org.redisson.client.handler.CommandsQueue.write(CommandsQueue.java:76) [redisson-2.10.0.jar:na] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:801) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:814) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:794) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1027) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:301) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at org.redisson.client.handler.CommandsQueue.sendData(CommandsQueue.java:102) [redisson-2.10.0.jar:na] at org.redisson.client.handler.CommandsQueue.write(CommandsQueue.java:79) [redisson-2.10.0.jar:na] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext.access$1900(AbstractChannelHandlerContext.java:38) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1089) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1136) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1078) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [netty-common-4.1.13.Final.jar:4.1.13.Final] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403) [netty-common-4.1.13.Final.jar:4.1.13.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462) [netty-transport-4.1.13.Final.jar:4.1.13.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-common-4.1.13.Final.jar:4.1.13.Final] at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138) [netty-common-4.1.13.Final.jar:4.1.13.Final] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131] Caused by: java.lang.RuntimeException: Unsupported backward compatibility mode for class 'java.util.Locale'. Pls register a Custom Serializer to fix at org.nustaq.serialization.coders.FSTJsonEncoder.writeTag(FSTJsonEncoder.java:266) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObjectHeader(FSTObjectOutput.java:753) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObjectCompatible(FSTObjectOutput.java:552) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObjectWithContext(FSTObjectOutput.java:450) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObjectInternal(FSTObjectOutput.java:327) ~[fst-2.56.jar:na] at org.nustaq.serialization.serializers.FSTArrayListSerializer.writeObject(FSTArrayListSerializer.java:49) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObjectWithContext(FSTObjectOutput.java:476) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObjectWithContext(FSTObjectOutput.java:369) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObjectFields(FSTObjectOutput.java:664) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.defaultWriteObject(FSTObjectOutput.java:546) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObjectWithContext(FSTObjectOutput.java:458) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObjectInternal(FSTObjectOutput.java:327) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObject(FSTObjectOutput.java:285) ~[fst-2.56.jar:na] at org.nustaq.serialization.FSTObjectOutput.writeObject(FSTObjectOutput.java:204) ~[fst-2.56.jar:na] at org.redisson.codec.FstCodec$2.encode(FstCodec.java:84) ~[redisson-2.10.0.jar:na] at org.redisson.client.handler.CommandEncoder.encode(CommandEncoder.java:103) ~[redisson-2.10.0.jar:na] at org.redisson.client.handler.CommandEncoder.encode(CommandEncoder.java:45) ~[redisson-2.10.0.jar:na] at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) [netty-codec-4.1.13.Final.jar:4.1.13.Final] ... 32 common frames omitted

This seems to only happen when im not logged in, and serialization fails during request.. any idea how to fix this?

mrshawn191 avatar Dec 08 '17 09:12 mrshawn191

problem seems to be fixed by adding

    config.registerSerializer(Locale.class, new FSTBasicObjectSerializer() {
        @Override
        public void writeObject(FSTObjectOutput out, Object toWrite, FSTClazzInfo clzInfo, FSTClazzInfo.FSTFieldInfo referencedBy, int streamPosition) throws IOException {
            out.writeObject(toWrite.toString());
        }

        @Override
        public Object instantiate(Class objectClass, FSTObjectInput in, FSTClazzInfo serializationInfo, FSTClazzInfo.FSTFieldInfo referencee, int streamPosition) throws Exception {
            Object res = new Locale(in.readStringUTF());
            return res;
        }
    }, true);

is this ok approach?

mrshawn191 avatar Dec 08 '17 12:12 mrshawn191

That's ok, I will add this as a pre built in serializer in the next update. Thanks :)

RuedigerMoeller avatar Dec 11 '17 19:12 RuedigerMoeller

@RuedigerMoeller Was this bug fixed in version 2.57?

huangsen94 avatar Jun 18 '19 08:06 huangsen94