Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-27674

Build change history is no longer displayed

    Details

    • Type: Bug
    • Status: Open (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Labels:
      None
    • Environment:
      Master (Windows 7), Slaves (Windows 7, Ubuntu 12.04)
      Jenkins: 1.596.2 LTS
      Subversion plugin 2.5
      GIT plugin: 2.3.5
      Multiple SCMs plugin: 0.4
    • Similar Issues:

      Description

      I have several jobs configured to checkout various GIT and SVN repositories using the Multiple SCMs plugin.
      I used to be able to check the change history (mainly SVN) for each completed build, but since upgrading to Jenkins 1.596.1 LTS, nothing is displayed. The issue is still present using Jenkins 1.596.2 LTS.
      The following error occurs for all change histories that were previously viewable:

      Failed to parse C:\jenkins-data\xxxxx\builds\2015-03-05_16-58-03\changelog.xml
      org.xml.sax.SAXException: could not close temp changelog file
      hudson.util.IOException2: Failed to parse C:\jenkins-data\xxxxx\builds\2015-03-05_16-58-03\changelog.xml.temp2
      	at org.jenkinsci.plugins.multiplescms.MultiSCMChangeLogParser$LogSplitter.endElement(MultiSCMChangeLogParser.java:106)
      	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
      	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
      	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
      	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
      	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
      	at javax.xml.parsers.SAXParser.parse(Unknown Source)
      	at org.jenkinsci.plugins.multiplescms.MultiSCMChangeLogParser.parse(MultiSCMChangeLogParser.java:135)
      	at hudson.model.AbstractBuild.calcChangeSet(AbstractBuild.java:894)
      	at hudson.model.AbstractBuild.getChangeSet(AbstractBuild.java:862)
      	at sun.reflect.GeneratedMethodAccessor232.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at org.kohsuke.stapler.export.MethodProperty.getValue(MethodProperty.java:66)
      	at org.kohsuke.stapler.export.Property.writeTo(Property.java:116)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:197)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:192)
      	at org.kohsuke.stapler.export.Model.writeNestedObjectTo(Model.java:192)
      	at org.kohsuke.stapler.export.Model.writeTo(Model.java:164)
      	at org.kohsuke.stapler.ResponseImpl.serveExposedBean(ResponseImpl.java:267)
      	at hudson.model.Api.doJson(Api.java:211)
      	at sun.reflect.GeneratedMethodAccessor218.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
      	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
      	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
      	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:211)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:211)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
      	at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
      	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      	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:96)
      	at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
      	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
      	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
      	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
      	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
      	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
      	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:366)
      	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)
      Caused by: hudson.util.IOException2: Failed to parse C:\jenkins-data\xxxxx\builds\2015-03-05_16-58-03\changelog.xml.temp2
      	at hudson.scm.SubversionChangeLogParser.parse(SubversionChangeLogParser.java:78)
      	at hudson.scm.SubversionChangeLogParser.parse(SubversionChangeLogParser.java:43)
      	at hudson.scm.ChangeLogParser.parse(ChangeLogParser.java:57)
      	at org.jenkinsci.plugins.multiplescms.MultiSCMChangeLogParser$LogSplitter.endElement(MultiSCMChangeLogParser.java:99)
      	... 108 more
      Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:  Invalid byte 3 of 3-byte UTF-8 sequence.
      	at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.peekChar(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
      	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
      	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
      	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
      	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
      	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
      	at org.apache.commons.digester.Digester.parse(Digester.java:1871)
      	at hudson.scm.SubversionChangeLogParser.parse(SubversionChangeLogParser.java:76)
      	... 111 more
      

        Attachments

          Issue Links

            Activity

            Hide
            chikigai chikigai added a comment -

            Some additional info.
            Comparing "changelog.xml" generated by a job using the Multi SCM plugin to one genereated by a job that only uses the Subversion plugin, I found the following difference.

            [Multi SCM plugin]
            Generated "changelog.xml" is saved in ANSI format.

            [Subversion plugin]
            Generated "changelog.xml" is saved in UTF8 format.

            Since the processed commit logs contain multi-byte characters, I am assuming the issue is caused because the Multi SCM plugin saves "changelog.xml" in ANSI format.

            Show
            chikigai chikigai added a comment - Some additional info. Comparing "changelog.xml" generated by a job using the Multi SCM plugin to one genereated by a job that only uses the Subversion plugin, I found the following difference. [Multi SCM plugin] Generated "changelog.xml" is saved in ANSI format. [Subversion plugin] Generated "changelog.xml" is saved in UTF8 format. Since the processed commit logs contain multi-byte characters, I am assuming the issue is caused because the Multi SCM plugin saves "changelog.xml" in ANSI format.
            Hide
            jammydodger Tom Johnson added a comment -

            I'm on Jenkins 1.618 with Multiple SCM 0.4 and I think I see this issue too.
            Since updating to these versions I get no changes information (I have both SVN and GIT repos in the project).
            Other projects that use the standard SVN plugin show changes just fine.
            Would be great to get this fixed as my nightly builds no longer show a list of changes for our testers to refer to
            thanks!

            Show
            jammydodger Tom Johnson added a comment - I'm on Jenkins 1.618 with Multiple SCM 0.4 and I think I see this issue too. Since updating to these versions I get no changes information (I have both SVN and GIT repos in the project). Other projects that use the standard SVN plugin show changes just fine. Would be great to get this fixed as my nightly builds no longer show a list of changes for our testers to refer to thanks!
            Hide
            costescuandrei Andrei Costescu added a comment -

            I also have the exact same problem. Updated SVN plugin 6 days ago (had an older version), wiped out workspaces and since then everything works fine except that there are no more changes shown at all. I do not even get the exception from case description. I can send more info if needed.

            So:

            • pooling log file does show a file changed
            • job console/log does show that that file has been updated localy
            • change log file only lists multiple SCM & all the SVN repos with no additional info so in UI it is empty:
              <multi-scm-log>
              <sub-log scm="svn https://github.com/x https://github.com/y ...">
              <![CDATA[<log/>]]>
              </sub-log>
              </multi-scm-log>

            Please fix this cause it is now harder to pinpoint commits that generated regressions. (we have to correlate timestamps of build against SCM history) or look in console for each build then check history in SVN and see who committed something.

            Jenkins 1.619
            Subversion Plug-in 2.5
            Multiple SCMs plugin 0.4

            Show
            costescuandrei Andrei Costescu added a comment - I also have the exact same problem. Updated SVN plugin 6 days ago (had an older version), wiped out workspaces and since then everything works fine except that there are no more changes shown at all. I do not even get the exception from case description. I can send more info if needed. So: pooling log file does show a file changed job console/log does show that that file has been updated localy change log file only lists multiple SCM & all the SVN repos with no additional info so in UI it is empty: <multi-scm-log> <sub-log scm="svn https://github.com/x https://github.com/y ..."> <![CDATA[<log/>]]> </sub-log> </multi-scm-log> Please fix this cause it is now harder to pinpoint commits that generated regressions. (we have to correlate timestamps of build against SCM history) or look in console for each build then check history in SVN and see who committed something. Jenkins 1.619 Subversion Plug-in 2.5 Multiple SCMs plugin 0.4
            Hide
            costescuandrei Andrei Costescu added a comment -

            Should this be assigned to the subversion plugin or are you looking at it Kevin?

            Show
            costescuandrei Andrei Costescu added a comment - Should this be assigned to the subversion plugin or are you looking at it Kevin?
            Hide
            jthornsen Jeff Thornsen added a comment - - edited

            We have same issue using Git with Multi-SCMs. Changelog stops listing detailed commit information for any jobs using the Multi-SCM plugin. I think this is a bug in the way multi-scm saves or modifies the changelog.xml, or in the way Jenkins Core parses and displays the information in the web GUI.

            I don't think this a problem with subversion or git plugins. Just between jenkins core and the multi-scm plugin and handling of changelog.xml file.

            Edit: another thing I just noticed in the screenshot, the SHA-1 hash for the 'unknown' commit has the word 'tree' on the end which shouldn't be there, so potentially an issue related to line endings or encoding in the changelog.xml?

            Show
            jthornsen Jeff Thornsen added a comment - - edited We have same issue using Git with Multi-SCMs. Changelog stops listing detailed commit information for any jobs using the Multi-SCM plugin. I think this is a bug in the way multi-scm saves or modifies the changelog.xml, or in the way Jenkins Core parses and displays the information in the web GUI. I don't think this a problem with subversion or git plugins. Just between jenkins core and the multi-scm plugin and handling of changelog.xml file. Edit: another thing I just noticed in the screenshot, the SHA-1 hash for the 'unknown' commit has the word 'tree' on the end which shouldn't be there, so potentially an issue related to line endings or encoding in the changelog.xml?
            Hide
            dantran dan tran added a comment -

            version 0.6 wiht STS latest 1.65x does not show detail changes log. only see 'unknown'

            Show
            dantran dan tran added a comment - version 0.6 wiht STS latest 1.65x does not show detail changes log. only see 'unknown'

              People

              • Assignee:
                kbell Kevin Bell
                Reporter:
                chikigai chikigai
              • Votes:
                17 Vote for this issue
                Watchers:
                14 Start watching this issue

                Dates

                • Created:
                  Updated: