You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2013/05/02 23:31:44 UTC
svn commit: r1478568 -
/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java
Author: lahiru
Date: Thu May 2 21:31:30 2013
New Revision: 1478568
URL: http://svn.apache.org/r1478568
Log:
fixing thread synchronizing issue with concurrent node execution of workflow.
Modified:
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java
Modified: airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java?rev=1478568&r1=1478567&r2=1478568&view=diff
==============================================================================
--- airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java (original)
+++ airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpreter.java Thu May 2 21:31:30 2013
@@ -163,6 +163,7 @@ public class WorkflowInterpreter {
this.config.getNotifier().workflowStarted(values, keywords);
this.config.getConfiguration().setContextHeader(WorkflowContextHeaderBuilder.getCurrentContextHeader());
+ int lastReadNodeSize = -1;
while (this.getWorkflow().getExecutionState() != WorkflowExecutionState.STOPPED) {
if (getRemainNodesDynamically() == 0) {
notifyViaInteractor(WorkflowExecutionMessage.EXECUTION_STATE_CHANGED, WorkflowExecutionState.PAUSED);
@@ -177,6 +178,14 @@ public class WorkflowInterpreter {
}
// get task list and execute them
ArrayList<Node> readyNodes = this.getReadyNodesDynamically();
+ while(lastReadNodeSize != 0 && lastReadNodeSize == readyNodes.size()){
+ try {
+ Thread.sleep(400);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ lastReadNodeSize = readyNodes.size();
for (final Node node : readyNodes) {
if (node.isBreak()) {
this.notifyPause();