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

issue_updated trigger handler can't find "name" field in JSON

    • 1.0.1

      I'm trying to set up a simple issue_updated trigger in my instance of Jenkins.

      The webhook receiver seems to fail with this stack trace:

       

      Aug 19, 2019 7:32:53 AM org.eclipse.jetty.server.handler.ContextHandler$Context log
      WARNING: Error while serving https://jenkins-jira-trigger.pub-staging.jamf.build/jira-trigger-webhook-receiver/
      java.lang.reflect.InvocationTargetException
      	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:400)
      	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
      	at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:77)
      	at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
      	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
      	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
      	at org.kohsuke.stapler.IndexDispatcher.dispatch(IndexDispatcher.java:27)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:739)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:870)
      	at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:458)
      	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:739)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:870)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:668)
      	at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:873)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
      	at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:243)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      	at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      	at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:61)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      	at com.smartcodeltd.jenkinsci.plugin.assetbundler.filters.LessCSS.doFilter(LessCSS.java:47)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      	at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      	at javax.servlet.FilterChain$doFilter.call(Unknown Source)
      	at com.ceilfors.jenkins.plugins.jiratrigger.ExceptionLoggingFilter.doFilter(ExceptionLoggingFilter.groovy:29)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      	at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:59)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      	at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:128)
      	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
      	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	at javax.servlet.FilterChain$doFilter$3.call(Unknown Source)
      	at com.ceilfors.jenkins.plugins.jiratrigger.webhook.JiraWebhookCrumbExclusion.process(JiraWebhookCrumbExclusion.groovy:22)
      	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:73)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	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:90)
      	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
      	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1701)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1668)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
      	at org.eclipse.jetty.server.Server.handle(Server.java:502)
      	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
      	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
      	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
      	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
      	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
      	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
      	at java.lang.Thread.run(Thread.java:748)
      Caused by: org.codehaus.jettison.json.JSONException: JSONObject["name"] not found.
      	at org.codehaus.jettison.json.JSONObject.get(JSONObject.java:360)
      	at org.codehaus.jettison.json.JSONObject.getString(JSONObject.java:487)
      	at com.atlassian.jira.rest.client.internal.json.JsonParseUtil.parseBasicUser(JsonParseUtil.java:192)
      	at com.atlassian.jira.rest.client.internal.json.CommentJsonParser.parse(CommentJsonParser.java:37)
      	at com.atlassian.jira.rest.client.internal.json.CommentJsonParser$parse.call(Unknown Source)
      	at com.ceilfors.jenkins.plugins.jiratrigger.webhook.WebhookCommentEventJsonParser.parse(WebhookCommentEventJsonParser.groovy:40)
      	at com.ceilfors.jenkins.plugins.jiratrigger.webhook.WebhookCommentEventJsonParser$parse.call(Unknown Source)
      	at com.ceilfors.jenkins.plugins.jiratrigger.webhook.JiraWebhook.processEvent(JiraWebhook.groovy:71)
      	at com.ceilfors.jenkins.plugins.jiratrigger.webhook.JiraWebhook$processEvent.callCurrent(Unknown Source)
      	at com.ceilfors.jenkins.plugins.jiratrigger.webhook.JiraWebhook.doIndex(JiraWebhook.groovy:51)
      	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
      	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
      	... 94 more
      

      Is it, by any chance, possible this 'name' field is from a user object? The root cause might be this recent change in Jira - user objects are no longer sent with the username. Instead, we're supposed to use account IDs when using the API.

      source

      I maintain a simple service at work that utilizes Jira webhooks. I can attest that Jira no longer sends user names with the JSON data in webhooks.

          [JENKINS-58987] issue_updated trigger handler can't find "name" field in JSON

          Amrut dengre added a comment -

          Hi rlinux57,

          Could you please let me know if got the fix for jira-trigger-plugin.

          Amrut dengre added a comment - Hi rlinux57 , Could you please let me know if got the fix for jira-trigger-plugin.

          Ashok T R added a comment -

          Hi all, any update on this issue..

          Ashok T R added a comment - Hi all, any update on this issue..

          There is a Pull Request in github but with tests failing https://github.com/jenkinsci/jira-trigger-plugin/pull/6

          rlinux57

          Julian Alarcon added a comment - There is a Pull Request in github but with tests failing https://github.com/jenkinsci/jira-trigger-plugin/pull/6 rlinux57

          Pavel Zaikin added a comment -

          Pavel Zaikin added a comment - Adopted PR https://github.com/jenkinsci/jira-trigger-plugin/pull/8  with passed tests.

          Wisen Tanasa added a comment -

          Thanks to zaikinpv and rodrigc. I've merged and released the change under version v1.0.1. Please reopen the ticket if the issue is not fixed.

          Wisen Tanasa added a comment - Thanks to zaikinpv and rodrigc . I've merged and released the change under version v1.0.1. Please reopen the ticket if the issue is not fixed.

          Amrut dengre added a comment -

          Hi ceilfors

          I tried installing the newly released version of the plugin.

          Last time as mentioned on the plugin page I have captured the logs with 'FINE' level.

          But this time nor the logs are getting captured and also jenkins job is not getting triggered.

          Could you please help with this?

          ashok_t_r rlinux57 - Guys have you tried the new released version of this plugin? Please help me if you haven't faced any issues.

          Amrut dengre added a comment - Hi ceilfors I tried installing the newly released version of the plugin. Last time as mentioned on the plugin page I have captured the logs with 'FINE' level. But this time nor the logs are getting captured and also jenkins job is not getting triggered. Could you please help with this? ashok_t_r rlinux57 - Guys have you tried the new released version of this plugin? Please help me if you haven't faced any issues.

          Pavel Zaikin added a comment -

          I've tested new build in my setup (Jira Cloud) job triggered well.

          Pavel Zaikin added a comment - I've tested new build in my setup (Jira Cloud) job triggered well.

          Wisen Tanasa added a comment -

          zaikinpv That's brilliant news. Thanks for your contribution!

          Wisen Tanasa added a comment - zaikinpv That's brilliant news. Thanks for your contribution!

          Amrut dengre added a comment -

          zaikinpv Could you please help me with doing the required setup?
          I have followed all the steps as mentioned in the plugin documenation but still jenkins job is not getting triggered.
          We are also on Jira Cloud.
          Any help is much appreciated.

          Regards,
          Amrut

          Amrut dengre added a comment - zaikinpv Could you please help me with doing the required setup? I have followed all the steps as mentioned in the plugin documenation but still jenkins job is not getting triggered. We are also on Jira Cloud. Any help is much appreciated. Regards, Amrut

          Pavel Zaikin added a comment -

          Check, that your Jenkins endpoint uses https, because Jira does not accept HTTP in my case, and I have to use HTTPS.

          I will try trigger by comment later and update the comment.

          Pavel Zaikin added a comment - Check, that your Jenkins endpoint uses https, because Jira does not accept HTTP in my case, and I have to use HTTPS. I will try trigger by comment later and update the comment.

            ceilfors Wisen Tanasa
            uint Tomasz Kurcz
            Votes:
            4 Vote for this issue
            Watchers:
            13 Start watching this issue

              Created:
              Updated:
              Resolved: