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

External monitoring job exception java.lang.NoSuchMethodError: hudson.model.RunMap.put

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • Java HotSpot(TM) 64-Bit Server VM 1.6.0_14
      Linux amd64 2.6.18-308.8.2.el5.028stab101.1

      When external program send notification to jenkins(Jenkins ver. 1.485) it catches following exception:

      curl -X POST -d '<run><log encoding="hexBinary">4142430A</log><result>0</result><duration>2000</duration></run>' http://user:pass@localhost:8080/job/external-monitor/postBuildResult
      <html><head><title>Error 500</title></head>
      <body bgcolor=#fff><h1>Status Code: 500</h1>Exception: java.lang.NoSuchMethodError: hudson.model.RunMap.put(Lhudson/model/Run;)Lhudson/model/Run;<br>Stacktrace: <pre>javax.servlet.ServletException: java.lang.NoSuchMethodError: hudson.model.RunMap.put(Lhudson/model/Run;)Lhudson/model/Run;
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:616)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:241)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:574)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:488)
      at org.kohsuke.stapler.Stapler.service(Stapler.java:162)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
      at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
      at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      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 org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
      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:142)
      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 org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:63)
      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:66)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:50)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
      at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
      at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:215)
      at winstone.RequestHandlerThread.run(RequestHandlerThread.java:138)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:619)
      Caused by: java.lang.NoSuchMethodError: hudson.model.RunMap.put(Lhudson/model/Run;)Lhudson/model/Run;
      at hudson.model.ExternalJob.newBuild(ExternalJob.java:85)
      at hudson.model.ExternalJob.doPostBuildResult(ExternalJob.java:101)
      at sun.reflect.GeneratedMethodAccessor484.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288)
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:151)
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:90)
      at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:574)
      ... 56 more
      </pre><br><hr>
      <i>Generated by Stapler at Thu Oct 11 10:16:29 EDT 2012</i></body></html>

      It works without problems for current LTS version 1.466.2.

          [JENKINS-15487] External monitoring job exception java.lang.NoSuchMethodError: hudson.model.RunMap.put

          Jesse Glick added a comment -

          The same method still exists but is in supertype AbstractLazyLoadRunMap. I guess the binary compatibility is broken by the fact that the method is now <R extends Object> rather than <R extends Run>? In which case it would suffice to override the method in RunMap I suppose.

          Jesse Glick added a comment - The same method still exists but is in supertype AbstractLazyLoadRunMap . I guess the binary compatibility is broken by the fact that the method is now <R extends Object> rather than <R extends Run> ? In which case it would suffice to override the method in RunMap I suppose.

          Agreed.

          Kohsuke Kawaguchi added a comment - Agreed.

          Jesse Glick added a comment -

          Or rename AbstractLazyLoadRunMap.put to a protected method _put, and define RunMap.put to call it.

          Jesse Glick added a comment - Or rename AbstractLazyLoadRunMap.put to a protected method _put , and define RunMap.put to call it.

          Andres Suarez added a comment -

          It is happening on . 1.485

          Andres Suarez added a comment - It is happening on . 1.485

          I experience that also on 1.487

          Adam Szwajkajzer added a comment - I experience that also on 1.487

          Hi,
          I am having this issue with 1.489 as well.

          Karthik Krishnamurthy added a comment - Hi, I am having this issue with 1.489 as well.

          blalor added a comment -

          Still broken in 1.492.

          blalor added a comment - Still broken in 1.492.

          Greg horvath added a comment -

          Looks like we're getting lots of reports that this is not getting fixed in subsequent releases. Right now, a pretty important function is broken for us because of this. Is there any update on when we should expect a fix for this? Even an estimate would be useful (week, month, year, decade, etc).

          Greg horvath added a comment - Looks like we're getting lots of reports that this is not getting fixed in subsequent releases. Right now, a pretty important function is broken for us because of this. Is there any update on when we should expect a fix for this? Even an estimate would be useful (week, month, year, decade, etc).

          Code changed in jenkins
          User: Jukka Lehtniemi
          Path:
          changelog.html
          core/src/main/java/hudson/model/RunMap.java
          core/src/main/java/jenkins/model/lazy/AbstractLazyLoadRunMap.java
          http://jenkins-ci.org/commit/jenkins/633e5c36b3672654bc96913b6a9df1ebc0edfe0e
          Log:
          [FIXED JENKINS-15487] Override put() method in RunMap

          Implementation according to Jesse Glick's comments on the issue.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jukka Lehtniemi Path: changelog.html core/src/main/java/hudson/model/RunMap.java core/src/main/java/jenkins/model/lazy/AbstractLazyLoadRunMap.java http://jenkins-ci.org/commit/jenkins/633e5c36b3672654bc96913b6a9df1ebc0edfe0e Log: [FIXED JENKINS-15487] Override put() method in RunMap Implementation according to Jesse Glick's comments on the issue.

          dogfood added a comment -

          Integrated in jenkins_main_trunk #2138
          [FIXED JENKINS-15487] Override put() method in RunMap (Revision 633e5c36b3672654bc96913b6a9df1ebc0edfe0e)

          Result = SUCCESS
          kohsuke : 633e5c36b3672654bc96913b6a9df1ebc0edfe0e
          Files :

          • core/src/main/java/hudson/model/RunMap.java
          • core/src/main/java/jenkins/model/lazy/AbstractLazyLoadRunMap.java
          • changelog.html

          dogfood added a comment - Integrated in jenkins_main_trunk #2138 [FIXED JENKINS-15487] Override put() method in RunMap (Revision 633e5c36b3672654bc96913b6a9df1ebc0edfe0e) Result = SUCCESS kohsuke : 633e5c36b3672654bc96913b6a9df1ebc0edfe0e Files : core/src/main/java/hudson/model/RunMap.java core/src/main/java/jenkins/model/lazy/AbstractLazyLoadRunMap.java changelog.html

            kohsuke Kohsuke Kawaguchi
            itretyakov Ivan Tretyakov
            Votes:
            6 Vote for this issue
            Watchers:
            12 Start watching this issue

              Created:
              Updated:
              Resolved: