优化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) {
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)

View File

@@ -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",&param, 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",&param, 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....")

View File

@@ -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)
}
}
}()

View File

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