mirror of
https://github.com/duanhf2012/origin.git
synced 2026-03-02 03:04:49 +08:00
优化recover
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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",¶m, func(reply *Param, err error) {
|
slf.AsyncCall("TestService1.RPC_Test1",¶m, 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",¶m, func(reply *Param, err error) {
|
err := slf.AsyncCall("TestService1.RPC_Test",¶m, 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....")
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user