You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2008/08/20 02:25:38 UTC

svn commit: r687209 - in /ode/trunk: bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/ scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/

Author: mriou
Date: Tue Aug 19 17:25:37 2008
New Revision: 687209

URL: http://svn.apache.org/viewvc?rev=687209&view=rev
Log:
Keep retrying instead of creating bad-job-XXX.ser

Modified:
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
    ode/trunk/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
    ode/trunk/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java?rev=687209&r1=687208&r2=687209&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java Tue Aug 19 17:25:37 2008
@@ -496,7 +496,7 @@
 
             process.handleWorkEvent(jobInfo);
         } catch (Exception ex) {
-            throw new JobProcessorException(ex, true);
+            throw new JobProcessorException(ex, jobInfo.jobDetail.get("inmem") == null);
         } finally {
             _mngmtLock.readLock().unlock();
         }

Modified: ode/trunk/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
URL: http://svn.apache.org/viewvc/ode/trunk/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java?rev=687209&r1=687208&r2=687209&view=diff
==============================================================================
--- ode/trunk/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java (original)
+++ ode/trunk/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java Tue Aug 19 17:25:37 2008
@@ -313,10 +313,10 @@
             try {
                 _jobProcessor.onScheduledJob(jobInfo);
             } catch (JobProcessorException jpe) {
-                if (jpe.retry) {
-                    __log.error("Error while processing transaction, retrying.", jpe);
-                    doRetry(job);
-                } else __log.error("Error while processing transaction, no retry.", jpe);
+                if (jpe.retry)
+                    __log.error("Error while processing transaction, retrying in " + doRetry(job) + "s");
+                else
+                    __log.error("Error while processing transaction, no retry.", jpe);
             }
         } catch (Exception ex) {
             __log.error("Error in scheduler processor.", ex);
@@ -470,15 +470,17 @@
         } finally {
             __log.debug("node recovery complete");
         }
-
     }
 
-    private void doRetry(Job job) throws DatabaseException {
-        Calendar retryTime = Calendar.getInstance();
-        retryTime.add(Calendar.SECOND, 2);
-        job.detail.put("retry", job.detail.get("retry") != null ? (((Integer)job.detail.get("retry")) + 1) : 1);
-        Job jobRetry = new Job(retryTime.getTime().getTime(), true, job.detail);
+    private long doRetry(Job job) throws DatabaseException {
+        int retry = job.detail.get("retry") != null ? (((Integer)job.detail.get("retry")) + 1) : 0;
+        job.detail.put("retry", retry);
+        long delay = (long)(Math.pow(5, retry));
+        // Don't want to go further than a day
+        if (delay > 24*60*60) delay = 24*60*60;
+        Job jobRetry = new Job(System.currentTimeMillis() + delay*1000, true, job.detail);
         _db.insertJob(jobRetry, _nodeId, false);
+        return delay;
     }
 
     private abstract class SchedulerTask extends Task implements Runnable {

Modified: ode/trunk/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java
URL: http://svn.apache.org/viewvc/ode/trunk/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java?rev=687209&r1=687208&r2=687209&view=diff
==============================================================================
--- ode/trunk/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java (original)
+++ ode/trunk/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java Tue Aug 19 17:25:37 2008
@@ -44,7 +44,7 @@
             _txm.commit();
         }
 
-        Thread.sleep(5000);
+        Thread.sleep(10000);
         assertEquals(3, _tried);
     }