Taverna 2

InvocationContextImpl is not thread safe

Details

  • Description:
    Hide

    InvocationContextImpl does not cope if a thread is doing getEntities when another thread is adding or deleting an entity. The methods should be synchronized.

    WARN  2010-02-01 14:45:25,848 (net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke:196) - Failed (INVOCATION) invoking Local service org.embl.ebi.escience.scuflworkers.java.StringConcat for job DispatchJobEvent facade0:Workflow1:Concatenate_two_strings[2 0 22 ]: Uncaught exception while invoking Local service org.embl.ebi.escience.scuflworkers.java.StringConcat
    java.util.ConcurrentModificationException
            at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
            at java.util.AbstractList$Itr.next(Unknown Source)
            at net.sf.taverna.t2.invocation.impl.InvocationContextImpl.getEntities(InvocationContextImpl.java:60)
            at net.sf.taverna.t2.reference.impl.AbstractT2ReferenceGenerator.nextReferenceSetReference(AbstractT2ReferenceGenerator.java:53)
            at net.sf.taverna.t2.reference.impl.ReferenceSetServiceImpl.registerReferenceSet(ReferenceSetServiceImpl.java:116)
            at net.sf.taverna.t2.reference.impl.ReferenceServiceImpl.getNameForObject(ReferenceServiceImpl.java:329)
            at net.sf.taverna.t2.reference.impl.ReferenceServiceImpl.register(ReferenceServiceImpl.java:141)
            at net.sf.taverna.t2.activities.beanshell.BeanshellActivity$1.run(BeanshellActivity.java:177)
            at java.lang.Thread.run(Unknown Source)

    when running attached workflow with inmemory and no provenance in 2.1.0

    Show
    InvocationContextImpl does not cope if a thread is doing getEntities when another thread is adding or deleting an entity. The methods should be synchronized.
    WARN  2010-02-01 14:45:25,848 (net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke:196) - Failed (INVOCATION) invoking Local service org.embl.ebi.escience.scuflworkers.java.StringConcat for job DispatchJobEvent facade0:Workflow1:Concatenate_two_strings[2 0 22 ]: Uncaught exception while invoking Local service org.embl.ebi.escience.scuflworkers.java.StringConcat
    java.util.ConcurrentModificationException
            at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
            at java.util.AbstractList$Itr.next(Unknown Source)
            at net.sf.taverna.t2.invocation.impl.InvocationContextImpl.getEntities(InvocationContextImpl.java:60)
            at net.sf.taverna.t2.reference.impl.AbstractT2ReferenceGenerator.nextReferenceSetReference(AbstractT2ReferenceGenerator.java:53)
            at net.sf.taverna.t2.reference.impl.ReferenceSetServiceImpl.registerReferenceSet(ReferenceSetServiceImpl.java:116)
            at net.sf.taverna.t2.reference.impl.ReferenceServiceImpl.getNameForObject(ReferenceServiceImpl.java:329)
            at net.sf.taverna.t2.reference.impl.ReferenceServiceImpl.register(ReferenceServiceImpl.java:141)
            at net.sf.taverna.t2.activities.beanshell.BeanshellActivity$1.run(BeanshellActivity.java:177)
            at java.lang.Thread.run(Unknown Source)
    when running attached workflow with inmemory and no provenance in 2.1.0
  1. as.t2flow
    (45 kB)
    Stian Soiland-Reyes
    2010-02-01 11:06

Issue Links

Activity

Hide
Hudson Daemon added a comment - 2010-01-27 17:39

Integrated in net.sf.taverna.t2.core #572
Made entities synchronized and also synchronized the looping over it. Attempt to solve

Show
Hudson Daemon added a comment - 2010-01-27 17:39 Integrated in net.sf.taverna.t2.core #572 Made entities synchronized and also synchronized the looping over it. Attempt to solve
Hide
Stian Soiland-Reyes added a comment - 2010-02-01 09:54 - edited

Can't release new workflowmodel-impl as a patch for 2.1.1 - but will instead branch dataflow-activity to temporary proxy away the addEntity() method of the Context when inside a nested workflow.

Real synchronization fixed in WorkflowInstanceFacadeImpl and InvocationContextImpl

Show
Stian Soiland-Reyes added a comment - 2010-02-01 09:54 - edited Can't release new workflowmodel-impl as a patch for 2.1.1 - but will instead branch dataflow-activity to temporary proxy away the addEntity() method of the Context when inside a nested workflow. Real synchronization fixed in WorkflowInstanceFacadeImpl and InvocationContextImpl
Hide
Stian Soiland-Reyes added a comment - 2010-02-01 11:06

attached workflow replicates "Paul's problem" without using web services.

Note the need to use both string constants, beanshells and nested workflows - as beanshells are executed non-threaded.

Running this with in memory and no provenance should yield something like this at a random processor:

WARN  2010-02-01 11:05:28,778 (net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke:196) - Failed (INVOCATION) invoking Local service org.embl.ebi.escience.scuflworkers.java.StringConcat for job DispatchJobEvent facade0:Workflow1:Workflow19:invocation24141:facade2238:Workflow19:Concatenate_two_strings[]: Uncaught exception while invoking Local service org.embl.ebi.escience.scuflworkers.java.StringConcat
java.lang.NullPointerException
	at net.sf.taverna.t2.workflowmodel.impl.DataflowOutputPortImpl$1.receiveEvent(DataflowOutputPortImpl.java:65)
	at net.sf.taverna.t2.workflowmodel.impl.BasicEventForwardingOutputPort.sendEvent(BasicEventForwardingOutputPort.java:70)
	at net.sf.taverna.t2.workflowmodel.impl.ProcessorOutputPortImpl.receiveEvent(ProcessorOutputPortImpl.java:54)
	at net.sf.taverna.t2.workflowmodel.impl.ProcessorCrystalizerImpl.jobCreated(ProcessorCrystalizerImpl.java:66)
	at net.sf.taverna.t2.workflowmodel.impl.AbstractCrystalizer.receiveEvent(AbstractCrystalizer.java:88)
	at net.sf.taverna.t2.workflowmodel.impl.ProcessorImpl$2.pushEvent(ProcessorImpl.java:143)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.impl.DispatchStackImpl$TopLayer.receiveResult(DispatchStackImpl.java:277)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize.receiveResult(Parallelize.java:165)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.AbstractDispatchLayer.receiveResult(AbstractDispatchLayer.java:84)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.AbstractErrorHandlerLayer.receiveResult(AbstractErrorHandlerLayer.java:136)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.AbstractErrorHandlerLayer.receiveResult(AbstractErrorHandlerLayer.java:136)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke$InvokeCallBack.receiveResult(Invoke.java:300)
	at net.sf.taverna.t2.activities.beanshell.BeanshellActivity$1.run(BeanshellActivity.java:181)
	at java.lang.Thread.run(Thread.java:619)
Show
Stian Soiland-Reyes added a comment - 2010-02-01 11:06 attached workflow replicates "Paul's problem" without using web services. Note the need to use both string constants, beanshells and nested workflows - as beanshells are executed non-threaded. Running this with in memory and no provenance should yield something like this at a random processor:
WARN  2010-02-01 11:05:28,778 (net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke:196) - Failed (INVOCATION) invoking Local service org.embl.ebi.escience.scuflworkers.java.StringConcat for job DispatchJobEvent facade0:Workflow1:Workflow19:invocation24141:facade2238:Workflow19:Concatenate_two_strings[]: Uncaught exception while invoking Local service org.embl.ebi.escience.scuflworkers.java.StringConcat
java.lang.NullPointerException
	at net.sf.taverna.t2.workflowmodel.impl.DataflowOutputPortImpl$1.receiveEvent(DataflowOutputPortImpl.java:65)
	at net.sf.taverna.t2.workflowmodel.impl.BasicEventForwardingOutputPort.sendEvent(BasicEventForwardingOutputPort.java:70)
	at net.sf.taverna.t2.workflowmodel.impl.ProcessorOutputPortImpl.receiveEvent(ProcessorOutputPortImpl.java:54)
	at net.sf.taverna.t2.workflowmodel.impl.ProcessorCrystalizerImpl.jobCreated(ProcessorCrystalizerImpl.java:66)
	at net.sf.taverna.t2.workflowmodel.impl.AbstractCrystalizer.receiveEvent(AbstractCrystalizer.java:88)
	at net.sf.taverna.t2.workflowmodel.impl.ProcessorImpl$2.pushEvent(ProcessorImpl.java:143)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.impl.DispatchStackImpl$TopLayer.receiveResult(DispatchStackImpl.java:277)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize.receiveResult(Parallelize.java:165)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.AbstractDispatchLayer.receiveResult(AbstractDispatchLayer.java:84)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.AbstractErrorHandlerLayer.receiveResult(AbstractErrorHandlerLayer.java:136)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.AbstractErrorHandlerLayer.receiveResult(AbstractErrorHandlerLayer.java:136)
	at net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke$InvokeCallBack.receiveResult(Invoke.java:300)
	at net.sf.taverna.t2.activities.beanshell.BeanshellActivity$1.run(BeanshellActivity.java:181)
	at java.lang.Thread.run(Thread.java:619)
Hide
Stian Soiland-Reyes added a comment - 2010-02-01 16:08 - edited

DataflowActivity avoids T2-1124 for the patch release 2.1.1 (tested), and real fix has been applied (and tested) to InvocationContextImpl (for 2.1.2)

Show
Stian Soiland-Reyes added a comment - 2010-02-01 16:08 - edited DataflowActivity avoids T2-1124 for the patch release 2.1.1 (tested), and real fix has been applied (and tested) to InvocationContextImpl (for 2.1.2)
Hide
Hudson Daemon added a comment - 2010-02-04 16:08

Integrated in net.sf.taverna.t2.security #423
T2-698 T2-T2-1094 T2-1127 T2-1129 T2-1133 T2-1134 T2-1137 T2-1143 T2-1145 Updated version numbers to 1.0.1 instead of 1.0.1-SNAPSHOT
T2-698 T2-T2-1094 T2-1127 T2-1129 T2-1133 T2-1134 T2-1137 T2-1143 T2-1145 patches for 2.1.1

Show
Hudson Daemon added a comment - 2010-02-04 16:08 Integrated in net.sf.taverna.t2.security #423 T2-698 T2-T2-1094 T2-1127 T2-1129 T2-1133 T2-1134 T2-1137 T2-1143 T2-1145 Updated version numbers to 1.0.1 instead of 1.0.1-SNAPSHOT T2-698 T2-T2-1094 T2-1127 T2-1129 T2-1133 T2-1134 T2-1137 T2-1143 T2-1145 patches for 2.1.1
Hide
Alan Williams added a comment - 2010-03-22 09:59

Proper fix for 2.1.2 needs to be checked

Show
Alan Williams added a comment - 2010-03-22 09:59 Proper fix for 2.1.2 needs to be checked
Hide
Alan Williams added a comment - 2010-03-22 10:00

Needs to be checked

Show
Alan Williams added a comment - 2010-03-22 10:00 Needs to be checked

People

Dates

  • Created:
    2010-01-27 13:57
    Updated:
    2010-03-23 15:11
    Resolved:
    2010-03-22 10:02