Change By: Pailloncy Michaël (07/Sep/12 8:14 AM)
Summary: NullPointer on NullPointerException using  project-stats-plugin
Description:
NullPointerExceptionusing
NullPointerException using  Project Stats plugin in Jenkins : 
Stack trace : 
java.lang.NullPointerException
      at hudson.plugins.projectstats.NumBuildsStats.compute(NumBuildsStats.java:51)
      at hudson.plugins.projectstats.column.NumBuildsColumn.getStats(NumBuildsColumn.java:53)
      at sun.reflect.GeneratedMethodAccessor137.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
      at java.lang.reflect.Method.invoke(Method.java:611)
      at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258)
      at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
      at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
      at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
      at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
      at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:73)
      at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:72)
      at org.apache.commons.jelly.tags.core.CoreTagLibrary$3.run(CoreTagLibrary.java:134)
      at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
      at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
      at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
      at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:99)
      at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:270)
      at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
...

Error occured in this method : 

public void compute(Job job) {
    List<Run> builds = job.getBuilds();
    for (Run build : builds) {
      if (build.getResult().isBetterOrEqualTo(Result.SUCCESS))
        addSuccess();
      else if (build.getResult().isBetterOrEqualTo(Result.UNSTABLE))
        addUnstable();
      else if (build.getResult().isBetterOrEqualTo(Result.FAILURE))
        addFail();
    }
  }

build.getResult() seems to be null.
I've made a groovy script to find job where a build can have a null result :

Jenkins.instance.items.findAll{job -> job.isBuildable()}.each{ Job job ->
  if(job.getBuilds() != null) {
     for (Run build : job.getBuilds()) {
          if(build.getResult() == null) {    
println "('"+build.number+"') null : " + job.name            
          }
        }
  }
}

All resulting jobs are currently building.

It seems that the plugin don't check if the job is currently building, that result in a NullPointerException here.

Michaël

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to