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>