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