Problem with serialization java.util.locale
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?
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?
That's ok, I will add this as a pre built in serializer in the next update. Thanks :)
@RuedigerMoeller Was this bug fixed in version 2.57?