aiormq
aiormq copied to clipboard
Ensure locks are released when leaving a Countdown context
When using a Countdown as a context manager with a lock, there was a possibility of not releasing the lock when exiting the context (if unlucky with timeouts).
As an example, when processing a large batch of basic_publish calls using a short timeout, there is a certain probability that the timeout will be hit during the put operation, for instance. This means that when the time comes to run aexit, the Countdown logic will short-circuit, causing the lock.release() to never be called.