mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-26 16:54:52 +08:00
优化rpc错误返回
This commit is contained in:
@@ -135,13 +135,13 @@ type RpcRequest struct {
|
|||||||
Seq uint64 // sequence number chosen by client
|
Seq uint64 // sequence number chosen by client
|
||||||
ServiceMethod string // format: "Service.Method"
|
ServiceMethod string // format: "Service.Method"
|
||||||
NoReply bool //是否需要返回
|
NoReply bool //是否需要返回
|
||||||
|
|
||||||
//packbody
|
//packbody
|
||||||
InParam []byte
|
InParam []byte
|
||||||
|
|
||||||
|
//other data
|
||||||
localReply interface{}
|
localReply interface{}
|
||||||
localParam interface{} //本地调用的参数列表
|
localParam interface{} //本地调用的参数列表
|
||||||
requestHandle RequestHandler
|
requestHandle RequestHandler
|
||||||
|
|
||||||
callback *reflect.Value
|
callback *reflect.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -115,22 +115,24 @@ func (agent *RpcAgent) Run() {
|
|||||||
for {
|
for {
|
||||||
data,err := agent.conn.ReadMsg()
|
data,err := agent.conn.ReadMsg()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug("read message: %v", err)
|
log.Error("read message: %v", err)
|
||||||
|
//will close tcpconn
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if processor==nil{
|
|
||||||
log.Error("Rpc Processor not set!")
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
var req RpcRequest
|
|
||||||
//解析head
|
//解析head
|
||||||
|
var req RpcRequest
|
||||||
err = processor.Unmarshal(data,&req)
|
err = processor.Unmarshal(data,&req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug("processor message: %v", err)
|
if req.Seq>0 {
|
||||||
agent.Close()
|
rpcError := RpcError("rpc Unmarshal request is error")
|
||||||
break
|
agent.WriteRespone(req.ServiceMethod,req.Seq,nil,&rpcError)
|
||||||
|
continue
|
||||||
|
}else{
|
||||||
|
log.Error("rpc Unmarshal request is error: %v", err)
|
||||||
|
//will close tcpconn
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//交给程序处理
|
//交给程序处理
|
||||||
@@ -141,6 +143,7 @@ func (agent *RpcAgent) Run() {
|
|||||||
log.Debug("rpc request req.ServiceMethod is error")
|
log.Debug("rpc request req.ServiceMethod is error")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
rpcHandler := agent.rpcserver.rpcHandleFinder.FindRpcHandler(serviceMethod[0])
|
rpcHandler := agent.rpcserver.rpcHandleFinder.FindRpcHandler(serviceMethod[0])
|
||||||
if rpcHandler== nil {
|
if rpcHandler== nil {
|
||||||
rpcError := RpcError(fmt.Sprintf("service method %s not config!", req.ServiceMethod))
|
rpcError := RpcError(fmt.Sprintf("service method %s not config!", req.ServiceMethod))
|
||||||
|
|||||||
Reference in New Issue
Block a user