use better demo locking to prevent double parsing
This commit is contained in:
@@ -240,10 +240,17 @@ func (dml *DemoMatchLoader) Setup(config *DemoMatchLoaderConfig) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (dml *DemoMatchLoader) LoadDemo(demo *Demo) 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 {
|
select {
|
||||||
case dml.parseDemo <- demo:
|
case dml.parseDemo <- demo:
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
|
dml.unlockDemo(demo)
|
||||||
return fmt.Errorf("queue full")
|
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 {
|
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)
|
defer dml.unlockDemo(demo)
|
||||||
|
|
||||||
if !dml.GCReady {
|
if !dml.GCReady {
|
||||||
|
Reference in New Issue
Block a user