[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