Concurrency Cancel Pending #5435
Any chance we can make this configurable? The expectation for concurrency is to ensure jobs are run in order and not concurrent. Cancelling jobs seems to defeat the purpose of ensuring order. I would envision a https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency |
Replies: 26 comments 48 replies
|
We have a concurrency set for an label/unlabel event. If 4 labels are added at once, two out of four actions are being cancelled. |
|
It seems that updating labels on action that uses |
|
Please add |
|
I'm running into similar issues at a job concurrency level when trying to control how many runners are handling some platform-specific integration tests, so as not to rate-limit the API that they're talking to. A way to avoid canceling other |
|
All |
|
Yeah, just cancelling concurrent jobs screws up the idea of PR check. Pending and waiting should be the default not to talk about the option to configure it. EDIT: nevermind, I see the intended purpose. I hope I can achieve what I want with if cancelled check |
|
Thank you for all of the feedback. The current feature was geared for two specific scenarios. The first being the default behavior where you have a deployment to say production and you only want 1 deployment happening at any given time and you always want the latest code deployed. The second scenario where you set We have had various discussions on the team around the other scenarios mentioned in the thread and we do hope to address them at some point in the future. However, at this time I do not have any concrete dates. |
|
It would make sense to include some sort of concurrency option to queue a workflow/job/step (without cancelling it). We used something similar in Jenkins. We could lock a resource like a function in our scripted pipeline. That way only 1 job could make use of that bit of code at a time. Worked great for potential race conditions. |
|
I needed this functionality so I made a quick-and-dirty spin lock mutex. It's working pretty well for me so far: https://github.com/ben-z/gh-action-mutex A more involved explanation here: https://github.community/t/avoiding-conflicts-when-two-workflows-push-to-the-same-branch/233774/9 |
|
Yeah, this would be a great addition, we could use this to coordinate the deployments of the services based on merges to the repo. But as the behavior now is to cancel pending jobs, we can't longer rely on files modified to know which services need to be triggered, forcing us to deploy all the services every time. While a Come on Github, it has been 2years since this was reported! |
|
Any updates on this? We also need this for an auto-merge job that has concurrency issues when several jobs try to merge at the same time. Having a lock allowing only one job at a time but not cancelling pending jobs would solve this. |
|
Lack of |
|
Another vote for |
|
Almost the 2 year anniversary. We need this feature too. Can someone please prioritize this? Something tells me it wouldn't take that much time to complete. Either |
|
Perhaps we need to open a new ticket for this, since this ticket seems to be answered - maybe no one at github is paying attention to answered tickets? |
|
Would be great if someone can prioritize this. |
|
Hi guys, our use case is that we need a passive queue mechanism, two levels of concurrency instead of just one. Our workflow for status checks should cancel pending tasks from the same group 1 (pull request), but keep pending tasks from a different group 2 (repository). Essentially, the workflow should never run in parallel, but should always be queued if it comes from a different pull request. Not being able to specify more groups would be fine as long as we can at least disable cancelling pending tasks at all. This is what we had in Jenkins CI. I find it hard to believe that this is such a rare use case unsolved for years. |
|
Hi, |
|
Yet another 👍 from me, very similar problem: We need a proper mutex behaviour in order to ensure sequential runs. It's important so that we ensure consistency of the concurrent merges over time, but also so that we don't lose traceability of what merge caused what action to change status. |
|
Unfortunately stumbled across this issue as well, so created a simple GitHub Action to rerun cancelled jobs - https://github.com/marketplace/actions/rerun-workflows Obviously there's plenty of enhancements that can be made to it 😄 but was simple enough to fix our problem. Feel free to open up a PR if there's enhancements you'd like to make. |
|
ey github team , please, could you help us? we really need the feature |
|
GitHub is nothing but pain but nothing can be done to stop execs from buying it. Someday I will work at a place that uses gitlab and I will be at peace. |
|
I also recently got surprised by a limit of pending jobs set to 1. I tested my solution with only 1 extra job running in parallel and did not expect that with 3+ I will get into trouble. There is no easy workaround for this limitation. Additional setting would really help: |
|
1 currently running + 1 pending sucks. |
|
👍 for |

Thank you for all of the feedback.
The current feature was geared for two specific scenarios. The first being the default behavior where you have a deployment to say production and you only want 1 deployment happening at any given time and you always want the latest code deployed.
The second scenario where you set
cancel-in-progress: trueis for making that PR checks are always running for the latest commit in the PR and as PRs are updated you want to make sure in progress jobs are killed so you don't waste resources.We have had various discussions on the team around the other scenarios mentioned in the thread and we do hope to address them at some point in the future. However, at this t…