Hi Agree with Ahmet, that even in that shape it should improve the queue length. Both _Commit/_Phrase cross-cancelling and "cancell all" phrase seem require much effort and I doubt it's worthy to do it.
I will turn on `Cancel build on update` in ghprb-plugin on ci-beam.apache.org tomorrow (Tuesday). Some discussions related to job filtering issue (or feature) in ghprb-plugin: https://github.com/jenkinsci/ghprb-plugin/issues/678 https://github.com/jenkinsci/ghprb-plugin/pull/680 BR Tobiasz On Fri, Jun 26, 2020 at 2:07 AM Ahmet Altay <al...@google.com> wrote: > > > On Thu, Jun 25, 2020 at 4:27 PM Tobiasz Kędzierski < > tobiasz.kedzier...@polidea.com> wrote: > >> Andrew thanks for great analysis +1 >> This bug with job filtering seems to be crucial to keep _Commit and >> _Phrase separate. >> >> I was considering the situation where the two PRs with the same commit >> hash are created. I created an artificial situation where two branches are >> identical and then two PRs with them. Two separate jobs were triggered. As >> you wrote, due to the matching GH status by job name and hash, both PR >> statuses were pointing to the same job (the newest one, which was wrong for >> one PR). As i tested, adding a new commit which will cancel the previous >> build would show false status on the PR with the previously wrong job link. >> It is possible to reproduce it, but could you give the real life >> situation where two jobs would be triggered with the same commit? >> I am asking because I think that enabling `Cancel build on update` may >> greatly improve Jenkins queue and it would be worthwhile to sacrifice this >> rare and unlikely case for it (if it is rare and unlikely case of course). >> > > I agree with this. > > >> >> Ahmet, I think the cancelling _Commit build by following _Phrase should >> be handled within ghprb-plugin if possible. I am not sure if we can make >> some workaround. Do you have any suggestions how we may solve it? >> > > I do not know jenkins enough to be able to make a good suggestion. We can > try: > - If it is possible to do this with ghprb plugin as you suggested, we can > do that. > - If not, we can make _Commit jobs cancel _Commit jobs only and _Phrase > jobs cancel _Phrase jobs only. It will still be an improvement. > > >> >> BR >> Tobiasz >> >> On Wed, Jun 24, 2020 at 12:28 AM Kenneth Knowles <k...@apache.org> wrote: >> >>> +1 to Andrew's analysis >>> >>> On Tue, Jun 23, 2020 at 12:13 PM Ahmet Altay <al...@google.com> wrote: >>> >>>> Would it be possible to cancel any running _Phrase or _Commit variants, >>>> if either one of them is triggered? >>>> >>>> On Tue, Jun 23, 2020 at 10:41 AM Andrew Pilloud <apill...@google.com> >>>> wrote: >>>> >>>>> I believe we split _Commit and _Phrase to work around a bug with job >>>>> filtering. For example, when you make a python change only the python >>>>> tests >>>>> are run based on the commit. We still want to be able to run the java jobs >>>>> by trigger phrase if needed. There are also performance tests (Nexmark for >>>>> example) that have different jobs to ensure PR runs don't end up published >>>>> in the performance dashboard, but i think those have a split of _Phrase >>>>> and >>>>> _Cron. >>>>> >>>>> As for canceling jobs, don't forget that the github status APIs are >>>>> keyed on commit hash and job name (not PR). It is possible for a commit to >>>>> be on multiple PRs and it is possible for a single PR to have >>>>> multiple commits. There are workflows that will be broken if you are >>>>> keying >>>>> off of a PR to automatically cancel jobs. >>>>> >>>>> On Tue, Jun 23, 2020 at 9:59 AM Tyson Hamilton <tyso...@google.com> >>>>> wrote: >>>>> >>>>>> +1 the ability to cancel in-flight jobs is worth deduplicating >>>>>> _Phrase and _Commit. I don't see a benefit for having both. >>>>>> >>>>>> On Tue, Jun 23, 2020 at 9:02 AM Luke Cwik <lc...@google.com> wrote: >>>>>> >>>>>>> I think this is a great improvement to prevent the Jenkins queue >>>>>>> from growing too large and has been suggested in the past but we were >>>>>>> unable to do due to difficulty with the version of the ghrpb plugin that >>>>>>> was used at the time. >>>>>>> >>>>>>> I know that we created different variants of the tests because we >>>>>>> wanted to track metrics based upon whether something was a post commit >>>>>>> (_Cron suffix) vs precommits but don't know why we split _Phrase and >>>>>>> _Commit. >>>>>>> >>>>>>> On Tue, Jun 23, 2020 at 3:35 AM Tobiasz Kędzierski < >>>>>>> tobiasz.kedzier...@polidea.com> wrote: >>>>>>> >>>>>>>> Hi everyone, >>>>>>>> >>>>>>>> I was investigating the possibility of canceling Jenkins builds >>>>>>>> when the update to PR makes prior build irrelevant. (related to >>>>>>>> https://issues.apache.org/jira/browse/BEAM-3105) >>>>>>>> In the `GitHub Pull Request Builder Jenkins plugin [ghprb-plugin] >>>>>>>> there is a hidden option `Cancel build on update` that seems to work >>>>>>>> fine. >>>>>>>> e.g. >>>>>>>> >>>>>>>> 1. >>>>>>>> >>>>>>>> I make a PR >>>>>>>> 2. >>>>>>>> >>>>>>>> ghprb-plugin triggers beam_PreCommit_PythonLint_Commit >>>>>>>> 3. >>>>>>>> >>>>>>>> I make a new commit to the PR >>>>>>>> >>>>>>>> 4. >>>>>>>> >>>>>>>> ghprb-plugin aborts the previous >>>>>>>> `beam_PreCommit_PythonLint_Commit` and adds to the queue the new >>>>>>>> one with >>>>>>>> updated sha1. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> This option seems to significantly improve the experience with >>>>>>>> build triggering and we are planning to enable it shortly. >>>>>>>> >>>>>>>> However, putting a phrase “Run PythonLint PreCommit” in the >>>>>>>> comment triggers new `beam_PreCommit_PythonLint_Phrase` build, but >>>>>>>> does not touch already queued or running >>>>>>>> `beam_PreCommit_PythonLint_Commit` >>>>>>>> builds, that are technically speaking, different jobs. >>>>>>>> >>>>>>>> For testing purposes I made a single job which was a “_Commit” job >>>>>>>> with added “Trigger phrase” and it works well (commit builds cancelled >>>>>>>> after putting phrase comment in PR) >>>>>>>> >>>>>>>> Hence my question: do we need separate “_Phrase” and “_Commit” jobs? >>>>>>>> >>>>>>>> BR >>>>>>>> Tobiasz >>>>>>>> >>>>>>> >> >> -- >> >> Tobiasz Kędzierski >> Polidea <https://www.polidea.com/> | Junior Software Engineer >> >> E: tobiasz.kedzier...@polidea.com >> [image: Polidea] <https://www.polidea.com/> >> >> Check out our projects! <https://www.polidea.com/our-work> >> [image: Github] <https://github.com/Polidea> [image: Facebook] >> <https://www.facebook.com/Polidea.Software> [image: Twitter] >> <https://twitter.com/polidea> [image: Linkedin] >> <https://www.linkedin.com/company/polidea> [image: Instagram] >> <https://instagram.com/polidea> [image: Behance] >> <https://www.behance.net/polidea> [image: dribbble] >> <https://dribbble.com/polideadesign> >> > -- Tobiasz Kędzierski Polidea <https://www.polidea.com/> | Junior Software Engineer E: tobiasz.kedzier...@polidea.com [image: Polidea] <https://www.polidea.com/> Check out our projects! <https://www.polidea.com/our-work> [image: Github] <https://github.com/Polidea> [image: Facebook] <https://www.facebook.com/Polidea.Software> [image: Twitter] <https://twitter.com/polidea> [image: Linkedin] <https://www.linkedin.com/company/polidea> [image: Instagram] <https://instagram.com/polidea> [image: Behance] <https://www.behance.net/polidea> [image: dribbble] <https://dribbble.com/polideadesign>