Great news! Thank you for the update and making this happen! On Tue, Jul 14, 2020 at 1:09 AM Tobiasz Kędzierski < tobiasz.kedzier...@polidea.com> wrote:
> I think the experiment went quite well. > Now all nodes have the increased number of the executors [1].. > Canceling Jenkins builds after PR updates seems to work as well. Queue is > usually very short. > > [1]: https://ci-beam.apache.org/label/beam/load-statistics?type=hour > > BR > Tobiasz > > On Mon, Jul 6, 2020 at 4:52 PM Tyson Hamilton <tyso...@google.com> wrote: > >> How did the experiment go? The load status graphs on the executors seem >> to show no increase in queued jobs [1]. There is a periodic bump every 6h, >> possibly due to cron firing off a bunch at the same time, that can also be >> seen by changing the timepsan in [1]. The number of executors on 1/4 of the >> nodes was also increased so the combination of these things make contention >> to appear quite low or even non-existent. >> >> [1]: https://ci-beam.apache.org/label/beam/load-statistics?type=hour >> >> On Mon, Jun 29, 2020 at 9:17 AM Tobiasz Kędzierski < >> tobiasz.kedzier...@polidea.com> wrote: >> >>> 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> >>> >>