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

Plugins can lose access to resources in inner jars

    XMLWordPrintable

Details

    Description

      Some Confluence plugins, such as the Plugin Repository Client, have "inner" jar files.
      Confluence 2.9 opens these in the JVM's temp directory.
      On some systems this defaults to /tmp or another directory that gets routinely cleaned.
      It is possible for these jar files to get removed from the temp directory while Confluence is running, and when this happens Confluence has no coping mechanism. It still expects the jars to be in those locations and the resources to be within them. When it needs these resources and doesn't find them in those locations it doesn't look anywhere else.

      User Symptoms
      The symptom that has been tied to this problem thus far is that the plugin repository screen works initially, but after Confluence has been up for a while, it starts returning:

      org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource '/templates/repositoryFrame.vm'
      at com.atlassian.confluence.util.velocity.ConfigurableResourceManager.loadResource(ConfigurableResourceManager.java:400)
      

      Workarounds
      This error can be resolved by restarting Confluence.
      If you change the Java system property java.io.tmpdir to something you know doesn't get regularly cleared, then this should prevent the problem reoccurring.

      Suggested fixes
      We could either rewrite the PluginsClassLoader to be prepared for resources to be deleted while Confluence is up,
      OR
      Not load inner jars into java.io.tmpdir
      OR
      both.

      Attachments

        Activity

          People

            mjensen m@ (Inactive)
            don.willis@atlassian.com Don Willis
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: