Details
-
Bug
-
Resolution: Fixed
-
High
-
2.9
-
Mostly Unix/Linux
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.