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


   <!-- 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**:
   基于当前的 
[JSON-RPC](https://github.com/apache/dubbo-go-samples/tree/master/rpc/jsonrpc) 
示例,**将调用接口方法入参与出参都改造为 `struct` 后**,Server 端抛出异常,方法无法正常执行。
   Client 改造后方法
   ```
           logger.Infof("\n\n\nstart to test jsonrpc")
   
        user := &pkg.JsonRPCUser{
                ID: "A003",
        }
        user, err := userProvider.GetUser(context.TODO(), user)
   
        if err != nil {
                panic(err)
        }
        logger.Infof("response result: %v", user)
   ```
   Server 改造后方法
   ```
   func (u *UserProvider) GetUser(ctx context.Context, userID *User) (*User, 
error) {
        var (
                err  error
                user *User
        )
   
        gxlog.CInfo("userID:%#v", userID)
        user, err = u.getUser(userID.ID)
        if err == nil {
                gxlog.CInfo("rsp:%#v", user)
        }
        return user, err
   }
   ```
   Client 异常日志
   ```
   start to test jsonrpc
   2021-11-11T14:53:49.338+0800    WARN    proxy/proxy.go:215      result err: 
unexpected EOF
   panic: unexpected EOF
   ```
   Server 异常日志
   ```
   2021-11-11T15:02:15.525+0800    WARN    jsonrpc/server.go:81    
connection{local:127.0.0.1:20001, remote:127.0.0.1:59593} panic error:"reflect: 
Call using map[string]interface {} as type *pkg.User", debug stack:goroutine 
1684 [running]:
   runtime/debug.Stack(0x0, 0x0, 0x0)
           /usr/local/go/src/runtime/debug/stack.go:24 +0xa5
   
dubbo.apache.org/dubbo-go/v3/protocol/jsonrpc.(*Server).handlePkg.func1(0x5723fc8,
 0xc0003ec030)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/jsonrpc/server.go:82
 +0xd5
   panic(0x538c660, 0xc000947990)
           /usr/local/go/src/runtime/panic.go:971 +0x4c7
   reflect.Value.call(0xc0004b0600, 0xc000010250, 0x13, 0x55ec16f, 0x4, 
0xc000950ba0, 0x3, 0x4, 0x0, 0x0, ...)
           /usr/local/go/src/reflect/value.go:406 +0x1bba
   reflect.Value.Call(0xc0004b0600, 0xc000010250, 0x13, 0xc000950ba0, 0x3, 0x4, 
0x0, 0x0, 0x0)
           /usr/local/go/src/reflect/value.go:337 +0xcc
   
dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory.(*ProxyInvoker).Invoke(0xc0000e43f0,
 0x571a5f8, 0xc00038ab70, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/common/proxy/proxy_factory/default.go:145
 +0x8e5
   
dubbo.apache.org/dubbo-go/v3/registry/protocol.(*wrappedInvoker).Invoke(0xc00052a840,
 0x571a5c0, 0xc000950b40, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/registry/protocol/protocol.go:452
 +0x6e
   dubbo.apache.org/dubbo-go/v3/filter/gshutdown.(*Filter).Invoke(0xc000466be0, 
0x571a5c0, 0xc000950b40, 0x571aba8, 0xc00052a840, 0x57267e0, 0xc000e53110, 0x0, 
0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/filter/gshutdown/filter.go:56
 +0x20f
   
dubbo.apache.org/dubbo-go/v3/protocol/protocolwrapper.(*FilterInvoker).Invoke(0xc00052a870,
 0x571a5c0, 0xc000950b40, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/protocolwrapper/protocol_filter_wrapper.go:119
 +0xb4
   dubbo.apache.org/dubbo-go/v3/filter/execlmt.(*Filter).Invoke(0xc000010050, 
0x571a5c0, 0xc000950b40, 0x571aac8, 0xc00052a870, 0x57267e0, 0xc000e53110, 0x0, 
0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/filter/execlmt/filter.go:101
 +0x4e2
   
dubbo.apache.org/dubbo-go/v3/protocol/protocolwrapper.(*FilterInvoker).Invoke(0xc00052a8a0,
 0x571a5c0, 0xc000950b40, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/protocolwrapper/protocol_filter_wrapper.go:119
 +0xb4
   
dubbo.apache.org/dubbo-go/v3/filter/generic.(*ServiceFilter).Invoke(0x5fbfd28, 
0x571a5c0, 0xc000950b40, 0x571aac8, 0xc00052a8a0, 0x57267e0, 0xc000e53110, 0x0, 
0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/filter/generic/service_filter.go:51
 +0x1029
   
dubbo.apache.org/dubbo-go/v3/protocol/protocolwrapper.(*FilterInvoker).Invoke(0xc00052a8d0,
 0x571a5c0, 0xc000950b40, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/protocolwrapper/protocol_filter_wrapper.go:119
 +0xb4
   dubbo.apache.org/dubbo-go/v3/filter/tps.(*Filter).Invoke(0x5fbfd28, 
0x571a5c0, 0xc000950b40, 0x571aac8, 0xc00052a8d0, 0x57267e0, 0xc000e53110, 0x0, 
0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/filter/tps/filter.go:69
 +0x41d
   
dubbo.apache.org/dubbo-go/v3/protocol/protocolwrapper.(*FilterInvoker).Invoke(0xc00052a900,
 0x571a5c0, 0xc000950b40, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/protocolwrapper/protocol_filter_wrapper.go:119
 +0xb4
   dubbo.apache.org/dubbo-go/v3/filter/accesslog.(*Filter).Invoke(0xc000010218, 
0x571a5c0, 0xc000950b40, 0x571aac8, 0xc00052a900, 0x57267e0, 0xc000e53110, 0x0, 
0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/filter/accesslog/filter.go:89
 +0x1b7
   
dubbo.apache.org/dubbo-go/v3/protocol/protocolwrapper.(*FilterInvoker).Invoke(0xc00052a930,
 0x571a5c0, 0xc000950b40, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/protocolwrapper/protocol_filter_wrapper.go:119
 +0xb4
   dubbo.apache.org/dubbo-go/v3/filter/token.(*Filter).Invoke(0x5fbfd28, 
0x571a5c0, 0xc000950b40, 0x571aac8, 0xc00052a930, 0x57267e0, 0xc000e53110, 0x0, 
0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/filter/token/filter.go:58
 +0x57c
   
dubbo.apache.org/dubbo-go/v3/protocol/protocolwrapper.(*FilterInvoker).Invoke(0xc00052a960,
 0x571a5c0, 0xc000950b40, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/protocolwrapper/protocol_filter_wrapper.go:119
 +0xb4
   dubbo.apache.org/dubbo-go/v3/filter/metrics.(*Filter).Invoke(0xc0004aaa38, 
0x571a5c0, 0xc000950b40, 0x571aac8, 0xc00052a960, 0x57267e0, 0xc000e53110, 0x0, 
0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/filter/metrics/filter.go:49
 +0xb2
   
dubbo.apache.org/dubbo-go/v3/protocol/protocolwrapper.(*FilterInvoker).Invoke(0xc00052a990,
 0x571a5c0, 0xc000950b40, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/protocolwrapper/protocol_filter_wrapper.go:119
 +0xb4
   dubbo.apache.org/dubbo-go/v3/filter/echo.(*Filter).Invoke(0x5fbfd28, 
0x571a5c0, 0xc000950b40, 0x571aac8, 0xc00052a990, 0x57267e0, 0xc000e53110, 0x0, 
0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/filter/echo/filter.go:54
 +0x47c
   
dubbo.apache.org/dubbo-go/v3/protocol/protocolwrapper.(*FilterInvoker).Invoke(0xc00052a9c0,
 0x571a5c0, 0xc000950b40, 0x57267e0, 0xc000e53110, 0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/protocolwrapper/protocol_filter_wrapper.go:119
 +0xb4
   dubbo.apache.org/dubbo-go/v3/protocol/jsonrpc.serveRequest(0x571a5c0, 
0xc000950b40, 0xc00038a9f0, 0xc00096b200, 0x72, 0x200, 0x5723fc8, 0xc0003ec030, 
0x0, 0x0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/jsonrpc/server.go:349
 +0x9ce
   
dubbo.apache.org/dubbo-go/v3/protocol/jsonrpc.(*Server).handlePkg(0xc00007c180, 
0x5723fc8, 0xc0003ec030)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/jsonrpc/server.go:178
 +0xf6a
   
dubbo.apache.org/dubbo-go/v3/protocol/jsonrpc.(*Server).Start.func1.1(0x5723fc8,
 0xc0003ec030)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/jsonrpc/server.go:243
 +0x45
   dubbo.apache.org/dubbo-go/v3/protocol/jsonrpc.accept.func1(0x5723fc8, 
0xc0003ec030, 0xc0000d80b0)
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/jsonrpc/server.go:227
 +0x85
   created by dubbo.apache.org/dubbo-go/v3/protocol/jsonrpc.accept
           
/Users/phil/go/pkg/mod/dubbo.apache.org/dubbo-go/[email protected]/protocol/jsonrpc/server.go:216
 +0x3e8
   
   ```
   
   **What you expected to happen**:
   
   Server 正常执行 `GetUser` 方法,并返回结果,Client 正常输出日志信息
   
   **How to reproduce it (as minimally and precisely as possible)**:
   -
   
   **Anything else we need to know?**:
   
   可能原因:Dubbo-go 服务代理执行时,参数类型没有得到正确解析。
   
   
   


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