Author: mriou
Date: Wed Sep  3 09:30:57 2008
New Revision: 691670

URL: http://svn.apache.org/viewvc?rev=691670&view=rev
Log:
Suppression of scheduled invocation checks when response is received.

Modified:
    
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
    
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
    
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SchedulerThread.java
    
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=691670&r1=691669&r2=691670&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
 Wed Sep  3 09:30:57 2008
@@ -819,7 +819,8 @@
             event.setInMem(false);
             event.setType(WorkEvent.Type.INVOKE_CHECK);
             Date future = new Date(System.currentTimeMillis() + (180 * 1000));
-            
_bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event.getDetail(),
 future);
+            String jobId = 
_bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event.getDetail(),
 future);
+            mex.setProperty("invokeCheckJobId", jobId);
         }
     }
 
@@ -1243,6 +1244,10 @@
     public void releasePartnerMex(String mexId) {
         MessageExchangeDAO dao = 
_dao.getConnection().getMessageExchange(mexId);
         dao.release();
+
+        // Canceling invocation check job
+        String jobId = dao.getProperty("invokeCheckJobId");
+        _bpelProcess._engine._contexts.scheduler.cancelJob(jobId);
     }
 
 

Modified: 
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java?rev=691670&r1=691669&r2=691670&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
 Wed Sep  3 09:30:57 2008
@@ -45,5 +45,13 @@
         this.transacted = transacted;
     }
 
-    
+    @Override
+    public int hashCode() {
+        return jobId.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return obj instanceof Job && jobId.equals(((Job) obj).jobId);
+    }
 }

Modified: 
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SchedulerThread.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SchedulerThread.java?rev=691670&r1=691669&r2=691670&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SchedulerThread.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SchedulerThread.java
 Wed Sep  3 09:30:57 2008
@@ -113,6 +113,21 @@
        }
 
        /**
+        * Remove a job to the todo queue.
+        *
+        * @param job
+        */
+       void dequeue(Task task) {
+               _lock.lock();
+               try {
+                       _todo.remove(task);
+                       _activity.signal();
+               } finally {
+                       _lock.unlock();
+               }
+       }
+
+       /**
         * Get the size of the todo queue.
         * 
         * @return

Modified: 
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java?rev=691670&r1=691669&r2=691670&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
 Wed Sep  3 09:30:57 2008
@@ -109,7 +109,6 @@
 
     private Random _random = new Random();
 
-
     public SimpleScheduler(String nodeId, DatabaseDelegate del, Properties 
conf) {
         _nodeId = nodeId;
         _db = del;
@@ -146,7 +145,13 @@
     }
 
     public void cancelJob(String jobId) throws ContextException {
-        // TODO: maybe later, not really necessary.
+        _todo.dequeue(new Job(0, jobId, false, null));
+        try {
+            _db.deleteJob(jobId, _nodeId);
+        } catch (DatabaseException e) {
+            __log.debug("Job removal failed.", e);
+            throw new ContextException("Job removal failed.", e);
+        }
     }
 
     public <T> Future<T> execIsolatedTransaction(final Callable<T> 
transaction) throws Exception, ContextException {


Reply via email to