[jboss-cvs] JBossAS SVN: r98994 - trunk/system/src/main/java/org/jboss/system/server/profileservice/repository/clustered.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jan 4 12:52:53 EST 2010


Author: bstansberry at jboss.com
Date: 2010-01-04 12:52:53 -0500 (Mon, 04 Jan 2010)
New Revision: 98994

Modified:
   trunk/system/src/main/java/org/jboss/system/server/profileservice/repository/clustered/ClusteredDeploymentRepository.java
Log:
[JBAS-7590] Acquire cluster lock before executing removeDeployment

Modified: trunk/system/src/main/java/org/jboss/system/server/profileservice/repository/clustered/ClusteredDeploymentRepository.java
===================================================================
--- trunk/system/src/main/java/org/jboss/system/server/profileservice/repository/clustered/ClusteredDeploymentRepository.java	2010-01-04 17:11:14 UTC (rev 98993)
+++ trunk/system/src/main/java/org/jboss/system/server/profileservice/repository/clustered/ClusteredDeploymentRepository.java	2010-01-04 17:52:53 UTC (rev 98994)
@@ -347,10 +347,27 @@
 
    public ProfileDeployment removeDeployment(String vfsPath) throws Exception
    {
-      ProfileDeployment deployment = getDeployment(vfsPath);
-      VirtualFile root = deployment.getRoot();
-      this.clusteringHandler.removeDeploymentContent(root);
-      return super.removeDeployment(deployment.getName());
+      if (this.clusteringHandler == null)
+      {
+         throw new IllegalStateException("Must register RepositoryClusteringHandler before invoking addDeploymentContent()");
+      }
+      
+      // Take control of the cluster
+      if (!this.clusteringHandler.lockGlobally())
+      {
+         throw new RuntimeException("Cannot acquire global lock");
+      }
+      try
+      {
+         ProfileDeployment deployment = getDeployment(vfsPath);
+         VirtualFile root = deployment.getRoot();
+         this.clusteringHandler.removeDeploymentContent(root);
+         return super.removeDeployment(deployment.getName());
+      }
+      finally
+      {
+         this.clusteringHandler.unlockGlobally();
+      }
    }
 
    public Collection<ModificationInfo> getModifiedDeployments() throws Exception




More information about the jboss-cvs-commits mailing list