Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-19159

Prevent NPE being thrown on recently updated dashboard.

    XMLWordPrintable

Details

    Description

      When testing an upgrade, customer was getting NPE being thrown on the dashboard, with the following stack traces as the cause:

      2010-03-24 19:26:58,469 ERROR [http-9823-1] [atlassian.confluence.pages.DefaultAttachmentManager] getAttachmentData Could not find data for attachment: Attachment: Options.GIF v.1 (92241928) nwilkins - java.io.FileNotFoundException: /home/user/confluence/data/attachments/ver003/177/12/262177/134/78/92078134/92241928 (No such file or directory)
      ...
      2010-03-24 19:26:58,473 ERROR [http-9823-1] [renderer.v2.components.MacroRendererComponent] processMacro Unexpected error formatting macro: recently-updated-dashboard
       -- referer: http://HOST:PORT/admin/search-indexes.action | url: /dashboard.action | userName: admin | action: dashboard
      java.lang.NullPointerException
      	at com.atlassian.core.util.ImageInfo.read(ImageInfo.java:1228)
      	at com.atlassian.core.util.ImageInfo.check(ImageInfo.java:249)
      	at com.atlassian.confluence.pages.attachments.DefaultImageDetailsManager.buildImageDetails(DefaultImageDetailsManager.java:87)
      	at com.atlassian.confluence.pages.attachments.DefaultImageDetailsManager.createImageDetails(DefaultImageDetailsManager.java:56)
      	at com.atlassian.confluence.pages.attachments.DefaultImageDetailsManager.getImageDetails(DefaultImageDetailsManager.java:48)
      	at com.atlassian.confluence.pages.thumbnail.DefaultThumbnailManager.getThumbnailInfo(DefaultThumbnailManager.java:132)
      	at com.atlassian.confluence.pages.thumbnail.DefaultThumbnailManager.getThumbnailInfo(DefaultThumbnailManager.java:127)
      	at com.atlassian.confluence.util.DefaultThumbnailInfoFactory.getThumbnailInfo(DefaultThumbnailInfoFactory.java:22)
      	at com.atlassian.confluence.plugins.macros.dashboard.RecentlyUpdatedContentMacro.addThumbnailData(RecentlyUpdatedContentMacro.java:406)
      	at com.atlassian.confluence.plugins.macros.dashboard.RecentlyUpdatedContentMacro.getChangeSets(RecentlyUpdatedContentMacro.java:357)
      	at com.atlassian.confluence.plugins.macros.dashboard.RecentlyUpdatedContentMacro.execute(RecentlyUpdatedContentMacro.java:303)
      	at com.atlassian.confluence.macro.ContentFilteringMacro.execute(ContentFilteringMacro.java:106)
      	at com.atlassian.renderer.v2.macro.ResourceAwareMacroDecorator.execute(ResourceAwareMacroDecorator.java:51)
      	at com.atlassian.renderer.v2.components.MacroRendererComponent.executeMacro(MacroRendererComponent.java:188)
      	at com.atlassian.renderer.v2.components.MacroRendererComponent.processMacro(MacroRendererComponent.java:154)
      	at com.atlassian.renderer.v2.components.MacroRendererComponent.makeMacro(MacroRendererComponent.java:58)
      	at com.atlassian.renderer.v2.components.WikiContentRendererHandler.handleMacro(WikiContentRendererHandler.java:18)
      	at com.atlassian.renderer.v2.WikiMarkupParser.makeMacro(WikiMarkupParser.java:120)
      	at com.atlassian.renderer.v2.WikiMarkupParser.handlePotentialMacro(WikiMarkupParser.java:105)
      	at com.atlassian.renderer.v2.WikiMarkupParser.parse(WikiMarkupParser.java:60)
      	at com.atlassian.renderer.v2.components.MacroRendererComponent.render(MacroRendererComponent.java:43)
      	at com.atlassian.renderer.v2.V2Renderer.render(V2Renderer.java:53)
      	at com.atlassian.renderer.v2.plugin.PluggableV2Renderer.render(PluggableV2Renderer.java:30)
      	at com.atlassian.renderer.v2.V2RendererFacade.convertWikiToXHtml(V2RendererFacade.java:57)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:585)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
      ...
      

      The NPE is being thrown because the DefaultAttachmentManager cannot find the attachment in the getAttachmentData(Attachment) method.

      This is most likely because when copying the <CONFLUENCE_HOME> and the database over from production to test on the test server, they were copied over from a live instance and are slightly out of sync, hence the attachment does not exist in the home directory though it does in the database.

      Point of the story is, we shouldn't be throwing NPEs

      Attachments

        Activity

          People

            rthomas@atlassian.com RyanA
            pkamal Partha
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: