You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2007/12/11 21:42:17 UTC
svn commit: r603354 -
/geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java
Author: gawor
Date: Tue Dec 11 12:42:16 2007
New Revision: 603354
URL: http://svn.apache.org/viewvc?rev=603354&view=rev
Log:
create reaper thread on demand. this reduced the number of threads created during geronimo build by ~100
Modified:
geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java
Modified: geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java?rev=603354&r1=603353&r2=603354&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java Tue Dec 11 12:42:16 2007
@@ -44,6 +44,7 @@
import org.apache.geronimo.gbean.AbstractNameQuery;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.kernel.GBeanNotFoundException;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.config.Configuration;
@@ -63,10 +64,9 @@
*
* @version $Rev$ $Date$
*/
-public class Deployer {
+public class Deployer implements GBeanLifecycle {
private static final Log log = LogFactory.getLog(Deployer.class);
- private final int REAPER_INTERVAL = 60 * 1000;
- private final Properties pendingDeletionIndex = new Properties();
+ private final int REAPER_INTERVAL = 60 * 1000;
private DeployerReaper reaper;
private final String remoteDeployAddress;
private final Collection builders;
@@ -94,9 +94,7 @@
// Create and start the reaper...
this.reaper = new DeployerReaper(REAPER_INTERVAL);
- Thread t = new Thread(reaper, "Geronimo Config Store Reaper");
- t.setDaemon(true);
- t.start();
+
}
public List deploy(boolean inPlace, File moduleFile, File planFile) throws DeploymentException {
@@ -131,7 +129,7 @@
} finally {
if (tmpDir != null) {
if (!DeploymentUtil.recursiveDelete(tmpDir)) {
- pendingDeletionIndex.setProperty(tmpDir.getName(), "delete");
+ reaper.delete(tmpDir.getName(), "delete");
}
}
}
@@ -460,11 +458,22 @@
ConfigurationData configurationData = (ConfigurationData) iterator.next();
File configurationDir = configurationData.getConfigurationDir();
if (!DeploymentUtil.recursiveDelete(configurationDir)) {
- pendingDeletionIndex.setProperty(configurationDir.getName(), "delete");
- log.debug("Queued deployment directory to be reaped " + configurationDir);
+ reaper.delete(configurationDir.getName(), "delete");
}
}
}
+
+ public void doStart() throws Exception {
+ }
+
+ public void doFail() {
+ if (reaper != null) {
+ reaper.close();
+ }
+ }
+
+ public void doStop() throws Exception {
+ }
/**
* Thread to cleanup unused temporary Deployer directories (and files).
@@ -473,12 +482,28 @@
*/
class DeployerReaper implements Runnable {
private final int reaperInterval;
+ private final Properties pendingDeletionIndex = new Properties();
private volatile boolean done = false;
+ private Thread thread;
public DeployerReaper(int reaperInterval) {
this.reaperInterval = reaperInterval;
}
+ public void delete(String dir, String type) {
+ pendingDeletionIndex.setProperty(dir, type);
+ log.debug("Queued deployment directory to be reaped " + dir);
+ startThread();
+ }
+
+ private synchronized void startThread() {
+ if (this.thread == null) {
+ this.thread = new Thread(this, "Geronimo Config Store Reaper");
+ this.thread.setDaemon(true);
+ this.thread.start();
+ }
+ }
+
public void close() {
this.done = true;
}
@@ -543,4 +568,5 @@
public static GBeanInfo getGBeanInfo() {
return GBEAN_INFO;
}
+
}