You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/03/17 13:33:14 UTC

svn commit: r1578339 - /tomcat/tc7.0.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java

Author: markt
Date: Mon Mar 17 12:33:14 2014
New Revision: 1578339

URL: http://svn.apache.org/r1578339
Log:
Make upload process more robust. If upload fails and it was going to update an existing WAR, don't remove the existing WAR.

Modified:
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java

Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java?rev=1578339&r1=1578338&r2=1578339&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java Mon Mar 17 12:33:14 2014
@@ -659,7 +659,18 @@ public class ManagerServlet extends Http
         // Determine full path for uploaded WAR
         File uploadedWar;
         if (tag == null) {
-            uploadedWar = deployedWar;
+            if (update) {
+                // Append ".tmp" to the file name so it won't get deployed if auto
+                // deployment is enabled. It also means the old war won't get
+                // deleted if the upload fails
+                uploadedWar = new File(deployedWar.getAbsolutePath() + ".tmp");
+                if (uploadedWar.exists() && !uploadedWar.delete()) {
+                    writer.println(smClient.getString("managerServlet.deleteFail",
+                            uploadedWar));
+                }
+            } else {
+                uploadedWar = deployedWar;
+            }
         } else {
             File uploadPath = new File(versioned, tag);
             if (!uploadPath.mkdirs() && !uploadPath.isDirectory()) {
@@ -677,15 +688,17 @@ public class ManagerServlet extends Http
             if (!isServiced(name)) {
                 addServiced(name);
                 try {
-                    if (update && tag == null && deployedWar.isFile()) {
-                        if (!deployedWar.delete()) {
+                    // Upload WAR
+                    uploadWar(writer, request, uploadedWar, smClient);
+                    if (update && tag == null) {
+                        if (deployedWar.exists() && !deployedWar.delete()) {
                             writer.println(smClient.getString("managerServlet.deleteFail",
                                     deployedWar));
                             return;
                         }
+                        // Rename uploaded WAR file
+                        uploadedWar.renameTo(deployedWar);
                     }
-                    // Upload WAR
-                    uploadWar(writer, request, uploadedWar, smClient);
                     if (tag != null) {
                         // Copy WAR to the host's appBase
                         copy(uploadedWar, deployedWar);



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org