From 269a999b58e512484650e0cb8a80d5dbf167e5aa Mon Sep 17 00:00:00 2001 From: duanhf2012 Date: Wed, 1 Apr 2020 21:08:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96recover?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- event/event.go | 2 +- example/main.go | 26 ++++++++++++++++++-------- rpc/rpchandler.go | 11 ++++++----- service/service.go | 2 +- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/event/event.go b/event/event.go index 729da07..a7b99eb 100644 --- a/event/event.go +++ b/event/event.go @@ -85,7 +85,7 @@ func (slf *EventProcessor) GetEventReciver() IEventProcessor{ func (slf *EventProcessor) EventHandler(processor IEventProcessor,ev *Event) { defer func() { if r := recover(); r != nil { - buf := make([]byte, 40960) + buf := make([]byte, 4096) l := runtime.Stack(buf, false) err := fmt.Errorf("%v: %s", r, buf[:l]) log.Error("core dump info:%+v\n",err) diff --git a/example/main.go b/example/main.go index 86322e2..7171bfe 100644 --- a/example/main.go +++ b/example/main.go @@ -22,10 +22,11 @@ type TestService2 struct { type TestServiceCall struct { service.Service dbModule sysmodule.DBModule + param *Param } func init(){ - node.Setup(&TestService1{},&TestService2{},&TestServiceCall{}) + node.Setup(&TestService1{},&TestService2{},&TestServiceCall{param:&Param{}}) } type Module1 struct{ @@ -91,7 +92,7 @@ func (slf *Module4) OnRelease() { } func (slf *TestServiceCall) OnInit() error { - slf.AfterFunc(time.Second*1,slf.Run) + //slf.AfterFunc(time.Second*1,slf.Run) slf.AfterFunc(time.Second*1,slf.Test) moduleid1,_ = slf.AddModule(&Module1{}) moduleid2,_ = slf.AddModule(&Module2{}) @@ -123,41 +124,50 @@ type Param struct { var index int func (slf *TestServiceCall) Test(){ index += 1 - var param Param + //var param *Param + param:=&Param{} param.A = 2342342341 param.B = "xxxxxxxxxxxxxxxxxxxxxxx" param.Pa = []string{"ccccc","asfsdfsdaf","bbadfsdf","ewrwefasdf","safsadfka;fksd"} param.Index = index +/* slf.AsyncCall("TestService1.RPC_Test1",¶m, func(reply *Param, err error) { fmt.Print(reply,"\n") }) - slf.AfterFunc(time.Second*1,slf.Test) + + */ + slf.Go("TestService1.RPC_Test",&slf.param) + //slf.AfterFunc(time.Second*1,slf.Test) } func (slf *TestServiceCall) OnRelease(){ fmt.Print("OnRelease") } func (slf *TestServiceCall) Run(){ //var ret int - var input int = 1 - //bT := time.Now() // 开始时间 + var input int = 10000 + bT := time.Now() // 开始时间 //err := slf.Call("TestServiceCall.RPC_Test",&ret,&input) for i:=input;i>=0;i--{ var param Param param.A = 2342342341 param.B = "xxxxxxxxxxxxxxxxxxxxxxx" - param.Pa = []string{"ccccc","asfsdfsdaf","bbadfsdf","ewrwefasdf","safsadfka;fksd"} + //param.Pa = []string{"ccccc","asfsdfsdaf","bbadfsdf","ewrwefasdf","safsadfka;fksd"} param.Index = i if param.Index == 0 { fmt.Print(".......................\n") } err := slf.AsyncCall("TestService1.RPC_Test",¶m, func(reply *Param, err error) { log.Debug(" index %d ,err %+v",reply.Index,err) + if reply.Index == 0 { + eT := time.Since(bT) // 从开始到当前所消耗的时间 + fmt.Print(err,eT.Milliseconds()) + fmt.Print("xxxx..................",eT,err,"\n") + } }) if err != nil { fmt.Printf("x333333333333:%+v",err) } - } fmt.Print("finsh....") diff --git a/rpc/rpchandler.go b/rpc/rpchandler.go index 5e26a50..fb8211a 100644 --- a/rpc/rpchandler.go +++ b/rpc/rpchandler.go @@ -171,7 +171,7 @@ func (slf *RpcHandler) GetRpcResponeChan() chan *Call{ func (slf *RpcHandler) HandlerRpcResponeCB(call *Call){ defer func() { if r := recover(); r != nil { - buf := make([]byte, LenStackBuf) + buf := make([]byte, 4096) l := runtime.Stack(buf, false) err := fmt.Errorf("%v: %s\n", r, buf[:l]) log.Error("core dump info:%+v",err) @@ -186,17 +186,18 @@ func (slf *RpcHandler) HandlerRpcResponeCB(call *Call){ } -var LenStackBuf int = 40960 func (slf *RpcHandler) HandlerRpcRequest(request *RpcRequest) { defer func() { if r := recover(); r != nil { - buf := make([]byte, LenStackBuf) + buf := make([]byte, 4096) l := runtime.Stack(buf, false) err := fmt.Errorf("%v: %s", r, buf[:l]) - log.Error("core dump info:%+v\n",err) + log.Error("Handler Rpc %s Core dump info:%+v\n",request.ServiceMethod,err) rpcErr := RpcError("call error : core dumps") - request.requestHandle(nil,&rpcErr) + if request.requestHandle!=nil { + request.requestHandle(nil,&rpcErr) + } } }() diff --git a/service/service.go b/service/service.go index f733bc8..f778055 100644 --- a/service/service.go +++ b/service/service.go @@ -124,7 +124,7 @@ func (slf *Service) GetName() string{ func (slf *Service) Release(){ defer func() { if r := recover(); r != nil { - buf := make([]byte, 40960) + buf := make([]byte, 4096) l := runtime.Stack(buf, false) err := fmt.Errorf("%v: %s", r, buf[:l]) log.Error("core dump info:%+v\n",err)