Description
Hello 👋
I had a usage for concurrency controls and I was investigating how it worked and I found two pieces of information that I think could be useful in the README section because they weren't immediately clear to me.
The first piece was that the dispatcher, only releases one job with duration expired per run (so, using the default value of 5 minutes for concurrency_maintenance_interval
, it means only one expired job is released every 5 minutes).
The second piece of information was that, on a job (with concurrency controls) completion, the duration
of the already blocked jobs is "refreshed" (from what I was able to see, this happens because the concurrency keys to be considered for release must either have an open semaphore or no semaphore at all and, since dispatcher destroys expired semaphores, when a job finishes, the semaphore expiration time is increased).
Let me know if you want me to prepare a PR or you prefer to write this on your own words (or if I am wrong of course).