From 01e6e52265a4f22ae9f42be3b4d13928fd4d9af8 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期二, 24 九月 2019 10:34:46 +0800 Subject: [PATCH] 追踪--- --- ruleserver/ruleToformula.go | 24 +++++++++++++++++++++++- 1 files changed, 23 insertions(+), 1 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 7634abd..5e00666 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -6,6 +6,7 @@ "sort" "strconv" "strings" + "sync" "time" "basic.com/pubsub/protomsg.git" @@ -111,8 +112,15 @@ Sort int32 } +var rw sync.RWMutex // 璇诲啓閿� + // 瀵瑰崟甯у浘鍍忕殑鍒ゆ柇 thisSdkDatas 褰撳墠浼犲叆鐨勮繖甯ф暟鎹紝cacheSdkData 瀹氭椂鍣ㄩ噷缂撳瓨鐨勪竴甯ф暟鎹� 娌℃湁灏辫繑鍥瀗il (thisSdkDatas SdkDatas, cacheSdkDatas SdkDatas) func Judge(args *SdkDatas, message *protomsg.SdkMessage) { + defer func() { + if err := recover(); err != nil { + logger.Error("瑙勫垯妯″潡鍎跨殑寮傚父鎹曡幏锛�",err) + } + }() if len(args.Sdkdata) > 0 { // 鎷垮埌鏈憚鍍忔満鐨勫尯鍩� cameraPolygons := GetPolygons(args.CameraId) @@ -420,6 +428,7 @@ logger.Info("------------------------------------------褰撳墠鏄仈鍔ㄤ换鍔★紝瑙勫垯鏄細", groupRule.GroupText) var flag bool = true var timeEle = TimeElement{N: 2, InitN: 2, GroupId: groupRule.GroupId} + rw.Lock() for k, timeEle1 := range TimeEleList { if k == groupRule.GroupId { flag = false // 宸茬粡鏈変簡杩欎釜瀹氭椂鍣ㄥ氨缃负false 涓嶅啀鏂板 @@ -437,6 +446,7 @@ // 寰楀嚭杩欑粍瀹屾暣瑙勫垯閲屾秹鍙婂埌鍑犱釜鎽勫儚鏈猴紝鍐冲畾鐫�鏁扮粍閲屾湁鍑犱釜缁撴瀯浣�,鍘婚噸娣诲姞鏂瑰紡 for j := 0; j < len(groupRule.Rules); j++ { var flag1 bool = true + logger.Info("瑙勫垯缁勪俊鎭細",groupRule.Rules[j].CameraId) for _, ruleRes := range TimeEleList[groupRule.GroupId].RuleResults { logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁锛�",ruleRes.CameraId,ruleRes.Sort) if groupRule.Rules[j].CameraId == ruleRes.CameraId { @@ -448,7 +458,7 @@ } } } - logger.Info("") + rw.Unlock() // 寰�鏁扮粍閲岃祴鍊� isOk,labelTypes := RunRule(args, groupRule, taskId, message, label) if isOk { @@ -500,6 +510,7 @@ result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� if result.(bool) { logger.Info("___________________________________________________________________鑱斿姩浠诲姟鎶ヨ") + rw.RLock() if TimeEleList[groupRule.GroupId] != nil { // 鏋佸伓灏旀湁鎯呭喌浼氱瓑浜巒il锛屼笉鐭ラ亾涓哄暐锛屽仛涓垽鏂互闃插畷鏈� // 鎶婃暟缁勯噷缂撳瓨鐨勬暟鎹彇鍑烘潵涓�璧锋姤璀� label.LinkCache = []ResultMsg{} @@ -518,6 +529,7 @@ } } } + rw.RUnlock() } } } else { @@ -548,12 +560,14 @@ // va.Result = strconv.FormatBool(isOk) // } //} + rw.Lock() for k, _ := range TimeEleList { if k == groupRule.GroupId { delete(TimeEleList, k) logger.Debug("鍥犱负瀹氭椂鍣ㄧ殑涓�甯ф暟鎹粨鏋滀负false锛屽共鎺夊畾鏃跺櫒") } } + rw.Unlock() // 鍥犱负鏈抚鏁版嵁涓嶇鍚堣鍒欙紝鎵�浠ヤ篃涓嶇敤缁熻缁撴灉鏁扮粍閲岀殑涓滆タ } @@ -684,6 +698,12 @@ return LittleRuleResult{am.sdkName, rule.RuleWithPre + "" + "false", rule.Sort} } + } else if rule.SdkArgAlias == "" { + if am.targetNum > 0 { + return LittleRuleResult{am.sdkName, rule.RuleWithPre + "" + "true", rule.Sort} + } else { + return LittleRuleResult{am.sdkName, rule.RuleWithPre + "" + "false", rule.Sort} + } } else { return LittleRuleResult{} } @@ -700,6 +720,7 @@ if rule.SdkArgAlias == "duration" { // logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule) // 鍏堢湅鐪嬪畾鏃跺櫒鍏冪礌闃熷垪涓槸鍚︽湁杩欐潯瑙勫垯鐨勫畾鏃跺櫒,濡傛灉鏈夊氨涓嶈兘鍐嶆鍒涘缓浜� + rw.Lock() var flag bool = true for k, _ := range TimeEleList { if k == groupId+"+"+rule.Id { @@ -715,6 +736,7 @@ TimeEleList[groupId+"+"+rule.Id] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互褰撳墠鎸佺画鏃堕棿灏忚鍒檌d涓洪敭 logger.Info("鍒涘缓浜嗚鏁板櫒") } + rw.Unlock() } } } -- Gitblit v1.8.0