From 734c558aebe5a2d583e310d82c9fb407e7274f26 Mon Sep 17 00:00:00 2001 From: LiYuqing Date: Sat, 26 Nov 2022 12:52:16 +0800 Subject: [PATCH 1/2] Delete closed room --- engine/engine.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/engine/engine.go b/engine/engine.go index d832aa2..7fc2684 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -57,7 +57,7 @@ func (engine *Engine) Loop() { engine.State.ActivePeers = 0 engine.State.ClosedPeers = 0 - for _, pm := range engine.rooms.m { + for rid, pm := range engine.rooms.m { pm.RLock() ap, cp := 0, 0 for _, p := range pm.m { @@ -73,6 +73,7 @@ func (engine *Engine) Loop() { engine.State.ActiveRooms += 1 } else { engine.State.ClosedRooms += 1 + delete(engine.rooms.m, rid) } pm.RUnlock() } From a44015dfe439bbc03a7e22a900ee6ad73dd6348b Mon Sep 17 00:00:00 2001 From: LiYuqing Date: Mon, 28 Nov 2022 23:26:07 +0800 Subject: [PATCH 2/2] Better use Lock --- engine/engine.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/engine.go b/engine/engine.go index 7fc2684..18ef4f0 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -49,7 +49,7 @@ func BuildEngine(conf *Configuration) (*Engine, error) { func (engine *Engine) Loop() { for { - engine.rooms.RLock() + engine.rooms.Lock() engine.State.UpdatedAt = time.Now() engine.State.ActiveRooms = 0 @@ -78,7 +78,7 @@ func (engine *Engine) Loop() { pm.RUnlock() } - engine.rooms.RUnlock() + engine.rooms.Unlock() time.Sleep(engineStateLoopPeriod) } }