You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/03/06 17:23:17 UTC

[09/50] incubator-taverna-common-activities git commit: T2-1135 use weak references to the facades to avoid facade memory leak.

T2-1135 use weak references to the facades to avoid facade memory leak. 

git-svn-id: http://taverna.googlecode.com/svn/taverna/engine/net.sf.taverna.t2.activities/trunk/dependency-activity@9653 bf327186-88b3-11dd-a302-d386e5130c1c


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/commit/73a68072
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/73a68072
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/73a68072

Branch: refs/heads/master
Commit: 73a6807242ea3d9b9208dc6168f337ce25a10b12
Parents: 8b4e5bc
Author: stian@mygrid.org.uk <st...@bf327186-88b3-11dd-a302-d386e5130c1c>
Authored: Mon Feb 1 16:03:40 2010 +0000
Committer: stian@mygrid.org.uk <st...@bf327186-88b3-11dd-a302-d386e5130c1c>
Committed: Mon Feb 1 16:03:40 2010 +0000

----------------------------------------------------------------------
 .../AbstractAsynchronousDependencyActivity.java     | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/73a68072/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java
----------------------------------------------------------------------
diff --git a/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java b/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java
index 1e75e13..37a9503 100644
--- a/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java
+++ b/src/main/java/net/sf/taverna/t2/activities/dependencyactivity/AbstractAsynchronousDependencyActivity.java
@@ -22,6 +22,7 @@ package net.sf.taverna.t2.activities.dependencyactivity;
 
 import java.io.File;
 import java.io.FilenameFilter;
+import java.lang.ref.WeakReference;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.Arrays;
@@ -29,8 +30,6 @@ import java.util.HashSet;
 import java.util.Set;
 import java.util.WeakHashMap;
 
-import org.apache.log4j.Logger;
-
 import net.sf.taverna.raven.appconfig.ApplicationRuntime;
 import net.sf.taverna.raven.prelauncher.BootstrapClassLoader;
 import net.sf.taverna.raven.prelauncher.PreLauncher;
@@ -45,6 +44,8 @@ import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
 import net.sf.taverna.t2.workflowmodel.processor.activity.NestedDataflow;
 import net.sf.taverna.t2.workflowmodel.utils.Tools;
 
+import org.apache.log4j.Logger;
+
 /**
  * A parent abstract class for activities that require dependency management, such as
  * API Consumer and Beanshell. Defines dependencies on local JAR files 
@@ -239,10 +240,15 @@ public abstract class AbstractAsynchronousDependencyActivity<ConfigType> extends
 
 		ClassLoaderSharing classLoaderSharing = configurationBean.getClassLoaderSharing();
  		// Get the WorkflowInstanceFacade which contains the current workflow
-		WorkflowInstanceFacade wfFacade = WorkflowInstanceFacade.workflowRunFacades.get(workflowRunID);
+		WeakReference<WorkflowInstanceFacade> wfFacadeRef = WorkflowInstanceFacade.workflowRunFacades.get(workflowRunID);
+		WorkflowInstanceFacade wfFacade = null;		
+		if (wfFacadeRef != null) {
+			wfFacade = wfFacadeRef.get();
+		}
 		Dataflow wf = null;
-		if (wfFacade != null)
-			wf = WorkflowInstanceFacade.workflowRunFacades.get(workflowRunID).getDataflow();
+		if (wfFacade != null) {
+			wf = wfFacade.getDataflow();
+		}
 
 		// Files of dependencies for all activities in the workflow that share the classloading policy
 		HashSet<File> dependencies = new HashSet<File>();