Fixed mutexes. Now program doesn't fall under high load.
Seems like an old expiry comparing didn't work as left thousands of expired captchas in a map, so it was replaced by a forgotten by me time.Since() function.
This commit is contained in:
parent
a3faf8b9c9
commit
149675cd86
@ -53,13 +53,13 @@ func (cdb *CaptchaDB) SetExpiry(expire time.Duration) {
|
|||||||
sleepFor := expiredScanInterval - (time.Duration(time.Now().Second()) % expiredScanInterval)
|
sleepFor := expiredScanInterval - (time.Duration(time.Now().Second()) % expiredScanInterval)
|
||||||
time.Sleep(sleepFor)
|
time.Sleep(sleepFor)
|
||||||
|
|
||||||
for id, captcha := range cdb.DB {
|
|
||||||
if time.Now().Sub(captcha.Expiry()) <= 0 {
|
|
||||||
cdb.Lock()
|
cdb.Lock()
|
||||||
defer cdb.Unlock()
|
for id, captcha := range cdb.DB {
|
||||||
|
if time.Since(captcha.Expiry()) >= cdb.ExpireIn {
|
||||||
delete(cdb.DB, id)
|
delete(cdb.DB, id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
cdb.Unlock()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
@ -71,14 +71,16 @@ func (cdb *CaptchaDB) New(data string, captcha ICaptcha) (ICaptcha, ID) {
|
|||||||
id := NewID(data, captcha.GetAnswer())
|
id := NewID(data, captcha.GetAnswer())
|
||||||
|
|
||||||
cdb.Lock()
|
cdb.Lock()
|
||||||
defer cdb.Unlock()
|
|
||||||
cdb.DB[id] = captcha
|
cdb.DB[id] = captcha
|
||||||
|
cdb.Unlock()
|
||||||
|
|
||||||
return captcha, id
|
return captcha, id
|
||||||
}
|
}
|
||||||
|
|
||||||
// Image returns image for a captcha.
|
// Image returns image for a captcha.
|
||||||
func (cdb *CaptchaDB) Image(id ID, style string) (*image.Image, error) {
|
func (cdb *CaptchaDB) Image(id ID, style string) (*image.Image, error) {
|
||||||
|
cdb.Lock()
|
||||||
|
defer cdb.Unlock()
|
||||||
if c, ok := cdb.DB[id]; ok {
|
if c, ok := cdb.DB[id]; ok {
|
||||||
return c.GetImage(style), nil
|
return c.GetImage(style), nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user