[ 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