Author: boisvert
Date: Thu Oct 1 01:08:11 2009
New Revision: 820504
URL: http://svn.apache.org/viewvc?rev=820504&view=rev
Log:
SchedulerTasks should be dispatched via executor to avoid holding (and
deadlocking with) SchedulerThread
Modified:
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/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=820504&r1=820503&r2=820504&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
Thu Oct 1 01:08:11 2009
@@ -577,7 +577,7 @@
}
}
- public void runTask(Task task) {
+ public void runTask(final Task task) {
if (task instanceof Job) {
Job job = (Job)task;
if( job.detail.get("runnable") != null ) {
@@ -585,8 +585,18 @@
} else {
runJob(job);
}
- } else if (task instanceof SchedulerTask)
- ((SchedulerTask) task).run();
+ } else if (task instanceof SchedulerTask) {
+ _exec.submit(new Callable<Void>() {
+ public Void call() throws Exception {
+ try {
+ ((SchedulerTask) task).run();
+ } catch (Exception ex) {
+ __log.error("Error during SchedulerTask execution",
ex);
+ }
+ return null;
+ }
+ });
+ }
}
public void updateHeartBeat(String nodeId) {