From a72216464b8cf538dcf21fe7f7b0a6f758049bc2 Mon Sep 17 00:00:00 2001 From: anthony Date: Tue, 20 Dec 2011 18:13:22 -0800 Subject: [PATCH] bug 12694: handle big file in SSVM status 12694: resolved fixed reviewed-by : edison --- .../resource/NfsSecondaryStorageResource.java | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java index b77edd9e948..31ac5bb1c76 100755 --- a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java +++ b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java @@ -247,22 +247,41 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S command.add("/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A " + swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() + " -K " + swift.getKey() + " download " + container + " " + rfilename + " -o " + lFullPath); - String result = command.execute(); + OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser(); + String result = command.execute(parser); if (result != null) { - String errMsg = "swiftDownload failed , err=" + result; + String errMsg = "swiftDownload failed err=" + result; s_logger.warn(errMsg); return errMsg; } + if (parser.getLines() != null) { + String[] lines = parser.getLines().split("\\n"); + for (String line : lines) { + if (line.contains("Errno") || line.contains("failed")) { + String errMsg = "swiftDownload failed , err=" + lines.toString(); + s_logger.warn(errMsg); + return errMsg; + } + } + } return null; } String swiftUpload(SwiftTO swift, String container, String lDir, String lFilename) { Script command = new Script("/bin/bash", s_logger); + long SWIFT_MAX_SIZE = 5L * 1024L * 1024L * 1024L; command.add("-c"); - command.add("cd " + lDir + ";/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A " - + swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() + " -K " + swift.getKey() - + " upload " + container + " " + lFilename); + File file = new File(lDir + "/" + lFilename); + long size = file.length(); + if (size <= SWIFT_MAX_SIZE) { + command.add("cd " + lDir + ";/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A " + swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() + + " -K " + swift.getKey() + " upload " + container + " " + lFilename); + } else { + command.add("cd " + lDir + ";/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A " + swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() + + " -K " + swift.getKey() + " upload -S " + SWIFT_MAX_SIZE + " " + container + " " + lFilename); + } + OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser(); String result = command.execute(parser); if (result != null) { @@ -273,7 +292,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S if (parser.getLines() != null) { String[] lines = parser.getLines().split("\\n"); for (String line : lines) { - if (line.contains("Errno")) { + if (line.contains("Errno") || line.contains("failed")) { String errMsg = "swiftUpload failed , err=" + lines.toString(); s_logger.warn(errMsg); return errMsg; @@ -321,7 +340,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S if (parser.getLines() != null) { String[] lines = parser.getLines().split("\\n"); for (String line : lines) { - if (line.contains("Errno")) { + if (line.contains("Errno") || line.contains("failed")) { String errMsg = "swiftDelete failed , err=" + lines.toString(); s_logger.warn(errMsg); return errMsg;