What a mess! For now we just have to restart Tomcat every time we deploy a new build. We may not find a better solution, since even if all of Felix's leaks are fixed, it's been pointed out to me that other libraries such as commons-logging have reloading problems too. Oh well.

Thanks,
Tim

On Dec 1, 2008, at 5:04 PM, Niclas Hedhman wrote:

Tim,
also beware that Sun's JVM caches a lot of the stuff in the resource
management system, and IIRC URLStreamHandlerFactories belong in that
category too, at least if used via the java.net.handler.pkgs system
property. Perhaps the setURLStreamHandlerFactory is better behaved,
but I suggest to check the actual sources to be sure.


Cheers
Niclas

On Tue, Dec 2, 2008 at 1:41 AM, Tim Moore (JIRA) <[EMAIL PROTECTED]> wrote:

[ https://issues.apache.org/jira/browse/FELIX-827?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12652219 #action_12652219 ]

Tim Moore commented on FELIX-827:
---------------------------------

Karl,

Thanks for your response. I'll test the patch. Unfortunately, the problem with memory leaks in webapps is rather bad, because class objects contain a reference to their classloader, and the classloader then contains references to every class that it loaded. So if even one class object reference leaks from a webapp classloader to a parent loader, the entire classloader cannot be collected. This makes it very important for anything in a webapp that registers itself with an object in the system classloader to unregister when the webapp is unloaded. These problems can be very tricky to track down, and until every single leak is patched, the problem will remain.

URLHandlers does not restore the previous URLStreamHandlerFactory after stopping Felix
--------------------------------------------------------------------------------------

               Key: FELIX-827
               URL: https://issues.apache.org/jira/browse/FELIX-827
           Project: Felix
        Issue Type: Improvement
        Components: Framework
  Affects Versions: felix-1.2.1
, felix-1.4.0
          Reporter: Tim Moore
          Assignee: Karl Pauls
           Fix For: felix-1.4.1

Attachments: felix-827.patch, leak.patch, test-felix- handler-1.0-SNAPSHOT.jar, test-felix-handler.zip


I'm running Felix embedded inside a webapp, running in Tomcat.
Tomcat installs its own URLStreamHandlerFactory. Felix swaps it out correctly when I start it, and seems to delegate properly. When the webapp is unloaded, however, and it stops Felix, it does not restore the previous implementation, but rather leaves the existing URLHandlers instance installed. Then, if I try to redeploy the webapp without restarting the JVM, I get errors, because Tomcat automatically sets the URLHandlers class's static members to null when it unloads the webapp. (see https://issues.apache.org/bugzilla/show_bug.cgi?id=41939) I've tested this on 1.2.1 and 1.4.0, and both versions have this problem.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



--
Tim Moore
Atlassian Plugin Developer




Reply via email to