ソースを参照

@author liuqing
@commit 在重启 goroutine 之前加入退避等待

lq 3 ヶ月 前
コミット
2ee5aac8e2

+ 1 - 0
cloud/ipolesvr/bizalarm.go

@@ -71,6 +71,7 @@ func (o *BizAlarmMgr) PushData(value *BizValue) {
 func (o *BizAlarmMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("BizAlarmMgr.Handler发生异常:%s", string(debug.Stack()))
 		}

+ 1 - 0
cloud/ipolesvr/cableGuardianHandler.go

@@ -68,6 +68,7 @@ func (o *cableGuardianHandler) HandlerData(m mqtt.Message) {
 func (o *cableGuardianHandler) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("cableGuardianHandler.Handler:%v发生异常:%s", args, string(debug.Stack()))
 		}

+ 1 - 0
cloud/ipolesvr/chzbconcentrator.go

@@ -76,6 +76,7 @@ func (o *ChZigbeeConcentrator) HandleQueue() {
 	defer func() {
 		if err := recover(); err != nil {
 			logrus.Error("ChZigbeeConcentrator.HandleQueue发生异常:", string(debug.Stack()))
+			time.Sleep(5 * time.Second)
 			go o.HandleQueue()
 		}
 	}()

+ 1 - 0
cloud/ipolesvr/chzbconcentratormgr.go

@@ -60,6 +60,7 @@ func (o *ChzbConcentratorMgr) HandlerData(m mqtt.Message) {
 func (o *ChzbConcentratorMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("ChzbConcentratorMgr.Handler发生异常:%v", err)
 			logrus.Errorf("ChzbConcentratorMgr.Handler发生异常,堆栈信息:%s", string(debug.Stack()))

+ 1 - 0
cloud/ipolesvr/cltledmgr.go

@@ -51,6 +51,7 @@ func (o *CltLedMgr) HandlerData(m mqtt.Message) {
 func (o *CltLedMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("CltLedMgr.Handler发生异常:%v", err)
 			logrus.Errorf("CltLedMgr.Handler发生异常,堆栈信息:%s", string(debug.Stack()))

+ 1 - 0
cloud/ipolesvr/datastat.go

@@ -61,6 +61,7 @@ func StatData(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Error("StatData发生异常:", err)
 			logrus.Error("StatData发生异常,堆栈:", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(StatData, 1)
 		}
 	}()

+ 1 - 0
cloud/ipolesvr/eventmgr.go

@@ -52,6 +52,7 @@ func (o *EventMgr) PushEvent(eo *EventObject) {
 func (o *EventMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("EventMgr.Handler发生异常:%s", string(debug.Stack()))
 		}

+ 1 - 0
cloud/ipolesvr/gwhandler.go

@@ -66,6 +66,7 @@ func (o *GwHandler) HandlerData(m mqtt.Message) {
 func (o *GwHandler) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("GwHandler.Handler:%v发生异常:%s", args, string(debug.Stack()))
 		}

+ 1 - 0
cloud/ipolesvr/hlzbconcentrator.go

@@ -74,6 +74,7 @@ func (o *HlZigbeeConcentrator) HandleQueue() {
 	defer func() {
 		if err := recover(); err != nil {
 			logrus.Error("HlZigbeeConcentrator.HandleQueue发生异常:", string(debug.Stack()))
+			time.Sleep(5 * time.Second)
 			go o.HandleQueue()
 		}
 	}()

+ 1 - 0
cloud/ipolesvr/hlzbconcentratormgr.go

@@ -53,6 +53,7 @@ func (o *HlZigbeeConcentratorMgr) HandlerData(m mqtt.Message) {
 func (o *HlZigbeeConcentratorMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("HlZigbeeConcentratorMgr.Handler发生异常:%v", err)
 			logrus.Errorf("HlZigbeeConcentratorMgr.Handler发生异常,堆栈信息:%s", string(debug.Stack()))

+ 1 - 0
cloud/ipolesvr/ipcmgr.go

@@ -49,6 +49,7 @@ func (o *IPCMgr) SubscribeTopics() {
 func (o *IPCMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("IPCMgr.Handler发生异常:%v", err)
 			logrus.Errorf("IPCMgr.Handler发生异常:%s", string(debug.Stack()))

+ 1 - 0
cloud/ipolesvr/itsmgr.go

@@ -124,6 +124,7 @@ func (o *ItsMgr) HandlerTpItsVehicleStatic(m *mqtt.Message) {
 func (o *ItsMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("ItsMgr.Handler发生异常:%v", err)
 			logrus.Errorf("ItsMgr.Handler发生异常:%s", string(debug.Stack()))

+ 1 - 0
cloud/ipolesvr/lampstrategy.go

@@ -41,6 +41,7 @@ type LampStrategyMgr struct {
 func (o *LampStrategyMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("LampStrategyMgr.Handler发生异常:%s", string(debug.Stack()))
 		}

+ 1 - 0
cloud/ipolesvr/mbdevhandler.go

@@ -62,6 +62,7 @@ func (o *ModbusDeviceHandler) HandlerData(m mqtt.Message) {
 func (o *ModbusDeviceHandler) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("ModbusDeviceHandler.Handler发生异常:%s", string(debug.Stack()))
 		}

+ 1 - 0
cloud/ipolesvr/radarhandler.go

@@ -50,6 +50,7 @@ func (o *radarHandler) HandlerData(m mqtt.Message) {
 func (o *radarHandler) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("radarHandler.Handler:%v发生异常:%s", args, string(debug.Stack()))
 		}

+ 1 - 0
cloud/ipolesvr/sosmgr.go

@@ -43,6 +43,7 @@ func (o *SosMgr) SubscribeTopics() {
 func (o *SosMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("SosMgr.Handler发生异常:%s", string(debug.Stack()))
 		}

+ 2 - 0
cloud/ipolesvr/srsmgr.go

@@ -128,6 +128,7 @@ func (o *SrsMgr) QueryChannel(client *resty.Client) *QueryChannel {
 func (o *SrsMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("GB28181Mgr.Handler发生异常:%s", string(debug.Stack()))
 		}
@@ -168,6 +169,7 @@ func (o *SrsMgr) Handler(args ...interface{}) interface{} {
 func (o *SrsMgr) StartWeb(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.StartWeb, args)
 			logrus.Errorf("SrsMgr.StartWeb发生异常:%v", err)
 			logrus.Errorf("SrsMgr.StartWeb发生异常,堆栈信息:%s", string(debug.Stack()))

+ 1 - 0
cloud/ipolesvr/ymlampcontrollermgr.go

@@ -64,6 +64,7 @@ func (o *YMLampControllerMgr) Stop() {
 func (o *YMLampControllerMgr) Handler(args ...interface{}) interface{} {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(time.Second)
 			gopool.Add(o.Handler, args)
 			logrus.Errorf("YMLampControllerMgr.Handler发生异常:%v", err)
 			logrus.Errorf("YMLampControllerMgr.Handler发生异常,堆栈信息:%s", string(debug.Stack()))

+ 1 - 0
cloud/websvr/controllers/eventmgr.go

@@ -53,6 +53,7 @@ func (o *EventMgr) Update(code string) {
 func (o *EventMgr) Handler() {
 	defer func() {
 		if err := recover(); err != nil {
+			time.Sleep(5 * time.Second)
 			go o.Handler()
 			beego.Error(fmt.Sprintf("EventMgr.Handler发生异常:%v", err))
 			beego.Error("EventMgr.Handler发生异常:%s", string(debug.Stack()))

+ 1 - 0
edge/camera/ipc_device.go

@@ -259,6 +259,7 @@ func (o *LcDevice) Handle() {
 		if err := recover(); err != nil {
 			logrus.Errorf("LcDevice.Handle发生异常:%v", err)
 			logrus.Errorf("LcDevice.Handle发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(5 * time.Second)
 			go o.Handle()
 		}
 	}()

+ 3 - 2
edge/camera/mqttmgr.go

@@ -36,7 +36,7 @@ type MQTTMgr struct {
 	Queue *util.MlQueue
 }
 
-//建两个client
+// 建两个client
 func _newMQTTMgr() *MQTTMgr {
 	mgr := &MQTTMgr{
 		Queue: util.NewQueue(2000),
@@ -117,7 +117,7 @@ func (o *MQTTMgr) Publish(topic string, payload string, qos mqtt.QOS, tp OptType
 	o.Queue.Put(&msg)
 }
 
-//发布低
+// 发布低
 func (o *MQTTMgr) _publish(msg *MQTTMessage) error {
 	var err error
 	switch msg.tp {
@@ -158,6 +158,7 @@ func (o *MQTTMgr) MQTTMessageHandle(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常:%v", err)
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.MQTTMessageHandle, args)
 		}
 	}()

+ 1 - 0
edge/ipole/concentrator.go

@@ -280,6 +280,7 @@ func (o *Concentrator) Handle() {
 		if err := recover(); err != nil {
 			logrus.Errorf("Concentrator.Handle发生异常:%v", err)
 			logrus.Errorf("Concentrator.Handle发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(5 * time.Second)
 			go o.Handle()
 		}
 	}()

+ 1 - 0
edge/ipole/modbusrtu.go

@@ -153,6 +153,7 @@ func (o *ModbusRtu) HandleData() {
 		if err := recover(); err != nil {
 			logrus.Error("ModbusRtu.HandleData:panic:", err)
 			logrus.Error("stack:", string(debug.Stack()))
+			time.Sleep(5 * time.Second)
 			go o.HandleData()
 		}
 	}()

+ 1 - 0
edge/ipole/mqttmgr.go

@@ -152,6 +152,7 @@ func (o *MQTTMgr) MQTTMessageHandle(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常:%v", err)
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.MQTTMessageHandle, args)
 		}
 	}()

+ 1 - 0
edge/ipole/ym485.go

@@ -162,6 +162,7 @@ func (o *YmLampController) HandleData() {
 		if err := recover(); err != nil {
 			logrus.Error("YmLampController.HandleData:panic:", err)
 			logrus.Error("stack:", string(debug.Stack()))
+			time.Sleep(5 * time.Second)
 			go o.HandleData()
 		}
 	}()

+ 1 - 0
edge/its/datamgr.go

@@ -170,6 +170,7 @@ func (o *ITSDeviceMgr) Handle(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("ITSDeviceMgr.HandleData发生异常:%v", err)
 			logrus.Errorf("ITSDeviceMgr.HandleData发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.Handle, args)
 		}
 	}()

+ 1 - 0
edge/its/mqttmgr.go

@@ -151,6 +151,7 @@ func (o *MQTTMgr) MQTTMessageHandle(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常:%v", err)
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.MQTTMessageHandle, args)
 		}
 	}()

+ 2 - 1
edge/its/websvr.go

@@ -3,7 +3,6 @@ package main
 import (
 	"context"
 	"errors"
-	"fmt"
 	"net/http"
 	"runtime/debug"
 	"strconv"
@@ -156,6 +155,7 @@ func (o *WebSvr) Handle(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("WebSvr.StartSvr发生异常:%v", err)
 			logrus.Errorf("WebSvr.StartSvr发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.StartSvr, args)
 		}
 	}()
@@ -197,6 +197,7 @@ func (o *WebSvr) StartSvr(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("WebSvr.StartSvr发生异常:%v", err)
 			logrus.Errorf("WebSvr.StartSvr发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.StartSvr, args)
 		}
 	}()

+ 1 - 0
edge/its_win/mqttmgr.go

@@ -151,6 +151,7 @@ func (o *MQTTMgr) MQTTMessageHandle(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常:%v", err)
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.MQTTMessageHandle, args)
 		}
 	}()

+ 2 - 1
edge/its_win/websvr.go

@@ -3,7 +3,6 @@ package main
 import (
 	"context"
 	"errors"
-	"fmt"
 	"net/http"
 	"runtime/debug"
 	"strconv"
@@ -156,6 +155,7 @@ func (o *WebSvr) Handle(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("WebSvr.StartSvr发生异常:%v", err)
 			logrus.Errorf("WebSvr.StartSvr发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.StartSvr, args)
 		}
 	}()
@@ -196,6 +196,7 @@ func (o *WebSvr) StartSvr(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("WebSvr.StartSvr发生异常:%v", err)
 			logrus.Errorf("WebSvr.StartSvr发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.StartSvr, args)
 		}
 	}()

+ 1 - 0
edge/led_screen/mqttmgr.go

@@ -158,6 +158,7 @@ func (o *MQTTMgr) MQTTMessageHandle(args ...interface{}) interface{} {
 		if err := recover(); err != nil {
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常:%v", err)
 			logrus.Errorf("MQTTMgr.MQTTMessageHandle发生异常,堆栈信息:%s", string(debug.Stack()))
+			time.Sleep(time.Second)
 			gopool.Add(o.MQTTMessageHandle, args)
 		}
 	}()