[jboss-cvs] JBossAS SVN: r71000 - in projects/jboss-deployers/trunk: deployers-impl/src/main/org/jboss/deployers/plugins/deployers and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Mar 19 10:14:58 EDT 2008
Author: adrian at jboss.org
Date: 2008-03-19 10:14:58 -0400 (Wed, 19 Mar 2008)
New Revision: 71000
Modified:
projects/jboss-deployers/trunk/deployers-client-spi/src/main/org/jboss/deployers/client/spi/main/MainDeployer.java
projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/deployers/DeployersImpl.java
projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/main/MainDeployerImpl.java
projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/test/DeployerSingleDeploymentTestCase.java
projects/jboss-deployers/trunk/deployers-spi/src/main/org/jboss/deployers/spi/deployer/Deployers.java
Log:
[JBDEPLOY-19] - Deployers prepareShutdown
Modified: projects/jboss-deployers/trunk/deployers-client-spi/src/main/org/jboss/deployers/client/spi/main/MainDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-client-spi/src/main/org/jboss/deployers/client/spi/main/MainDeployer.java 2008-03-19 13:43:19 UTC (rev 70999)
+++ projects/jboss-deployers/trunk/deployers-client-spi/src/main/org/jboss/deployers/client/spi/main/MainDeployer.java 2008-03-19 14:14:58 UTC (rev 71000)
@@ -33,6 +33,11 @@
public interface MainDeployer extends DeployerClient
{
/**
+ * Tell the main deployer we are about to shutdown
+ */
+ void prepareShutdown();
+
+ /**
* Shutdown. Removes all the deployments.
*/
void shutdown();
Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/deployers/DeployersImpl.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/deployers/DeployersImpl.java 2008-03-19 13:43:19 UTC (rev 70999)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/deployers/DeployersImpl.java 2008-03-19 14:14:58 UTC (rev 71000)
@@ -31,6 +31,7 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.jboss.dependency.spi.Controller;
import org.jboss.dependency.spi.ControllerContext;
@@ -71,6 +72,9 @@
/** The log */
private static final Logger log = Logger.getLogger(DeployersImpl.class);
+ /** Whether we are shutdown */
+ private AtomicBoolean shutdown = new AtomicBoolean(false);
+
/** The dependency state machine */
private Controller controller;
@@ -130,7 +134,21 @@
setDeployers(deployers);
}
+ public void shutdown()
+ {
+ shutdown.set(true);
+ }
+
/**
+ * Check whether we are shutdown
+ */
+ protected void checkShutdown()
+ {
+ if (shutdown.get())
+ throw new IllegalStateException("Deployers are shutdown");
+ }
+
+ /**
* Get the deployers.
*
* @return the deployers.
@@ -339,6 +357,8 @@
if (context == null)
throw new IllegalArgumentException("Null context");
+ checkShutdown();
+
Map<String, ManagedObject> managedObjects = new HashMap<String, ManagedObject>();
for (DeployerWrapper deployer : deployers)
deployer.build(context.getDeploymentUnit(), managedObjects);
@@ -412,6 +432,8 @@
DeploymentControllerContext deploymentControllerContext = context.getTransientAttachments().getAttachment(ControllerContext.class.getName(), DeploymentControllerContext.class);
if (deploymentControllerContext == null)
throw new DeploymentException("Deployment " + context.getName() + " has no deployment controller context");
+
+ checkShutdown();
ControllerState state = new ControllerState(stageName);
try
@@ -515,6 +537,8 @@
// Create the controller contexts
for (DeploymentContext context : deploy)
{
+ checkShutdown();
+
DeploymentControllerContext deploymentControllerContext = new DeploymentControllerContext(context, this);
try
{
@@ -549,6 +573,7 @@
int currentIdx = states.indexOf(current);
if (currentIdx != -1 && currentIdx < i)
{
+ checkShutdown();
try
{
controller.change(deploymentControllerContext, state);
Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/main/MainDeployerImpl.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/main/MainDeployerImpl.java 2008-03-19 13:43:19 UTC (rev 70999)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/org/jboss/deployers/plugins/main/MainDeployerImpl.java 2008-03-19 14:14:58 UTC (rev 71000)
@@ -618,9 +618,15 @@
}
}
- // enable locking - so that we don't pick up current single deployments
+ public void prepareShutdown()
+ {
+ if (deployers != null)
+ deployers.shutdown();
+ }
+
public void shutdown()
{
+ prepareShutdown();
lockWrite();
try
{
Modified: projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/test/DeployerSingleDeploymentTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/test/DeployerSingleDeploymentTestCase.java 2008-03-19 13:43:19 UTC (rev 70999)
+++ projects/jboss-deployers/trunk/deployers-impl/src/tests/org/jboss/test/deployers/main/test/DeployerSingleDeploymentTestCase.java 2008-03-19 14:14:58 UTC (rev 71000)
@@ -23,10 +23,7 @@
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashSet;
import java.util.List;
-import java.util.Random;
-import java.util.Set;
import junit.framework.Test;
@@ -40,16 +37,10 @@
import org.jboss.deployers.structure.spi.StructuralDeployers;
import org.jboss.deployers.structure.spi.StructureBuilder;
import org.jboss.deployers.structure.spi.helpers.AbstractStructureBuilder;
-import org.jboss.test.deployers.main.support.AddDeploymentRunnable;
import org.jboss.test.deployers.main.support.AddProcessRemoveProcessRunnable;
-import org.jboss.test.deployers.main.support.DeployRunnable;
import org.jboss.test.deployers.main.support.DeployUndeployRunnable;
import org.jboss.test.deployers.main.support.DeployerTestRunnable;
import org.jboss.test.deployers.main.support.FailedDeployUndeployRunnable;
-import org.jboss.test.deployers.main.support.ProcessRunnable;
-import org.jboss.test.deployers.main.support.ShutdownRunnable;
-import org.jboss.test.deployers.main.support.TestDeployment;
-import org.jboss.test.deployers.main.support.UndeployRunnable;
/**
* Single deployment API test case.
@@ -283,46 +274,4 @@
assertTrue(runnables[i].toString(), runnables[i].isValid());
}
}
-
- public void testMultiThreadsAndShutdown() throws Exception
- {
- DeployerClient main = getMainDeployer();
- int n = 30;
- // let the shutdown be in first half of started threads
- int shutdown = new Random().nextInt(n / 2);
- log.info("Shutdown order: " + shutdown);
- DeployerTestRunnable[] runnables = new DeployerTestRunnable[n];
- Set<String> names = new HashSet<String>();
- String[] dname = new String[]{"deploy", "add", "undeploy", "error"};
- for(int i = 0; i < n; i++)
- {
- if (i == shutdown)
- runnables[i] = new ShutdownRunnable(main);
- else if (i % 4 == 3)
- runnables[i] = new ProcessRunnable(main);
- else
- {
- Deployment deployment = new TestDeployment(dname[i % 4] + i, names);
-
- if (i % 4 == 0)
- runnables[i] = new DeployRunnable(main, deployment);
- else if (i % 4 == 1)
- runnables[i] = new AddDeploymentRunnable(main, deployment);
- else if (i % 4 == 2)
- runnables[i] = new UndeployRunnable(main, deployment);
- }
- }
- Thread[] threads = new Thread[n];
- for(int i = 0; i < n; i++)
- {
- threads[i] = new Thread(runnables[i]);
- threads[i].start();
- }
- for(int i = 0; i < n; i++)
- {
- threads[i].join();
- assertTrue(runnables[i].toString(), runnables[i].isValid());
- }
- log.info("Names: " + names.size() + " - " + names);
- }
}
Modified: projects/jboss-deployers/trunk/deployers-spi/src/main/org/jboss/deployers/spi/deployer/Deployers.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-spi/src/main/org/jboss/deployers/spi/deployer/Deployers.java 2008-03-19 13:43:19 UTC (rev 70999)
+++ projects/jboss-deployers/trunk/deployers-spi/src/main/org/jboss/deployers/spi/deployer/Deployers.java 2008-03-19 14:14:58 UTC (rev 71000)
@@ -97,4 +97,9 @@
* @throws DeploymentException when the deployment is not complete
*/
void checkStructureComplete(DeploymentContext... contexts) throws DeploymentException;
+
+ /**
+ * Shutdown. Stops any further deployment
+ */
+ void shutdown();
}
More information about the jboss-cvs-commits
mailing list