You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ke...@apache.org on 2007/03/16 21:34:36 UTC
svn commit: r519134 - in
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer:
DatabaseTimerStore.java EjbTimerServiceImpl.java MemoryTimerStore.java
TimerData.java TimerStore.java
Author: kevan
Date: Fri Mar 16 13:34:34 2007
New Revision: 519134
URL: http://svn.apache.org/viewvc?view=rev&rev=519134
Log:
OPENEJB-540 Add a timer back to the TimerStore, when a Timer.cancel() is rolled back.
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DatabaseTimerStore.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/MemoryTimerStore.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerStore.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DatabaseTimerStore.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DatabaseTimerStore.java?view=diff&rev=519134&r1=519133&r2=519134
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DatabaseTimerStore.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/DatabaseTimerStore.java Fri Mar 16 13:34:34 2007
@@ -148,6 +148,15 @@
return timerData;
}
+
+ /**
+ * Used to restore a Timer that was cancelled, but the Transaction has been rolled back.
+ */
+ public void addTimerData(TimerData timerData) throws TimerStoreException {
+ // TODO Need to verify how to handle this. Presumably, the Transaction rollback would "restore" this timer. So, no further action would be required.
+ // The MemoryTimerStore does require this capability...
+ }
+
public void removeTimer(long timerId) {
boolean threwException = false;
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?view=diff&rev=519134&r1=519133&r2=519134
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java Fri Mar 16 13:34:34 2007
@@ -141,6 +141,18 @@
// make sure it was removed from the strore
timerStore.removeTimer(timerData.getId());
}
+
+ /**
+ * Returns a timerData to the TimerStore, if a cancel() is rolled back.
+ * @param timerData the timer to be returned to the timer store
+ */
+ public void addTimerData(TimerData timerData) {
+ try {
+ timerStore.addTimerData(timerData);
+ } catch (Exception e) {
+ log.warning("Could not add timer " + e.getMessage() + " at (now) " + System.currentTimeMillis() + " for " + timerData.getExpiration().getTime());
+ }
+ }
public Timer getTimer(long timerId) {
TimerData timerData = timerStore.getTimer((String)deployment.getDeploymentID(), timerId);
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/MemoryTimerStore.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/MemoryTimerStore.java?view=diff&rev=519134&r1=519133&r2=519134
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/MemoryTimerStore.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/MemoryTimerStore.java Fri Mar 16 13:34:34 2007
@@ -74,6 +74,11 @@
Collection<TimerData> timerDatas = new ArrayList<TimerData>(tasks.getTasks().values());
return timerDatas;
}
+
+ // used to re-register a TimerData, if a cancel() is rolledback...
+ public void addTimerData(TimerData timerData) throws TimerStoreException {
+ getTasks().addTimerData(timerData);
+ }
public TimerData createTimer(EjbTimerServiceImpl timerService, String deploymentId, Object primaryKey, Object info, Date expiration, long intervalDuration) throws TimerStoreException {
long id = counter.incrementAndGet();
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java?view=diff&rev=519134&r1=519133&r2=519134
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java Fri Mar 16 13:34:34 2007
@@ -163,6 +163,7 @@
// if the tx was rolled back, reschedule the timer with the java.util.Timer
if (!committed) {
cancelled = false;
+ timerService.addTimerData(TimerData.this);
timerService.schedule(TimerData.this);
}
}
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerStore.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerStore.java?view=diff&rev=519134&r1=519133&r2=519134
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerStore.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerStore.java Fri Mar 16 13:34:34 2007
@@ -26,6 +26,8 @@
Collection<TimerData> getTimers(String deploymentId);
Collection<TimerData> loadTimers(EjbTimerServiceImpl timerService, String deploymentId) throws TimerStoreException;
+
+ void addTimerData(TimerData timerData) throws TimerStoreException;
TimerData createTimer(EjbTimerServiceImpl timerService, String deploymentId, Object primaryKey, Object info, Date expiration, long intervalDuration) throws TimerStoreException;