New and Improved 3.13 Beta. Highlights: Shareable filters and dashboards and lots of other goodies. Any feedback can be raised as JIRA issues in the JIRA project.
Issue Details (XML | Word | Printable)

Key: CONF-7600
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Richard Wallace [Atlassian]
Reporter: Chris Kohlhardt
Votes: 5
Watchers: 5
Operations

If you were logged in you would be able to see more operations.
Confluence

Servlet plugin does not unload classes cleanly

Created: 08/Jan/07 08:52 PM   Updated: 28/Nov/07 07:10 PM
Component/s: Plugins
Affects Version/s: 2.2.5, 2.2.9
Fix Version/s: 2.7

Time Tracking:
Not Specified

Environment: stand-alone, OS X, tomcat
Issue Links:
Reference
 

Participants: Chris Kohlhardt, Ivan Benko [Atlassian], Per Fragemann [Atlassian], Richard Wallace [Atlassian] and Stephen Bannasch
Since last comment: 39 weeks, 1 day ago
Resolution Date: 27/Nov/07 11:00 AM
Labels:


 Description  « Hide
Steps to reproduce:

1) Using the plugin manager, install the Gliffy plugin:
http://www.gliffy.com/products/confluencePlugin/download.shtml
2) Add a new Gliffy Diagram
3) View the page containing the Gliffy diagram
4) Using the plugin manager, uninstall the Gliffy plugin
5) Using the plugin manager, install the Gliffy plugin again
6) Attempt to edit the Gliffy diagram

Expected result:
The diagram should open up

Actual result:
The diagram cannot open up. I believe the classes were not unloaded cleanly when the plugin was uninstalled, and this is why this class cast exception pops up. The work-around is to restart Confluence after Gliffy plugin upgrades.

2007-01-08 18:42:06,938 ERROR [[Standalone].[localhost].[/].[servlet-module-container-servlet]] invoke Servlet.service() for servlet servlet-module-container-servlet threw exception
java.lang.ClassCastException
at org.apache.struts.action.ActionServlet.getProcessorForModule(ActionServlet.java:636)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1237)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:440)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at com.atlassian.plugin.descriptors.servlet.ServletModuleContainerServlet.service(ServletModuleContainerServlet.java:38)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:170)
at bucket.custom.FlushingSpringSessionInViewFilter.doFilterInternal(FlushingSpringSessionInViewFilter.java:31)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:73)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:122)
at com.atlassian.confluence.util.error.ProfilingAndErrorFilter.doFilter(ProfilingAndErrorFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.atlassian.core.filters.gzip.GzipFilter.doFilter(GzipFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:552)



 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Ivan Benko [Atlassian] added a comment - 08/Jan/07 10:38 PM
Hi Chris,

Thanks for reporting this problem, we shall look into this problem. Please keep an eye on this issue for updates.

Ivan


Stephen Bannasch added a comment - 26/Apr/07 06:14 PM
This bug just bit me. I didn't read the warning in the Gliffy plugin notes because with the plugin repository it's easy to just pick update.

I'd love to see this fixed.

And if it can't be fixed quickly an plugin attribute that states that Confluence will need to be rebooted after upgrading. Which when the upgrade is requested generates a UI dialog noting this to the admin initiating the installation and allowing them to cancel if they wish and do the upgrade later when a reboot is more appropriate.

In fact having a general service for plugins that displays dialog content befofre and after installation, upgrades, and downgrades would make sense.


Per Fragemann [Atlassian] added a comment - 27/Nov/07 01:43 AM
Despite of checking on this issues status, there has been no real progress on this issue, so i am now removing it from 2.7 since it will not make it anymore.

Richard Wallace [Atlassian] added a comment - 27/Nov/07 11:00 AM
This is fixed in 2.7 and has been for about 2 weeks now. I was waiting until all the reviewers complete CR-208 to mark this closed. I didn't realize that everyone had completed or I would have closed this a while ago. Sorry, my fault for the confusion.

Chris Kohlhardt added a comment - 27/Nov/07 11:04 AM
Is this fix in 2.7-m5? I'd like to test it out.

thanks!

-chris


Richard Wallace [Atlassian] added a comment - 27/Nov/07 11:28 AM
This fix is indeed in 2.7-m5. However, while testing the fix with the Gliffy plugin it didn't fix all the problems with dynamically installing/uninstalling/reinstalling Gliffy. The next problem looks like Gliffy is putting some objects in the global Confluence cache but doesn't clean up after itself when being uninstalled. So when the plugin is reinstalled, the old object created from the previous classloader is retrieved and things go badly. Hopefully this is a simple fix on the Gliffy side to cleanup after itself and then the plugin can be dynamically reloaded.

Chris Kohlhardt added a comment - 28/Nov/07 05:39 PM
Thanks for the additional information. We'll look into fixing this on our end.

thanks!

-chris


Chris Kohlhardt added a comment - 28/Nov/07 07:10 PM
For those who are interested, you can track this issue from our perspective over here:

http://jira.gliffy.com/browse/GLIFFY-430