Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 1.4
-
Fix Version/s: 1.5
-
Component/s: None
-
Labels:None
Description
By running a workflow using medium large inputs (12 MB), after a few runs, Taverna will die of OutOfMemoryException.
Reported by Iain Milne imilne@scri.ac.uk to taverna-users, thread "CPU at 100% when dealing with large Affymetrix .cel files"
(the CPU-usage was solved by disabling provenance)
http://germinate.scri.ac.uk:8080/normalization/
You can find a simple workflow that expects two input files and will
produce one output file. The input files are also listed there (~12MB
each).
Resolved by several patches committed. There were two reasons why we leaked memory.
The thread:
freefluo.util.event.Queue.ConsumerThread
lived on and kept references Queue -> Flow -> Hash* -> PortTask -> DataThing -> large blob
This was resolved by appropriately calling the .destroy() method on the workflow instance in detachModel of the invocation panel. This method has been in the interfaces all the time, but was never actually invoked anywhere.
The other part was that the WorkflowEditor used by the EnactorInvocation set static members VertexView.renderer and EdgeView.renderer to instances that implicitly referenced back to the WorkflowEditor and then the EnactorInvocation, which referenced the data sets.
These static members are now cleared on WorkflowEditor.detachFromModel. We set them to null, so this could potentially raise some problems later on, further investigation would have to check what these members are originally, and preferably get away from the non-thread safe setting of these members.