|
|
@@ -271,6 +271,13 @@ func testAllChannels(notify bool) error {
|
|
|
disableThreshold = 10000000 // a impossible value
|
|
|
}
|
|
|
gopool.Go(func() {
|
|
|
+ // 使用 defer 确保无论如何都会重置运行状态,防止死锁
|
|
|
+ defer func() {
|
|
|
+ testAllChannelsLock.Lock()
|
|
|
+ testAllChannelsRunning = false
|
|
|
+ testAllChannelsLock.Unlock()
|
|
|
+ }()
|
|
|
+
|
|
|
for _, channel := range channels {
|
|
|
isChannelEnabled := channel.Status == common.ChannelStatusEnabled
|
|
|
tik := time.Now()
|
|
|
@@ -305,9 +312,7 @@ func testAllChannels(notify bool) error {
|
|
|
channel.UpdateResponseTime(milliseconds)
|
|
|
time.Sleep(common.RequestInterval)
|
|
|
}
|
|
|
- testAllChannelsLock.Lock()
|
|
|
- testAllChannelsRunning = false
|
|
|
- testAllChannelsLock.Unlock()
|
|
|
+
|
|
|
if notify {
|
|
|
service.NotifyRootUser(dto.NotifyTypeChannelTest, "通道测试完成", "所有通道测试已完成")
|
|
|
}
|