Inserting Jira Gadgets on a Confluence page using new Gadgets plugin results in an HTTP 500 error

XMLWordPrintable

    • 2
    • Severity 2 - Major
    • 38

      Issue Summary

      After upgrading Confluence from 8.5.x to 9.2, the new Gadgets plugin does not allow the user to add a Jira external or native gadget (for example, Jira Issue Calendar, etc.) to a Confluence page.

      The gadget can load in edit mode, but when the user clicks insert, the editor hangs for a while, and the update button is not available. It takes some time for the update button to be available, and the placeholder request for the Jira gadget fails with an HTTP 500 error.

      Screen recording here: https://www.loom.com/share/b19272c9a3664d7198a412de27e1f999?sid=650ad2e5-b0df-41c5-a86e-887b302fd8bb

      Note

      After installing the Gadgets for Confluence plugin, the existing Jira external Gadget works fine, but the issue occurs only when inserting new Gadgets on a Confluence page.

      This bug also applies to all the external and Jira native gadgets (described here) registered in Confluence, individually or as a feed.

      Steps to Reproduce

      Let's take an example of the Jira Calendar Gadget (default in Jira).

      1. Use Confluence 9.2.x integrated with Jira 9.12.17+ (via application link) with Gadgets for Confluence Marketplace app installed in Confluence.
        • Make sure to setup SSO for both the above applications. Any unauthenticated request goes via the authentication Gateway and then to the SSO provider.
      2. Add Calendar Gadget in Jira. If you are unable to add the Calendar gadget, follow the steps from the KB article
      3. Register the Jira Calendar Gadget in Confluence as described in Registering External Gadgets.
      4. Create a new Confluence page and add the Jira Calendar Gadget.

      Expected Results

      The placeholder endpoint works as expected, and the Jira Calendar gadget is successfully added to the page. To illustrate, this is what Confluence expects when fetching the placeholder icon in edit mode:

      The update is successful, and the Jira Calendar gadget gets added on the page.

      Actual Results

      In HAR logs, the placeholder request fails with an HTTP 500 error.

      HAR logs
      2025-08-18T17:33:17.192Z           915 ms        4.95 KB                     47f24634         500                        charlie@example..  https://confluence-dev.corp.example.com/s/4102/_/plugins/servlet/gadgets/placeholder?gadgetId=aHR0cHM6Ly9qaXJhLWRldi5jb3JwLmFwcGR5bmFtaWNzLmNvbS9y...
      

      The exception below is thrown in the atlassian-confluence.log file:

      2025-08-18 17:33:18,040 ERROR [http-nio2-8090-exec-7 url: /s/4102/_/plugins/servlet/gadgets/placeholder, /plugins/servlet/gadgets/placeholder; user: charlie@example.com] [[Standalone].[localhost].[/].[servlet-module-container-servlet]] log Servlet.service() for servlet [servlet-module-container-servlet] threw exception
       -- url: /s/4102/_/plugins/servlet/gadgets/placeholder | userName: charlie@example.com | referer: https://confluence-dev.corp.example.com/pages/resumedraft.action?draftId=370278561&draftShareId=61f92da3-d4c2-4f62-9216-cb455b49dfb4& | traceId: 98c27099cd325aef
      
      2025-08-18 17:33:18,072 ERROR [http-nio2-8090-exec-7 url: /500page.jsp; user: charlie@example.com] [atlassian.confluence.status.SystemErrorInformationLogger] logException Unhandled exception, request unique ID: 243bd684-e326-44d0-9fae-2aba8eab85b9
       -- traceId: 98c27099cd325aef
      java.lang.NullPointerException: Cannot invoke "java.awt.Image.getWidth(java.awt.image.ImageObserver)" because "result" is null
       at com.atlassian.confluence.plugins.gadgets.GadgetPlaceholderServlet.getIcon(GadgetPlaceholderServlet.java:280)
       at com.atlassian.confluence.plugins.gadgets.GadgetPlaceholderServlet.getPlaceholderImage(GadgetPlaceholderServlet.java:245) 
      

      A curl from the Confluence instance to retrieve the PNG file using the thumbnail URL of the Jira calendar gadget fails with HTTP 302 redirect

      curl -kv https://jira-dev.corp.example.com/s/-yxlfs2/9120018/1kgqh6/6.1.3/_/download/resources/com.atlassian.jira.ext.calendar:issuescalendar-gadget/calendar-thumb.png
      > GET /s/-yxlfs2/9120018/1kgqh6/6.1.2/_/download/resources/com.atlassian.jira.ext.calendar:issuescalendar-gadget/calendar-thumb.png HTTP/1.1
      > Host: jira-dev.corp.example.com
      > User-Agent: curl/7.76.1
      > Accept: /
      
      TLSv1.2 (IN), TLS header, Unknown (23):
      TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
      TLSv1.2 (IN), TLS header, Unknown (23):
      Mark bundle as not supporting multiuse
      < HTTP/1.1 302 Moved Temporarily
      < Server: Duo/1.0
      < Date: Tue, 18 Aug 2025 10:26:44 GMT
      < Content-Type: text/html
      < Content-Length: 140
      < Connection: keep-alive
      < Location: <to_redirect_url_2fa_url>
      < Strict-Transport-Security: max-age=31536000
      <html>
      <head><title>302 Found</title></head>
      <body>
      <center><h1>302 Found</h1></center>
      <hr><center>Duo/1.0</center>
      </body>
      </html>
      

      Workaround

      Currently, there is no known workaround for this behaviour. A workaround will be added here when available

            Assignee:
            Saba Taseer
            Reporter:
            Saurabh
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: