timja / jenkins-gh-issues-poc-06-18

0 stars 0 forks source link

[JENKINS-38565] Build history lost after renaming project #3561

Open timja opened 7 years ago

timja commented 7 years ago

I have a build project that will rename itself based on the Mercurial branch it was built from using the plugin build-name-setter and a macro (${PROJECT_DISPLAY_NAME} ${TE_Branch_Name}) where TE_Branch_Name contains my mercurial branch set as a parameter.

I usually end up building from our default branch, but this morning I had to build from another branch and although the branch rename resulted in the history updating during the build, once the build had completed the history was wiped and only the most recent (renamed) build was shown.

I had originally only noticed the history missing in the sidebar of the project page, but all builds from that project are missing from the main 'build history of Jenkins' page also. The child task that the project kicks off still exist in the history as are all other builds kicked off via other projects.

Manage Jenkins page reports:
You have data stored in an older format and/or unreadable data.
(note: this is after upgrading to latest version 1.651.3)

In my logs I have a lot of the following stack trace appearing:
(note: that the number and length of these traces mean that I can't go far enough back to see the time I ran the build that lost the build history)

Sep 28, 2016 11:30:13 AM WARNING hudson.ExpressionFactory2$JexlExpression evaluate
Caught exception evaluating: range.isOld(150) in /administrativeMonitor/OldData/manage. Reason: java.lang.ClassCastException: hudson.util.VersionNumber$StringItem cannot be cast to hudson.util.VersionNumber$IntegerItem
java.lang.ClassCastException: hudson.util.VersionNumber$StringItem cannot be cast to hudson.util.VersionNumber$IntegerItem
at hudson.util.VersionNumber.digit(VersionNumber.java:478)
at hudson.diagnosis.OldDataMonitor$VersionRange.isOld(OldDataMonitor.java:275)
at sun.reflect.GeneratedMethodAccessor259.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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:74)
at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61)
at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsBoolean(ExpressionSupport.java:71)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:97)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:46)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
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.CallTagLibScript.run(CallTagLibScript.java:120)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
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.CallTagLibScript.run(CallTagLibScript.java:120)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:95)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


Originally reported by mallwood1, imported from: Build history lost after renaming project
  • assignee: le0
  • status: Open
  • priority: Minor
  • resolution: Unresolved
  • imported: 2022/01/10
timja commented 7 years ago

mallwood1:

Note: My script always renames the build using that plugin, the only difference is that this time it was renamed to something different to the previous builds that were in the build history

timja commented 7 years ago

mallwood1:

Another thought on this - the build was being renamed to 'TE6.24' - it may be having issues with the period in the name, although subsequent builds of TE6.24 haven't wiped the history

timja commented 7 years ago

danielbeck:

Your report is contradictory – first, you write that the project renames itself, then you write that the build names are set. Which is it?

timja commented 7 years ago

mallwood1:

Apologies, it's the build name

timja commented 7 years ago

danielbeck:

Interesting. Not sure what's going on with the OldDataMonitor, but it looks like it is dealing with a plugin or Jenkins release with a version that does not start with a digit. Could you provide a list of all installed plugins and versions?

Regarding the missing builds, would be interesting to see whether any of them still exist on disk, and if they do, what their build.xml contents are.

timja commented 7 years ago

mallwood1:

List of installed plugins (from System Properties):

ant 1.2 true false
antisamy-markup-formatter 1.3 true true
any-buildstep 0.1 true false
artifactdeployer 0.33 true false
bds-plugin 3.1 true false
build-name-setter 1.5.1 true false
build-timeout 1.16 true false
clone-workspace-scm 0.6 true false
compress-artifacts 1.7 true false
conditional-buildstep 1.3.3 true false
copy-to-slave 1.4.4 true false
copyartifact 1.37 true false
credentials 1.24 true true
cvs 2.12 true true
envinject 1.92.1 true false
external-monitor-job 1.4 true false
flexible-publish 0.15.2 true false
groovy 1.29 true false
hudsontrayapp 0.7.3 true false
javadoc 1.3 true true
jira 2.1 true false
jobConfigHistory 2.12 true false
junit 1.10 true true
ldap 1.11 true false
mailer 1.16 true true
mapdb-api 1.0.6.0 true false
matrix-auth 1.2 true true
matrix-project 1.6 true true
maven-plugin 2.12.1 true true
mercurial 1.54 true false
nunit 0.17 true false
pam-auth 1.2 true true
Parameterized-Remote-Trigger 2.2.2 true false
parameterized-trigger 2.30 true false
patch-parameter 1.2 true false
rebuild 1.25 true false
run-condition 1.0 true false
scm-api 1.0 true false
script-security 1.17 true true
shared-workspace 1.0.2 true false
simple-parameterized-builds-report 1.4 true false
ssh-credentials 1.11 true true
ssh-slaves 1.10 true true
subversion 2.5.7 true true
text-file-operations 1.2.1 true false
thinBackup 1.7.4 true false
throttle-concurrents 1.8.4 true false
token-macro 1.12.1 true false
translation 1.12 true true
versionnumber 1.6 true false
windows-slaves 1.1 true true
ws-cleanup 0.28 true false

Unfortunately none of the old builds are still on the disk (they only start from the first build after the history wipe)