diff --git a/dubbo-rpc/dubbo-rpc-default/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java b/dubbo-rpc/dubbo-rpc-default/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java index a1dbd660a66..8c1e46759c4 100644 --- a/dubbo-rpc/dubbo-rpc-default/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java +++ b/dubbo-rpc/dubbo-rpc-default/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java @@ -103,11 +103,7 @@ public Object decode(Channel channel, InputStream input) throws IOException { Class[] pts; // NOTICE modified by lishen - int argNum = -1; - - if (CodecSupport.getSerialization(channel.getUrl(), serializationType) instanceof OptimizedSerialization) { - argNum = in.readInt(); - } + int argNum = in.readInt(); if (argNum >= 0) { if (argNum == 0) { pts = DubboCodec.EMPTY_CLASS_ARRAY; diff --git a/dubbo-rpc/dubbo-rpc-default/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java b/dubbo-rpc/dubbo-rpc-default/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java index 6b588190b60..3e5fd8944f1 100644 --- a/dubbo-rpc/dubbo-rpc-default/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java +++ b/dubbo-rpc/dubbo-rpc-default/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/DubboCodec.java @@ -181,15 +181,13 @@ protected void encodeRequestData(Channel channel, ObjectOutput out, Object data) // NOTICE modified by lishen // TODO - if (getSerialization(channel) instanceof OptimizedSerialization) { - if (!containComplexArguments(inv)) { - out.writeInt(inv.getParameterTypes().length); - } else { - out.writeInt(-1); - } + if (getSerialization(channel) instanceof OptimizedSerialization && !containComplexArguments(inv)) { + out.writeInt(inv.getParameterTypes().length); } else { + out.writeInt(-1); out.writeUTF(ReflectUtils.getDesc(inv.getParameterTypes())); } + Object[] args = inv.getArguments(); if (args != null) for (int i = 0; i < args.length; i++){