Skip to content

кулдаун: toctou между is_ready и consume #37

Description

@iAmScienceMan

cogs/voice.py вызывает is_ready(), а потом consume() двумя отдельными шагами. два быстрых джойна могут оба пройти проверку.

эффект мягкий (cleanup потом подберёт лишние каналы), но проверку и расход лимита стоит сделать атомарными.

что чинить

объединить в один атомарный check_cooldown() (check-and-consume) либо явно задокументировать, что гонка допустима.

где

  • services/cooldown.py
  • cogs/voice.py

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingconcurrencyГонки, блокировки, потокобезопасность

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions