From a0503c6e93b3bac1a5c0ac49ad636185cfb53e86 Mon Sep 17 00:00:00 2001 From: cooli Date: Thu, 15 Sep 2022 22:14:22 +0800 Subject: [PATCH] fix: deadlock caused by rwMutex in limiter mapper --- filter/adaptivesvc/limiter_mapper.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/filter/adaptivesvc/limiter_mapper.go b/filter/adaptivesvc/limiter_mapper.go index f4c2aac6aa..e9343ed6e1 100644 --- a/filter/adaptivesvc/limiter_mapper.go +++ b/filter/adaptivesvc/limiter_mapper.go @@ -58,6 +58,8 @@ func (m *limiterMapper) newAndSetMethodLimiter(url *common.URL, methodName strin ok bool ) m.rwMutex.Lock() + defer m.rwMutex.Unlock() + if l, ok = limiterMapperSingleton.mapper[key]; ok { return l, nil } @@ -68,7 +70,6 @@ func (m *limiterMapper) newAndSetMethodLimiter(url *common.URL, methodName strin return nil, ErrLimiterTypeNotFound } limiterMapperSingleton.mapper[key] = l - m.rwMutex.Unlock() return l, nil }