[jboss-svn-commits] JBL Code SVN: r27434 - labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jul 2 07:45:42 EDT 2009


Author: kevin.conner at jboss.com
Date: 2009-07-02 07:45:42 -0400 (Thu, 02 Jul 2009)
New Revision: 27434

Modified:
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java
Log:
double check returned job before rescheduling: JBESB-2667

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java	2009-07-02 11:29:12 UTC (rev 27433)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java	2009-07-02 11:45:42 UTC (rev 27434)
@@ -107,29 +107,33 @@
                 if (jobSession != null)
                 {
                     final Set<Long> monitoredJobs = new HashSet<Long>() ;
+                    final long now = System.currentTimeMillis() ;
                     for(int count = 0 ; count < maxRetryJobs ; count++)
                     {
                         final Job job = jobSession.getFirstDueJob(RETRY_EXECUTOR, monitoredJobs) ;
-                        if (job == null)
+                        if ((job == null) || (job.getDueDate().getTime() > now))
                         {
                             break ;
                         }
                         monitoredJobs.add(Long.valueOf(job.getId())) ;
-                        job.setLockOwner(null) ;
-                        if (job instanceof Timer)
+                        if (RETRY_EXECUTOR.equals(job.getLockOwner()))
                         {
-                            final Timer timer = (Timer)job ;
-                            if (LOGGER.isDebugEnabled()) {
-                                LOGGER.debug("Rescheduling timer " + timer.getId());
+                            job.setLockOwner(null) ;
+                            if (job instanceof Timer)
+                            {
+                                final Timer timer = (Timer)job ;
+                                if (LOGGER.isDebugEnabled()) {
+                                    LOGGER.debug("Rescheduling timer " + timer.getId());
+                                }
+                                jbpmContext.getServices().getSchedulerService().createTimer(timer);
                             }
-                            jbpmContext.getServices().getSchedulerService().createTimer(timer);
-                        }
-                        else
-                        {
-                            if (LOGGER.isDebugEnabled()) {
-                                LOGGER.debug("Rescheduling job " + job.getId());
+                            else
+                            {
+                                if (LOGGER.isDebugEnabled()) {
+                                    LOGGER.debug("Rescheduling job " + job.getId());
+                                }
+                                jbpmContext.getServices().getMessageService().send(job) ;
                             }
-                            jbpmContext.getServices().getMessageService().send(job) ;
                         }
                     }
                 }




More information about the jboss-svn-commits mailing list