From 9b87da1ee889d6717afdde34aebdd04774d3d067 Mon Sep 17 00:00:00 2001 From: dragondriver Date: Fri, 3 Sep 2021 11:53:29 +0800 Subject: [PATCH] Fix deadlock of channels time ticker (#7444) Signed-off-by: dragondriver --- internal/proxy/channels_time_ticker.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/internal/proxy/channels_time_ticker.go b/internal/proxy/channels_time_ticker.go index 2765f92875..458713864d 100644 --- a/internal/proxy/channels_time_ticker.go +++ b/internal/proxy/channels_time_ticker.go @@ -92,17 +92,18 @@ func (ticker *channelsTimeTickerImpl) tick() error { return err } + stats, err := ticker.getStatisticsFunc() + if err != nil { + log.Debug("Proxy channelsTimeTickerImpl failed to getStatistics", zap.Error(err)) + return nil + } + ticker.statisticsMtx.Lock() defer ticker.statisticsMtx.Unlock() ticker.currentsMtx.Lock() defer ticker.currentsMtx.Unlock() - stats, err := ticker.getStatisticsFunc() - if err != nil { - log.Debug("Proxy channelsTimeTickerImpl failed to getStatistics", zap.Error(err)) - } - for pchan := range ticker.currents { current := ticker.currents[pchan] stat, ok := stats[pchan]