Prevent possible download counter race condition
This commit is contained in:
parent
ee45a835be
commit
f94918bebd
|
@ -34,7 +34,7 @@ module.exports = async function(req, res) {
|
||||||
if (dl >= dlimit) {
|
if (dl >= dlimit) {
|
||||||
await storage.del(id);
|
await storage.del(id);
|
||||||
} else {
|
} else {
|
||||||
await storage.setField(id, 'dl', dl);
|
await storage.incrementField(id, 'dl');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log.info('StorageError:', id);
|
log.info('StorageError:', id);
|
||||||
|
|
|
@ -62,6 +62,10 @@ class DB {
|
||||||
this.redis.hset(id, key, value);
|
this.redis.hset(id, key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
incrementField(id, key, increment = 1) {
|
||||||
|
this.redis.hincrby(id, key, increment);
|
||||||
|
}
|
||||||
|
|
||||||
async del(id) {
|
async del(id) {
|
||||||
const filePath = await this.getPrefixedId(id);
|
const filePath = await this.getPrefixedId(id);
|
||||||
this.storage.del(filePath);
|
this.storage.del(filePath);
|
||||||
|
|
Loading…
Reference in New Issue