Author: mszefler
Date: Tue Mar  6 15:40:48 2007
New Revision: 515370

URL: http://svn.apache.org/viewvc?view=rev&rev=515370
Log:
Upgrade to Quartz 1.5.2.
Attempt to fix cluster manager race.

Modified:
    
incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/JobStoreJTA.java
    
incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/QuartzSchedulerImpl.java
    incubator/ode/trunk/pom.xml

Modified: 
incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/JobStoreJTA.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/JobStoreJTA.java?view=diff&rev=515370&r1=515369&r2=515370
==============================================================================
--- 
incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/JobStoreJTA.java
 (original)
+++ 
incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/JobStoreJTA.java
 Tue Mar  6 15:40:48 2007
@@ -1085,7 +1085,9 @@
      */
     public void releaseAcquiredTrigger(SchedulingContext ctxt, Trigger trigger)
             throws JobPersistenceException {
-
+        if (__log.isDebugEnabled())
+            __log.debug("releaseAcquiredTrigger: " + trigger);
+        
         boolean transOwner = false;
         Connection conn = getNonManagedTXConnection();
         ;
@@ -1123,6 +1125,10 @@
      */
     public TriggerFiredBundle triggerFired(SchedulingContext ctxt, Trigger 
trigger)
             throws JobPersistenceException {
+
+        if (__log.isDebugEnabled())
+            __log.debug("triggerFired: " + trigger);
+        
         boolean transOwner = false;
         Connection conn = getNonManagedTXConnection();
 
@@ -1171,6 +1177,9 @@
      */
     public void triggeredJobComplete(SchedulingContext ctxt, Trigger trigger,
                                      JobDetail jobDetail, int triggerInstCode) 
throws JobPersistenceException {
+        if (__log.isDebugEnabled())
+            __log.debug("triggeredJobComplete: trigger=" + trigger + ", 
jobName=" + jobDetail.getFullName() + ", triggerInstCode="+ triggerInstCode);
+
         boolean transOwner = false;
 
         Connection conn = getNonManagedTXConnection();
@@ -1197,6 +1206,7 @@
     }
 
     protected boolean doRecoverMisfires() throws JobPersistenceException {
+        __log.debug("doRecoverMisfires() callled");
         boolean transOwner = false;
         boolean moreToDo = false;
 
@@ -1214,6 +1224,7 @@
 
             commitConnection(conn);
 
+            __log.debug("doRecoverMisfires() returned moreToDo = " + moreToDo);
             return moreToDo;
         } catch (JobPersistenceException e) {
             rollbackConnection(conn);
@@ -1228,26 +1239,33 @@
 
     }
 
-    protected boolean doCheckin() throws JobPersistenceException {
-
-        boolean transOwner = false;
+    protected synchronized boolean doCheckin() throws JobPersistenceException {
+        __log.debug("doCheckin() called, firstCheckIn=" + firstCheckIn);
         boolean transStateOwner = false;
         boolean recovered = false;
 
         Connection conn = getNonManagedTXConnection();
         try {
+            List failedRecords = (firstCheckIn) ? null : clusterCheckIn(conn);
+
+            
+            if (__log.isDebugEnabled())
+                __log.debug("doCheckin: firstCheckIn=" + firstCheckIn + ", 
failedRecords=" + failedRecords);
 
             getLockHandler().obtainLock(conn, LOCK_STATE_ACCESS);
             transStateOwner = true;
 
-            List failedRecords = clusterCheckIn(conn);
+            if (firstCheckIn || failedRecords.size() > 0) {
+                failedRecords = (firstCheckIn) ? clusterCheckIn(conn) : 
findFailedInstances(conn);
 
-            if (failedRecords.size() > 0) {
-                getLockHandler().obtainLock(conn, LOCK_TRIGGER_ACCESS);
-                getLockHandler().obtainLock(conn, LOCK_JOB_ACCESS);
-                transOwner = true;
-
-                clusterRecover(conn, failedRecords);
+                if (!failedRecords.isEmpty()) {
+                    if (__log.isDebugEnabled())
+                        __log.debug("doChecking: recovering " + failedRecords);
+                    
+                    getLockHandler().obtainLock(conn, LOCK_TRIGGER_ACCESS);
+                    getLockHandler().obtainLock(conn, LOCK_JOB_ACCESS);
+                    clusterRecover(conn, failedRecords);
+                }
                 recovered = true;
             }
 
@@ -1263,14 +1281,17 @@
             closeConnection(conn);
         }
 
-        firstCheckIn = false;
+        firstCheckIn = false;  
 
         return recovered;
     }
 
+    
     protected Connection getNonManagedTXConnection()
             throws JobPersistenceException {
 
+        __log.debug("getNonManagedTXConnection()");
+
         if (_suspenededTx.get() != null) {
             __log.fatal("Internal Error: found suspended transaction: " + 
_suspenededTx.get());
             throw new IllegalStateException("Found suspended transaction: " + 
_suspenededTx.get());
@@ -1323,13 +1344,10 @@
         }
     }
 
-    protected Connection getConnection() throws JobPersistenceException {
-        return new LoggingConnectionWrapper(super.getConnection(), __log);
-    }
-
     @Override
     protected void commitConnection(Connection conn)
             throws JobPersistenceException {
+        __log.debug("COMMIT: "+ conn);
         try {
             _txm.commit();
         } catch (Exception ex) {
@@ -1341,6 +1359,7 @@
     @Override
     protected void rollbackConnection(Connection conn)
             throws JobPersistenceException {
+        __log.debug("ROLLBACK: "+ conn);
         try {
             _txm.rollback();
         } catch (Exception e) {
@@ -1380,13 +1399,10 @@
     public boolean getUseDBLocks() {
         return false;
     }
-    public boolean isClustered() {
-        return false;
-    }
+    
     public boolean isLockOnInsert() {
         return false;
     }
-
 
     protected Semaphore getLockHandler() {
         return _lockHandler == null ? super.getLockHandler() : _lockHandler;

Modified: 
incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/QuartzSchedulerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/QuartzSchedulerImpl.java?view=diff&rev=515370&r1=515369&r2=515370
==============================================================================
--- 
incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/QuartzSchedulerImpl.java
 (original)
+++ 
incubator/ode/trunk/bpel-scheduler-quartz/src/main/java/org/apache/ode/bpel/scheduler/quartz/QuartzSchedulerImpl.java
 Tue Mar  6 15:40:48 2007
@@ -19,13 +19,33 @@
 
 package org.apache.ode.bpel.scheduler.quartz;
 
+import java.sql.Connection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+
+import javax.sql.DataSource;
+import javax.transaction.Status;
+import javax.transaction.Synchronization;
+import javax.transaction.SystemException;
+import javax.transaction.TransactionManager;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.iapi.ContextException;
 import org.apache.ode.bpel.iapi.Scheduler;
-import org.apache.ode.bpel.iapi.Scheduler.JobProcessor;
 import org.apache.ode.utils.GUID;
-import org.quartz.*;
+import org.quartz.JobDataMap;
+import org.quartz.JobDetail;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.SchedulerException;
+import org.quartz.SimpleTrigger;
+import org.quartz.Trigger;
 import org.quartz.core.QuartzScheduler;
 import org.quartz.core.QuartzSchedulerResources;
 import org.quartz.core.SchedulingContext;
@@ -36,20 +56,6 @@
 import org.quartz.spi.ThreadPool;
 import org.quartz.utils.DBConnectionManager;
 
-import javax.sql.DataSource;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.TransactionManager;
-import java.sql.Connection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-
 /**
  * Quartz-based scheduler.
  *
@@ -127,7 +133,9 @@
             _quartz.getSchedulerInstanceId();
             __instanceMap.put(_id, this);
         } catch (Exception ex) {
-            throw new ContextException(ex.getMessage(), ex);
+            String emsg = "Error intitializing scheduler.";
+            __log.error(emsg,ex);
+            throw new ContextException(emsg, ex);
         }
     }
 

Modified: incubator/ode/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/pom.xml?view=diff&rev=515370&r1=515369&r2=515370
==============================================================================
--- incubator/ode/trunk/pom.xml (original)
+++ incubator/ode/trunk/pom.xml Tue Mar  6 15:40:48 2007
@@ -85,7 +85,7 @@
         <xmlbeansVersion>2.1.0</xmlbeansVersion>
         <springVersion>1.2.6</springVersion>
         <derbyVersion>10.1.2.1</derbyVersion>
-        <quartzVersion>1.5.1</quartzVersion>
+        <quartzVersion>1.5.2</quartzVersion>
         <xstreamVersion>1.2</xstreamVersion>
         <xalanVersion>2.7.0</xalanVersion>
         <hsqlDbVersion>1.8.0.7</hsqlDbVersion>


Reply via email to