Greetings.

When the "end-tasks" attribute is set to true leaving the task-node causes all 
pending tasks to end, even tasks that are associated with different nodes.


  |   public void removeTaskInstanceSynchronization(Token token) {
  |     TaskMgmtInstance tmi = getTaskMgmtInstance(token);
  |     Collection taskInstances = tmi.getTaskInstances();
  |     if (taskInstances!=null) {
  |       Iterator iter = taskInstances.iterator();
  |       while (iter.hasNext()) {
  |         TaskInstance taskInstance = (TaskInstance) iter.next();
  |         // remove signalling
  |         if (taskInstance.isSignalling()
  |             &&(token==taskInstance.getToken())) {
  |           taskInstance.setSignalling(false);
  |         }
  |         // remove blocking
  |         if (taskInstance.isBlocking()
  |             &&(token==taskInstance.getToken())) {
  |           taskInstance.setBlocking(false);
  |         }
  |         // if this is a non-finished task and all those
  |         // tasks should be finished
  |         if ( (! taskInstance.hasEnded())
  |              && (endTasks)
  |            ) {
  |           // end this task
  |           taskInstance.end();
  |         }
  |       }
  |     }
  |   }
  | 

You'll notice that for resetting "signalling" and "blocking" there is a check 
for the current token, but "endTasks" just ends the task instance. Perhaps a 
check for the current token should enclose all the attribute processing?
 

  |   public void removeTaskInstanceSynchronization(Token token) {
  |     TaskMgmtInstance tmi = getTaskMgmtInstance(token);
  |     Collection taskInstances = tmi.getTaskInstances();
  |     if (taskInstances!=null) {
  |       Iterator iter = taskInstances.iterator();
  |       while (iter.hasNext()) {
  |         TaskInstance taskInstance = (TaskInstance) iter.next();
  |         if (token==taskInstance.getToken()) {
  |            // remove signalling
  |            if (taskInstance.isSignalling()) {
  |              taskInstance.setSignalling(false);
  |            }
  |            // remove blocking
  |            if (taskInstance.isBlocking()) {
  |              taskInstance.setBlocking(false);
  |            }
  |            // if this is a non-finished task and all those
  |            // tasks should be finished
  |            if ( (! taskInstance.hasEnded())
  |                 && (endTasks)
  |               ) {
  |              // end this task
  |              taskInstance.end();
  |            }
  |         }
  |       }
  |     }
  |   }
  | 


Anyway, this appears to be a bug.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3948151#3948151

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3948151


-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to