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 2008/03/27 16:29:14 UTC

svn commit: r641849 - /geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java

Author: gawor
Date: Thu Mar 27 08:29:12 2008
New Revision: 641849

URL: http://svn.apache.org/viewvc?rev=641849&view=rev
Log:
if plugin installation fails try to uninstall downloaded artifacts in order to prevent problems later on. Patch from Joseph Leong. (GERONIMO-3887, GERONIMO-3939)

Modified:
    geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java

Modified: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java?rev=641849&r1=641848&r2=641849&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java Thu Mar 27 08:29:12 2008
@@ -593,6 +593,7 @@
     }
 
     public void install(PluginListType pluginsToInstall, SourceRepository defaultRepository, boolean restrictToDefaultRepository, String username, String password, DownloadPoller poller) {
+        List<Artifact> downloadedArtifacts = new ArrayList<Artifact>();
         try {
             Map<Artifact, PluginType> metaMap = new HashMap<Artifact, PluginType>();
             // Step 1: validate everything
@@ -635,9 +636,11 @@
                 Set<Artifact> working = new HashSet<Artifact>();
                 Stack<Artifact> parentStack = new Stack<Artifact>();
                 if (instance.getModuleId() != null) {
+                    Artifact entry = toArtifact(instance.getModuleId());
                     List<SourceRepository> repos = getRepos(pluginsToInstall, defaultRepository, restrictToDefaultRepository, instance);
-                    downloadArtifact(toArtifact(instance.getModuleId()), metaMap, repos,
+                    downloadArtifact(entry, metaMap, repos,
                             username, password, new ResultsFileWriteMonitor(poller), working, parentStack, false, servers, true);
+                    downloadedArtifacts.add(entry);
                 } else {
                     List<DependencyType> deps = instance.getDependency();
                     for (DependencyType dep : deps) {
@@ -645,6 +648,7 @@
                         List<SourceRepository> repos = getRepos(pluginsToInstall, defaultRepository, restrictToDefaultRepository, instance);
                         downloadArtifact(entry, metaMap, repos,
                                 username, password, new ResultsFileWriteMonitor(poller), working, parentStack, false, servers, dep.isStart());
+                        downloadedArtifacts.add(entry);
                     }
                 }
                 // 4. Uninstall obsolete configurations
@@ -677,6 +681,14 @@
         } catch (Exception e) {
             log.error("Unable to install plugin. ", e);
             poller.setFailure(e);
+            //Attempt to cleanup a failed plugin installation
+            for (Artifact artifact : downloadedArtifacts) {
+                try {
+                    configManager.uninstallConfiguration(artifact);
+                } catch (Exception e2) {
+                    log.warn("Warning: ",e2);
+                }
+            }
         } finally {
             poller.setFinished();
         }