one merge run for multiple submits


Vratko Polak -X (vrpolak - PANTHEON TECHNOLOGIES at Cisco)
 

Hi.

 

For larger context, see today's discussion

on fd.io slack channel #fdio-infra.

TLDR: Bad things happened, we think because too many runs got scheduled.

 

Historically, merge jobs are not concurrent,

and they always checkout HEAD of $GERRIT_BRANCH.

In FD.io Jenkins that means if multiple Gerrit changes

are submitted in quick succession, multiple runs

of the merge job are scheduled, most of them

ending up building the same HEAD.

 

I know that merge jobs in OpenDaylight do not behave like that.

Instead of scheduling a run for each change,

at most one run is waiting in the queue,

effectively skipping building of non-last commits.

Example, copied from the slack channel:

 

  For example this [0] merge run has been triggered by this [1] change,

 but by the time it got to cloning, 5 more changes were merged.

 The next [2] merge run has been triggered by this [3] change,

 which was next in the chain. The "5 more" changes did not trigger their own runs.

 

But I was unable to figure out which configuration knob

makes the difference in merge job behavior.

I compared a vpp job config [4] with ODL job config [5],

but I see nothing obvious.

Incidentally, both jobs have string parameter GERRIT_REFSPEC,

even though the value is not used anywhere.

 

Is it something related to the timed trigger?

I know CSIT periodic jobs also avoid scheduling more than one run

(again without any obvious knob, except concurrent: false).

 

Vratko.

 

[0] https://jenkins.opendaylight.org/releng/view/Merge-Jobs/job/controller-maven-merge-master/204/

[1] https://git.opendaylight.org/gerrit/c/controller/+/91723

[2] https://jenkins.opendaylight.org/releng/view/Merge-Jobs/job/controller-maven-merge-master/205/

[3] https://git.opendaylight.org/gerrit/c/controller/+/91756

[4] https://jenkins.fd.io/view/vpp/job/vpp-arm-merge-master-ubuntu1804/configure

[5] https://jenkins.opendaylight.org/releng/view/Merge-Jobs/job/controller-maven-merge-master/configure