优化recover

This commit is contained in:
duanhf2012
2020-04-01 21:08:23 +08:00
parent 7fdfbb587e
commit 269a999b58
4 changed files with 26 additions and 15 deletions

View File

@@ -85,7 +85,7 @@ func (slf *EventProcessor) GetEventReciver() IEventProcessor{
func (slf *EventProcessor) EventHandler(processor IEventProcessor,ev *Event) { func (slf *EventProcessor) EventHandler(processor IEventProcessor,ev *Event) {
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
buf := make([]byte, 40960) buf := make([]byte, 4096)
l := runtime.Stack(buf, false) l := runtime.Stack(buf, false)
err := fmt.Errorf("%v: %s", r, buf[:l]) err := fmt.Errorf("%v: %s", r, buf[:l])
log.Error("core dump info:%+v\n",err) log.Error("core dump info:%+v\n",err)

View File

@@ -22,10 +22,11 @@ type TestService2 struct {
type TestServiceCall struct { type TestServiceCall struct {
service.Service service.Service
dbModule sysmodule.DBModule dbModule sysmodule.DBModule
param *Param
} }
func init(){ func init(){
node.Setup(&TestService1{},&TestService2{},&TestServiceCall{}) node.Setup(&TestService1{},&TestService2{},&TestServiceCall{param:&Param{}})
} }
type Module1 struct{ type Module1 struct{
@@ -91,7 +92,7 @@ func (slf *Module4) OnRelease() {
} }
func (slf *TestServiceCall) OnInit() error { 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) slf.AfterFunc(time.Second*1,slf.Test)
moduleid1,_ = slf.AddModule(&Module1{}) moduleid1,_ = slf.AddModule(&Module1{})
moduleid2,_ = slf.AddModule(&Module2{}) moduleid2,_ = slf.AddModule(&Module2{})
@@ -123,41 +124,50 @@ type Param struct {
var index int var index int
func (slf *TestServiceCall) Test(){ func (slf *TestServiceCall) Test(){
index += 1 index += 1
var param Param //var param *Param
param:=&Param{}
param.A = 2342342341 param.A = 2342342341
param.B = "xxxxxxxxxxxxxxxxxxxxxxx" param.B = "xxxxxxxxxxxxxxxxxxxxxxx"
param.Pa = []string{"ccccc","asfsdfsdaf","bbadfsdf","ewrwefasdf","safsadfka;fksd"} param.Pa = []string{"ccccc","asfsdfsdaf","bbadfsdf","ewrwefasdf","safsadfka;fksd"}
param.Index = index param.Index = index
/*
slf.AsyncCall("TestService1.RPC_Test1",&param, func(reply *Param, err error) { slf.AsyncCall("TestService1.RPC_Test1",&param, func(reply *Param, err error) {
fmt.Print(reply,"\n") 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(){ func (slf *TestServiceCall) OnRelease(){
fmt.Print("OnRelease") fmt.Print("OnRelease")
} }
func (slf *TestServiceCall) Run(){ func (slf *TestServiceCall) Run(){
//var ret int //var ret int
var input int = 1 var input int = 10000
//bT := time.Now() // 开始时间 bT := time.Now() // 开始时间
//err := slf.Call("TestServiceCall.RPC_Test",&ret,&input) //err := slf.Call("TestServiceCall.RPC_Test",&ret,&input)
for i:=input;i>=0;i--{ for i:=input;i>=0;i--{
var param Param var param Param
param.A = 2342342341 param.A = 2342342341
param.B = "xxxxxxxxxxxxxxxxxxxxxxx" param.B = "xxxxxxxxxxxxxxxxxxxxxxx"
param.Pa = []string{"ccccc","asfsdfsdaf","bbadfsdf","ewrwefasdf","safsadfka;fksd"} //param.Pa = []string{"ccccc","asfsdfsdaf","bbadfsdf","ewrwefasdf","safsadfka;fksd"}
param.Index = i param.Index = i
if param.Index == 0 { if param.Index == 0 {
fmt.Print(".......................\n") fmt.Print(".......................\n")
} }
err := slf.AsyncCall("TestService1.RPC_Test",&param, func(reply *Param, err error) { err := slf.AsyncCall("TestService1.RPC_Test",&param, func(reply *Param, err error) {
log.Debug(" index %d ,err %+v",reply.Index,err) 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 { if err != nil {
fmt.Printf("x333333333333:%+v",err) fmt.Printf("x333333333333:%+v",err)
} }
} }
fmt.Print("finsh....") fmt.Print("finsh....")

View File

@@ -171,7 +171,7 @@ func (slf *RpcHandler) GetRpcResponeChan() chan *Call{
func (slf *RpcHandler) HandlerRpcResponeCB(call *Call){ func (slf *RpcHandler) HandlerRpcResponeCB(call *Call){
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
buf := make([]byte, LenStackBuf) buf := make([]byte, 4096)
l := runtime.Stack(buf, false) l := runtime.Stack(buf, false)
err := fmt.Errorf("%v: %s\n", r, buf[:l]) err := fmt.Errorf("%v: %s\n", r, buf[:l])
log.Error("core dump info:%+v",err) 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) { func (slf *RpcHandler) HandlerRpcRequest(request *RpcRequest) {
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
buf := make([]byte, LenStackBuf) buf := make([]byte, 4096)
l := runtime.Stack(buf, false) l := runtime.Stack(buf, false)
err := fmt.Errorf("%v: %s", r, buf[:l]) 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") rpcErr := RpcError("call error : core dumps")
request.requestHandle(nil,&rpcErr) if request.requestHandle!=nil {
request.requestHandle(nil,&rpcErr)
}
} }
}() }()

View File

@@ -124,7 +124,7 @@ func (slf *Service) GetName() string{
func (slf *Service) Release(){ func (slf *Service) Release(){
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
buf := make([]byte, 40960) buf := make([]byte, 4096)
l := runtime.Stack(buf, false) l := runtime.Stack(buf, false)
err := fmt.Errorf("%v: %s", r, buf[:l]) err := fmt.Errorf("%v: %s", r, buf[:l])
log.Error("core dump info:%+v\n",err) log.Error("core dump info:%+v\n",err)