[jboss-cvs] JBossAS SVN: r87565 - trunk/server/src/main/org/jboss/ejb/txtimer.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Apr 20 06:33:49 EDT 2009
Author: galder.zamarreno at jboss.com
Date: 2009-04-20 06:33:48 -0400 (Mon, 20 Apr 2009)
New Revision: 87565
Modified:
trunk/server/src/main/org/jboss/ejb/txtimer/EJBTimerServiceImpl.java
trunk/server/src/main/org/jboss/ejb/txtimer/TimerServiceImpl.java
Log:
[JBAS-6677] After cancellation or expiration of single action timer, timedObjectId to TimerServiceImpl mapping is cleaned up to avoid leaks leading from entities not being removed via the EJB container.
Modified: trunk/server/src/main/org/jboss/ejb/txtimer/EJBTimerServiceImpl.java
===================================================================
--- trunk/server/src/main/org/jboss/ejb/txtimer/EJBTimerServiceImpl.java 2009-04-20 09:53:51 UTC (rev 87564)
+++ trunk/server/src/main/org/jboss/ejb/txtimer/EJBTimerServiceImpl.java 2009-04-20 10:33:48 UTC (rev 87565)
@@ -52,6 +52,7 @@
*
* @author Thomas.Diesler at jboss.org
* @author Dimitris.Andreadis at jboss.org
+ * @author Galder Zamarreño
* @version $Revision$
* @since 07-Apr-2004
*/
@@ -316,7 +317,7 @@
if (timerService == null)
{
timerService = new TimerServiceImpl(timedObjectId, invoker,
- transactionManager, persistencePolicy, retryPolicy, timerIdGenerator);
+ transactionManager, persistencePolicy, retryPolicy, timerIdGenerator, this);
log.debug("createTimerService: " + timerService);
timerServiceMap.put(timedObjectId, timerService);
}
@@ -518,5 +519,15 @@
}
}
return retBuffer.toString();
- }
+ }
+
+ void noMoreTimers(TimedObjectId timedObjectId)
+ {
+ if (log.isTraceEnabled())
+ {
+ log.trace("No active timers available for " + timedObjectId.getContainerId() + " and primary key " + timedObjectId.getInstancePk());
+ }
+
+ timerServiceMap.remove(timedObjectId);
+ }
}
Modified: trunk/server/src/main/org/jboss/ejb/txtimer/TimerServiceImpl.java
===================================================================
--- trunk/server/src/main/org/jboss/ejb/txtimer/TimerServiceImpl.java 2009-04-20 09:53:51 UTC (rev 87564)
+++ trunk/server/src/main/org/jboss/ejb/txtimer/TimerServiceImpl.java 2009-04-20 10:33:48 UTC (rev 87565)
@@ -49,6 +49,7 @@
*
* @author Thomas.Diesler at jboss.org
* @author Dimitris.Andreadis at jboss.org
+ * @author Galder Zamarreño
* @version $Revision$
* @since 07-Apr-2004
*/
@@ -74,6 +75,8 @@
// Map<TimerHandleImpl,TimerImpl>
private Map timers = new HashMap();
+ private EJBTimerServiceImpl ejbTimerService;
+
// Constructors --------------------------------------------------
/**
@@ -84,14 +87,16 @@
public TimerServiceImpl(
TimedObjectId timedObjectId, TimedObjectInvoker timedObjectInvoker,
TransactionManager transactionManager, PersistencePolicy persistencePolicy,
- RetryPolicy retryPolicy, TimerIdGenerator timerIdGenerator)
+ RetryPolicy retryPolicy, TimerIdGenerator timerIdGenerator,
+ EJBTimerServiceImpl ejbTimerService)
{
this.timedObjectId = timedObjectId;
this.timedObjectInvoker = timedObjectInvoker;
this.transactionManager = transactionManager;
this.persistencePolicy = persistencePolicy;
this.timerIdGenerator = timerIdGenerator;
- this.retryPolicy = retryPolicy;
+ this.retryPolicy = retryPolicy;
+ this.ejbTimerService = ejbTimerService;
}
// Public --------------------------------------------------------
@@ -326,6 +331,10 @@
{
persistencePolicy.deleteTimer(txtimer.getTimerId(), txtimer.getTimedObjectId());
timers.remove(new TimerHandleImpl(txtimer));
+ if (timers.isEmpty())
+ {
+ ejbTimerService.noMoreTimers(timedObjectId);
+ }
}
}
More information about the jboss-cvs-commits
mailing list