Prechádzať zdrojové kódy

refactor: do not collect data during data processing

HeWang 6 mesiacov pred
rodič
commit
985b2351e6

+ 7 - 14
aarch64/pjibot_guide/master/package/service/produce_window.go

@@ -37,6 +37,9 @@ func PrepareTimeWindowProducerQueue() {
 					Node:  commonConfig.RosNode,
 					Topic: topic,
 					Callback: func(data *std_msgs.UInt8) {
+						if !canCollect() {
+							return
+						}
 						subscribersTimeMutexes[i].Lock()
 						if time.Since(subscribersTimes[i]).Seconds() > triggerInterval {
 							subscribersMutexes[i].Lock()
@@ -47,16 +50,9 @@ func PrepareTimeWindowProducerQueue() {
 								faultLabel = f(data)
 								if faultLabel != "" {
 									subscribersTimes[i] = time.Now()
-									if canCollect() {
-										c_log.GlobalLogger.Errorf("触发事件【%v】,开始采集。", faultLabel)
-										saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
-										break
-									} else {
-										if time.Since(logTime).Seconds() > logInterval {
-											logTime = time.Now()
-											c_log.GlobalLogger.Errorf("触发事件【%v】,但当前周期内采集数量已超限额,不再采集。", faultLabel)
-										}
-									}
+									c_log.GlobalLogger.Errorf("触发事件【%v】,开始采集。", faultLabel)
+									saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
+									break
 								}
 							}
 							subscribersMutexes[i].Unlock()
@@ -173,10 +169,7 @@ func canCollect() bool {
 		c_log.GlobalLogger.Info("采集数量已超过限额,当前周期内不再采集。", resp.Code)
 		return false
 	}
-	if len(entity.TimeWindowConsumerQueue) > 0 {
-		c_log.GlobalLogger.Info("存在正在处理的窗口,当前周期内不再采集。", resp.Code)
-		return false
-	}
+
 	c_log.GlobalLogger.Info("允许采集。")
 	return true
 }