ma642 opened a new issue #1637:
URL: https://github.com/apache/dubbo-go/issues/1637


   <!-- Please use this template while reporting a bug and provide as much info 
as possible. Not doing so may result in your bug not being addressed in a 
timely manner. Thanks!
   
   -->
   
   
   **What happened**:
   We defined Java request with List<integer> and add null to the list, then 
server side(dubbo-go) get error when decode the value.
   java side:
   
   User user=new User();
   user.setId(400000);
   user.setUids(new ArrayList<>());
   user.getUids().add(null);
   User user1 = userProvider.GetUser(user);
   
   server side(dubbo-go):
   
   type (
        User struct {
                Id   int32
                Uids []int32
        }
   )
   
   The server side get error :
   2021-12-03T19:47:17.560+0800    ERROR   runtime/panic.go:965    
[session.handlePackage] panic session 
{server:TCP_SERVER:1:10.66.7.38:20002<->10.66.7.38:54018}: err=reflect: call of 
reflect.Value.Interface on zero Value
   goroutine 13 [running]:
   github.com/apache/dubbo-getty.(*session).handlePackage.func1(0x14000297b80, 
0x140006aff60)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/session.go:525 
+0x3f8
   panic(0x103610f40, 0x14000124f60)
           /usr/local/go/src/runtime/panic.go:965 +0x14c
   reflect.valueInterface(0x0, 0x0, 0x0, 0x1, 0x1035ba900, 0x14000715610)
           /usr/local/go/src/reflect/value.go:1021 +0x174
   reflect.Value.Interface(...)
           /usr/local/go/src/reflect/value.go:1016
   github.com/apache/dubbo-go-hessian2.ConvertSliceValueType(0x103871488, 
0x10359de40, 0x10359df00, 0x14000124f00, 0x97, 0x102bb492c, 0x140006aef48, 
0x102bb48f8, 0x140006aef48, 0x102bb490c)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/codec.go:469
 +0x458
   github.com/apache/dubbo-go-hessian2.unpackRefHolder(0x10359de40, 
0x1400071a8e8, 0x197, 0x103871488, 0x10359de40, 0x1400024f950, 0x140006aeff8, 
0x102bc5758)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/codec.go:420
 +0x4c
   github.com/apache/dubbo-go-hessian2.SetSlice(0x10359de40, 0x1400071a8e8, 
0x197, 0x10365cc20, 0x1400024f950, 0x0, 0x10359de40)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/codec.go:400
 +0x104
   github.com/apache/dubbo-go-hessian2.(*Decoder).decInstance(0x1400073c730, 
0x103871488, 0x1036de460, 0x1400004f900, 0x10417a6c0, 0x0, 0x0, 0x1400004f900)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/object.go:510
 +0x380
   github.com/apache/dubbo-go-hessian2.(*Decoder).decObject(0x1400073c730, 
0x60, 0x0, 0x0, 0x8, 0x140001a6db0)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/object.go:697
 +0x190
   github.com/apache/dubbo-go-hessian2.(*Decoder).DecodeValue(0x1400073c730, 
0x0, 0x0, 0x0, 0x1)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/decode.go:285
 +0x4d4
   github.com/apache/dubbo-go-hessian2.(*Decoder).decObject(0x1400073c730, 
0x43, 0x0, 0x0, 0x0, 0x17)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/object.go:656
 +0x5bc
   github.com/apache/dubbo-go-hessian2.(*Decoder).DecodeValue(0x1400073c730, 
0x140001af4a0, 0x1, 0xa, 0x1029d5ef0)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/decode.go:285
 +0x4d4
   github.com/apache/dubbo-go-hessian2.(*Decoder).Decode(0x1400073c730, 
0x140001d68c0, 0x17, 0xffffffffffffffff, 0x140001af4a0)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/decode.go:214
 +0x28
   
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.unmarshalRequestBody(0x14000218490,
 0x105, 0x105, 0x140001e2210, 0x0, 0x0)
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/hessian.go:244
 +0x2e8
   
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.HessianSerializer.Unmarshal(0x14000218490,
 0x105, 0x105, 0x140001e2210, 0x0, 0x0)
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/hessian.go:56
 +0x98
   
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.(*ProtocolCodec).Decode(0x1400024f800,
 0x140001e2210, 0x18, 0x1035e9280)
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/codec.go:186
 +0x138
   
dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.(*DubboPackage).Unmarshal(0x140001e2210,
 0x7, 0x7)
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/package.go:93
 +0xac
   
dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).decodeRequest(0x104178148,
 0x14000218360, 0x115, 0x115, 0x0, 0x104147e60, 0x1400069eca8, 0x102885e08)
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:189
 +0xd0
   
dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).Decode(0x104178148, 
0x14000218360, 0x115, 0x115, 0x1400069ed38, 0x102885aa4, 0x14000218360, 0x0, 
0x0, 0x115)
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:165
 +0x50
   
dubbo.apache.org/dubbo-go/v3/remoting/getty.(*RpcServerPackageHandler).Read(0x140005bc018,
 0x1038721d0, 0x14000297b80, 0x14000218360, 0x115, 0x115, 0x0, 0x0, 0x0, 0x0, 
...)
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/remoting/getty/readwriter.go:104
 +0x58
   github.com/apache/dubbo-getty.(*session).handleTCPPackage(0x14000297b80, 
0x0, 0x0)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/session.go:627 
+0x1f4
   github.com/apache/dubbo-getty.(*session).handlePackage(0x14000297b80)
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/session.go:549 
+0x78
   created by github.com/apache/dubbo-getty.(*session).run
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/session.go:503 
+0x240
   
   runtime.gopanic
           /usr/local/go/src/runtime/panic.go:965
   reflect.valueInterface
           /usr/local/go/src/reflect/value.go:1021
   reflect.Value.Interface
           /usr/local/go/src/reflect/value.go:1016
   github.com/apache/dubbo-go-hessian2.ConvertSliceValueType
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/codec.go:469
   github.com/apache/dubbo-go-hessian2.unpackRefHolder
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/codec.go:420
   github.com/apache/dubbo-go-hessian2.SetSlice
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/codec.go:400
   github.com/apache/dubbo-go-hessian2.(*Decoder).decInstance
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/object.go:510
   github.com/apache/dubbo-go-hessian2.(*Decoder).decObject
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/object.go:697
   github.com/apache/dubbo-go-hessian2.(*Decoder).DecodeValue
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/decode.go:285
   github.com/apache/dubbo-go-hessian2.(*Decoder).decObject
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/object.go:656
   github.com/apache/dubbo-go-hessian2.(*Decoder).DecodeValue
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/decode.go:285
   github.com/apache/dubbo-go-hessian2.(*Decoder).Decode
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/decode.go:214
   dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.unmarshalRequestBody
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/hessian.go:244
   dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.HessianSerializer.Unmarshal
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/hessian.go:56
   dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.(*ProtocolCodec).Decode
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/codec.go:186
   dubbo.apache.org/dubbo-go/v3/protocol/dubbo/impl.(*DubboPackage).Unmarshal
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/impl/package.go:93
   dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).decodeRequest
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:189
   dubbo.apache.org/dubbo-go/v3/protocol/dubbo.(*DubboCodec).Decode
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/dubbo/dubbo_codec.go:165
   dubbo.apache.org/dubbo-go/v3/remoting/getty.(*RpcServerPackageHandler).Read
           
/Users/develper/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/remoting/getty/readwriter.go:104
   github.com/apache/dubbo-getty.(*session).handleTCPPackage
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/session.go:627
   github.com/apache/dubbo-getty.(*session).handlePackage
           
/Users/develper/go/pkg/mod/github.com/apache/[email protected]/session.go:549
   
   
   **What you expected to happen**:
   A slice with some of zero value int32 as expected. []int32{0,.....}
   **How to reproduce it (as minimally and precisely as possible)**:
   
   **Anything else we need to know?**:
   A working around is to define []interface{} map to the List<Integer>.
   


-- 
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