From 1bd5a7bed8212e7739fb996a9f4f56118f47c488 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期二, 31 十月 2023 17:57:26 +0800 Subject: [PATCH] fix dead lock --- middleware/refresh_user.go | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/middleware/refresh_user.go b/middleware/refresh_user.go index c9b5b44..54ebd3e 100644 --- a/middleware/refresh_user.go +++ b/middleware/refresh_user.go @@ -91,16 +91,20 @@ select { case <-ticker.C: nowTs := time.Now().Unix() + var users []*CurrentActiveUser r.mu.RLock() - for userID, user := range r.Users { + for _, user := range r.Users { + users = append(users, user) + } + r.mu.RUnlock() + for _, user := range users { if nowTs-user.lastActiveTime > r.expireSecond { r.mu.Lock() logx.Infof("removed in active user:%+v", user) - delete(r.Users, userID) + delete(r.Users, user.UserID) r.mu.Unlock() } } - r.mu.RUnlock() case <-r.ctx.Done(): fmt.Println("stop RemoveInActiveUser.") return -- Gitblit v1.8.0