cuihaohao opened a new issue, #2376:
URL: https://github.com/apache/fory/issues/2376

   ### Question
   
   rpc server端部署后,client端出现各种离谱的兼容性报错。
   使用的是motan2 rpc框架
   java 1.8版本
   fury 0.4.1版本
   这是我的fury的使用
   `@SpiMeta(name = "fury")
   public class FurySerialization implements Serialization {
        static {
                LoggerFactory.disableLogging();
        }
   
        private static final ThreadSafeFury FURY = initFury();
   
        private static ThreadSafeFury initFury() {
                return 
Fury.builder().withLanguage(Language.JAVA).withRefTracking(true)
                                .requireClassRegistration(false)
                                .withCompatibleMode(CompatibleMode.COMPATIBLE)
                                
.withDeserializeUnexistedClass(true).buildThreadSafeFury();
        }
   
        private static ThreadSafeFury getFury() {
                return FURY;
        }
   
        @Override
        public byte[] serialize(Object obj) {
                return getFury().serialize(obj);
        }
   
        @Override
        public <T> T deserialize(byte[] bytes, Class<T> clz) {
                return (T) getFury().deserialize(bytes);
        }
   
        @Override
        public byte[] serializeMulti(Object[] objects) throws IOException {
                if (objects == null || objects.length == 0) {
                        return new byte[0];
                }
                return getFury().serialize(objects);
        }
   
        @Override
        public Object[] deserializeMulti(byte[] bytes, Class<?>[] classes)
                        throws IOException {
                if (bytes == null || bytes.length == 0) {
                        return new Object[0];
                }
                Object[] result = (Object[]) getFury().deserialize(bytes);
   
                // 确保反序列化的对象数量匹配传入的类数组
                if (result.length != classes.length) {
                        throw new IOException(
                                        "Deserialized object count does not 
match expected count.");
                }
                return result;
        }
   
        @Override
        public int getSerializationNumber() {
                return 30;
        }`
   这个GameBaseLoginInfo新增了一个List<Integer>类型的字段,然后出现了这种错误
   java.lang.UnsupportedOperationException: Unsupported encoding: 39
        at 
io.fury.serializer.StringSerializer.readJavaString(StringSerializer.java:366)
        at io.fury.serializer.StringSerializer.read(StringSerializer.java:141)
        at io.fury.serializer.StringSerializer.read(StringSerializer.java:53)
        at io.fury.Fury.readData(Fury.java:867)
        at 
io.fury.resolver.FieldResolver.skipObjectField(FieldResolver.java:513)
        at io.fury.resolver.FieldResolver.skipDataBy8(FieldResolver.java:490)
        at io.fury.resolver.FieldResolver.skipEndFields(FieldResolver.java:524)
        at 
com.test.resource.GameBaseLoginInfoFuryRefCompatibleCodec_1_414493378_59796969.read(GameBaseLoginInfoFuryRefCompatibleCodec_1_414493378_59796969.java:610)
        at io.fury.Fury.readDataInternal(Fury.java:899)
        at io.fury.Fury.readRef(Fury.java:801)
        at io.fury.Fury.deserialize(Fury.java:750)
        at io.fury.Fury.deserialize(Fury.java:681)
        at io.fury.ThreadLocalFury.deserialize(ThreadLocalFury.java:81)
        at 
com.test.serialize.FurySerialization.deserialize(FurySerialization.java:44)
   
   io.fury.exception.ClassNotCompatibleException: Class class 
com.test.resource.GameBaseLoginInfo end tag should be 9223372036854775806 but 
got -5248530660770971642, maybe peer has different duplicate fields in class 
hierarchy
        at io.fury.resolver.FieldResolver.skipDataBy8(FieldResolver.java:495)
        at io.fury.resolver.FieldResolver.skipEndFields(FieldResolver.java:524)
        at 
com.test.resource.GameBaseLoginInfoFuryRefCompatibleCodec_1_414493378_826424038.read(GameBaseLoginInfoFuryRefCompatibleCodec_1_414493378_826424038.java:610)
        at io.fury.Fury.readDataInternal(Fury.java:899)
        at io.fury.Fury.readRef(Fury.java:801)
        at io.fury.Fury.deserialize(Fury.java:750)
        at io.fury.Fury.deserialize(Fury.java:681)
        at io.fury.ThreadLocalFury.deserialize(ThreadLocalFury.java:81)
        at 
com.test.serialize.FurySerialization.deserialize(FurySerialization.java:44)
        at 
com.weibo.api.motan.serialize.DeserializableObject.deserialize(DeserializableObject.java:38)
   
   甚至出现一些未修改的模型,也出现了各种序列化反序列化的问题。
   
   等全部模块全部启动后,又恢复了。
   请问能帮忙看下什么原因吗?
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to