From 25965cdde74b60cc024f986268b00fa7498282c4 Mon Sep 17 00:00:00 2001 From: Giovanni Harting <539@idlegandalf.com> Date: Sat, 20 Aug 2022 16:03:39 +0200 Subject: [PATCH] use better demo locking to prevent double parsing --- csgo/demo_loader.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/csgo/demo_loader.go b/csgo/demo_loader.go index 356e3c5..2767e9f 100644 --- a/csgo/demo_loader.go +++ b/csgo/demo_loader.go @@ -240,10 +240,17 @@ func (dml *DemoMatchLoader) Setup(config *DemoMatchLoaderConfig) error { } func (dml *DemoMatchLoader) LoadDemo(demo *Demo) error { + if dml.IsLoading(demo) { + log.Infof("[DL] Skipping %s: parsing in progress", demo.ShareCode) + return nil + } + dml.lockDemo(demo) + select { case dml.parseDemo <- demo: return nil default: + dml.unlockDemo(demo) return fmt.Errorf("queue full") } } @@ -368,11 +375,6 @@ func (dml *DemoMatchLoader) demoWorker() { } func (dml *DemoMatchLoader) handleDemo(demo *Demo, apiKey string, rl *rate.Limiter) error { - if dml.IsLoading(demo) { - log.Infof("[DL] Skipping %s: parsing in progress", demo.ShareCode) - return nil - } - dml.lockDemo(demo) defer dml.unlockDemo(demo) if !dml.GCReady {