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;