[JIRA] (OVIRT-1845) Removing build jobs makes change-queue fail with an exception

Barak Korren (oVirt JIRA) jira at ovirt-jira.atlassian.net
Sun Jan 14 06:46:25 UTC 2018


     [ https://ovirt-jira.atlassian.net/browse/OVIRT-1845?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Barak Korren updated OVIRT-1845:
--------------------------------
    Epic Link: OVIRT-400

> Removing build jobs makes change-queue fail with an exception 
> --------------------------------------------------------------
>
>                 Key: OVIRT-1845
>                 URL: https://ovirt-jira.atlassian.net/browse/OVIRT-1845
>             Project: oVirt - virtualization made easy
>          Issue Type: Bug
>          Components: Change Queue
>            Reporter: Barak Korren
>            Assignee: infra
>            Priority: Highest
>
> When changes are added to the change queue, it records the build jobs that build artifacts for changed code.
> If the build jobs are removed between the time the change is added to the queue and the time a tested jobs including that change is started, the code checking for completion of the build jobs would fail with an exception looking like the following:
> {code}
> java.lang.NullPointerException: Cannot invoke method getBuild() on null object
> 	at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
> 	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
> 	at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
> 	at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:52)
> 	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
> 	at Script1$_all_builds_done_closure4.doCall(Script1.groovy:265)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
> 	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
> 	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
> 	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
> {code}
> '{{Script1}}' in this stack trace refers to our '{{change-queue-tester.groovy}}' script. Relevant code section is the following:
> {code}
> @NonCPS
> def all_builds_done(builds) {
>     return !builds.any {
>         if(Jenkins.instance.getItem(it.job_name).getBuild(it.build_id).isBuilding()) {
>             print("${it.job_name} (${it.build_id}) still building")
>             return true
>         }
>         return false
>     }
> }
> {code}
> The issue it with not checking for '{{null}}' return from the '{{Jenkins.instance.getItem(it.job_name)}}' funcntion call.
> We should probably check for '{{null}}' there and just ignore it. Similar check will probably be needed in other places in the code like for example when composing the '{{extra-sources}}' file from the build job URLs.  



--
This message was sent by Atlassian Jira
(v1001.0.0-SNAPSHOT#100075)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/infra/attachments/20180114/aab98736/attachment.html>


More information about the Infra mailing list