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 +++++++---
main.go | 2 +-
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/main.go b/main.go
index 4996087..e8f5027 100644
--- a/main.go
+++ b/main.go
@@ -50,7 +50,7 @@
middleware.InitUserConn()
v1.InitCodeServiceConn()
- middleware.InitRefreshUserManager(1, 5, 3600)
+ middleware.InitRefreshUserManager(2, 1, 120)
middleware.RunRefreshUser() ///瀹氭椂瀵规椿璺冪敤鎴锋洿鏂扮敤鎴疯鎯�
logx.Error(server.ListenAndServe().Error())
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