|
From: <ha...@us...> - 2006-10-11 20:19:23
|
Revision: 895
http://svn.sourceforge.net/cogkit/?rev=895&view=rev
Author: hategan
Date: 2006-10-11 13:19:20 -0700 (Wed, 11 Oct 2006)
Log Message:
-----------
some task optimization scheme
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/AbstractGridNode.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/AbstractGridNode.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/AbstractGridNode.java 2006-10-11 20:17:27 UTC (rev 894)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/AbstractGridNode.java 2006-10-11 20:19:20 UTC (rev 895)
@@ -38,6 +38,11 @@
import org.globus.cog.karajan.workflow.ExecutionContext;
import org.globus.cog.karajan.workflow.ExecutionException;
import org.globus.cog.karajan.workflow.events.AbortEvent;
+import org.globus.cog.karajan.workflow.events.EventBus;
+import org.globus.cog.karajan.workflow.events.EventListener;
+import org.globus.cog.karajan.workflow.events.FailureNotificationEvent;
+import org.globus.cog.karajan.workflow.events.FlowEvent;
+import org.globus.cog.karajan.workflow.nodes.FlowNode;
import org.globus.cog.karajan.workflow.nodes.SequentialWithArguments;
public abstract class AbstractGridNode extends SequentialWithArguments implements StatusListener {
@@ -298,4 +303,29 @@
return AbstractionFactory.newSecurityContext(provider);
}
}
+
+ /**
+ * Overriden to release the notification threads as soon as possible.
+ */
+ public void fireNotificationEvent(final FlowEvent event, final VariableStack stack) {
+ try {
+ EventListener caller = (EventListener) stack.getVar(CALLER);
+ if (caller == null) {
+ logger.error("Caller is null");
+ stack.dumpAll();
+ }
+ else {
+ EventBus.post(caller, event);
+ }
+ }
+ catch (VariableNotFoundException ee) {
+ logger.debug("No #caller for: " + this, new Throwable());
+ if (FlowNode.debug) {
+ stack.dumpAll();
+ }
+ EventListener parent = getParent();
+ EventBus.post(parent, new FailureNotificationEvent(this, stack,
+ "No #caller found on stack for " + this, ee));
+ }
+ }
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|