[ http://issues.apache.org/jira/browse/GERONIMO-1125?page=all ]
     
David Jencks closed GERONIMO-1125:
----------------------------------

    Resolution: Fixed

Patch applied, nice work!

Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/AbstractConnectionManager.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/AbstractSinglePoolConnectionInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/ConnectionHandleInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/ConnectionInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/ConnectionTrackingInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/LocalXAResourceInsertionInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/MCFConnectionInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/MultiPoolConnectionInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/SinglePoolConnectionInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/SinglePoolMatchAllConnectionInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/SubjectInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/TCCLInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/ThreadLocalCachingConnectionInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/TransactionCachingInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/TransactionEnlistingInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/XAResourceInsertionInterceptor.java
Sending        
modules/connector/src/java/org/apache/geronimo/connector/outbound/transactionlog/LogXAResourceInsertionInterceptor.java
Sending        
modules/connector/src/test/org/apache/geronimo/connector/outbound/ConnectionInterceptorTestUtils.java
Sending        
modules/connector/src/test/org/apache/geronimo/connector/outbound/connectiontracking/ConnectionTrackingCoordinatorTest.java
Transmitting file data ...................
Committed revision 331909.

> AbstractSinglePoolConnectionInterceptor$IdleReleaser keeps 
> MultiParentClassLoaders alive
> ----------------------------------------------------------------------------------------
>
>          Key: GERONIMO-1125
>          URL: http://issues.apache.org/jira/browse/GERONIMO-1125
>      Project: Geronimo
>         Type: Bug
>   Components: connector
>     Versions: 1.0-M5
>  Environment: JDK 1.4/WinXP
>     Reporter: Kevan Miller
>     Assignee: David Jencks
>      Fix For: 1.0
>  Attachments: InterceptorDestroy.patch
>
> After a deploy/undeploy of DayTrader, the following chain of references 
> (there are others which I'm investigating) is keeping a MultiClassLoader 
> instance from being marked as available for GC.
> java.util.TaskQueue.queue --> java.util.TimerTask[128]
>     java.util.TimerTask[5] --> 
> org.apache.geronimo.connector.outbound.AbstractSinglePoolConnectionInterceptor$IdleReleaser
>       IdleReleaser.this$0 --> 
> org.apache.geronimo.connector.outbound.SinglePoolConnectionInterceptor 
>         SinglePoolConnectionInterceptor.next --> 
> org.apache.geronimo.connector.outbound.XAResourceInsertionInterceptor
>           XAResourceInsertionInterceptor.next --> 
> org.apache.geronimo.connector.outbound.MCFConnectionInterceptor
>             MCFConnectionInterceptor.stack --> 
> org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor
>               ConnectionTrackingInterceptor.next --> 
> org.apache.geronimo.connector.outbound.TCCLInterceptor
>                 TCCLInterceptor.classLoader --> 
> org.apache.geronimo.kernel.config.MultiParentClassLoader 
> The default interval for the IdleReleaser TimerTask is 30 minutes. Plenty of 
> time for us to run out of PermGen space. Currently the task is never 
> cancelled. I'm working on cancelling the task. However, that's not 
> sufficient. TimerTask.cancel() simply updates state. It doesn't remove the 
> Task from the TimerQueue. So, the task lives until it expires (looks like 
> this "feature" is fixed in 1.5). Easiest fix is to break the chain of 
> references at the IdleReleaser task when the task is cancelled. This should 
> be good enough. Alternative is to implement our own Timer -- which wouldn't 
> be too hard... Or have multiple Timers and cancel the whole timer...
> I'm working on breaking the chain of references at IdleReleaser. Note that 
> this means the IdleReleaser classloader will be kept alive until the 
> TimerTask expires. However, the IdleReleaser classloader is a long-lived 
> Geronimo class loader. So, this shouldn't be a problem, but it's not ideal, 
> either...

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to