-
Bug
-
Resolution: Fixed
-
Major
-
Platform: All, OS: All
My server's log file is filled with exceptions:
Oct 6, 2009 9:55:07 AM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: browser.getChangeSetLink(c). Reason:
java.lang.ClassCastException: hudson.scm.CVSChangeLogSet$CVSChangeLog cannot be
cast to hudson.plugins.mercurial.MercurialChangeSet
java.lang.ClassCastException: hudson.scm.CVSChangeLogSet$CVSChangeLog cannot be
cast to hudson.plugins.mercurial.MercurialChangeSet
at hudson.plugins.mercurial.browser.HgWeb.getChangeSetLink(HgWeb.java:21)
at sun.reflect.GeneratedMethodAccessor1090.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
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:80)
at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:72)
at org.apache.commons.jelly.tags.core.SetTag.doTag(SetTag.java:84)
...
I have no idea what is causing these or what I am supposed to do to fix it. The
stack trace gives no clue what the originating URL was, making it hard to track
down the problem.
I checked jobs/*/config.xml. Most jobs use MercurialSCM; a couple use CVSSCM.
Three use NullSCM but their builds/*/changelog.xml contain just '<log/>'.
Looking through sources, this in AbstractBuild.java is pretty suspicious:
if(scm==null)
scm = new CVSChangeLogParser();
Shouldn't ChangeLogSet.createEmpty(this) just be returned in this case? Or scm
set to new NullChangeLogParser(), probably the same thing? The field comment says
/**
- SCM used for this build.
- Maybe null, for historical reason, in which case CVS is assumed.
*/
private ChangeLogParser scm;
but I wonder if this (old?) compatibility measure is causing problems now.