You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bo...@apache.org on 2009/10/01 03:08:11 UTC

svn commit: r820504 - /ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java

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) {