From 12cb54dc80958f6859b30856794e55edd8d0332d Mon Sep 17 00:00:00 2001 From: Ivan Kudryavtsev Date: Mon, 13 Nov 2017 13:46:02 +0700 Subject: [PATCH 1/2] CLOUDSTACK-10140 Fixed Conflicts: services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java --- .../storage/template/TemplateLocation.java | 53 +++++++++++++------ .../resource/NfsSecondaryStorageResource.java | 8 +-- 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/core/src/com/cloud/storage/template/TemplateLocation.java b/core/src/com/cloud/storage/template/TemplateLocation.java index e52a635dc68f..d10d05ae9711 100644 --- a/core/src/com/cloud/storage/template/TemplateLocation.java +++ b/core/src/com/cloud/storage/template/TemplateLocation.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.Properties; +import java.util.Arrays; import org.apache.log4j.Logger; @@ -81,12 +82,12 @@ public boolean purge() { boolean purged = true; String[] files = _storage.listFiles(_templatePath); for (String file : files) { - boolean r = _storage.delete(file); - if (!r) { + boolean isRemoved = _storage.delete(file); + if (!isRemoved) { purged = false; } if (s_logger.isDebugEnabled()) { - s_logger.debug((r ? "R" : "Unable to r") + "emove " + file); + s_logger.debug((isRemoved ? "Removed " : "Unable to remove") + file); } } @@ -97,43 +98,60 @@ public boolean load() throws IOException { try (FileInputStream strm = new FileInputStream(_file);) { _props.load(strm); } catch (IOException e) { - s_logger.warn("Unable to load the template properties", e); + s_logger.warn("Unable to load the template properties for '" + _file + "': ", e); } for (ImageFormat format : ImageFormat.values()) { - String ext = _props.getProperty(format.getFileExtension()); + String currentExtension = format.getFileExtension(); + String ext = _props.getProperty(currentExtension); if (ext != null) { + if (s_logger.isDebugEnabled()) { + s_logger.debug("File extension '" + currentExtension + "' was found in '" + _file + "'."); + } FormatInfo info = new FormatInfo(); info.format = format; - info.filename = _props.getProperty(format.getFileExtension() + ".filename"); + info.filename = _props.getProperty(currentExtension + ".filename"); if (info.filename == null) { + if (s_logger.isDebugEnabled()) { + s_logger.debug("Property '" + currentExtension + ".filename' was not found in '" + _file + "'. Current format is ignored."); + } continue; } - info.size = NumbersUtil.parseLong(_props.getProperty(format.getFileExtension() + ".size"), -1); + if (s_logger.isDebugEnabled()) { + s_logger.debug("Property '" + currentExtension + ".filename' was found in '" + _file + "'. Current format will be parsed."); + } + info.size = NumbersUtil.parseLong(_props.getProperty(currentExtension + ".size"), -1); _props.setProperty("physicalSize", Long.toString(info.size)); - info.virtualSize = NumbersUtil.parseLong(_props.getProperty(format.getFileExtension() + ".virtualsize"), -1); + info.virtualSize = NumbersUtil.parseLong(_props.getProperty(currentExtension + ".virtualsize"), -1); _formats.add(info); if (!checkFormatValidity(info)) { _isCorrupted = true; s_logger.warn("Cleaning up inconsistent information for " + format); } + } else { + if (s_logger.isDebugEnabled()) { + s_logger.debug("Format extension '" + currentExtension + "' wasn't found in '" + _file + "'."); + } } } if (_props.getProperty("uniquename") == null || _props.getProperty("virtualsize") == null) { + if (s_logger.isDebugEnabled()) { + s_logger.debug("Property 'uniquename' or 'virtualsize' weren't found in '" + _file + "'. Loading failed."); + } return false; } - return (_formats.size() > 0); } public boolean save() { for (FormatInfo info : _formats) { - _props.setProperty(info.format.getFileExtension(), "true"); - _props.setProperty(info.format.getFileExtension() + ".filename", info.filename); - _props.setProperty(info.format.getFileExtension() + ".size", Long.toString(info.size)); - _props.setProperty(info.format.getFileExtension() + ".virtualsize", Long.toString(info.virtualSize)); + String formatExtension = info.format.getFileExtension(); + _props.setProperty(formatExtension, "true"); + _props.setProperty(formatExtension + ".filename", info.filename); + _props.setProperty(formatExtension + ".size", Long.toString(info.size)); + _props.setProperty(formatExtension + ".virtualsize", Long.toString(info.virtualSize)); } try (FileOutputStream strm = new FileOutputStream(_file);) { _props.store(strm, ""); @@ -205,10 +223,11 @@ protected FormatInfo deleteFormat(ImageFormat format) { FormatInfo info = it.next(); if (info.format == format) { it.remove(); - _props.remove(format.getFileExtension()); - _props.remove(format.getFileExtension() + ".filename"); - _props.remove(format.getFileExtension() + ".size"); - _props.remove(format.getFileExtension() + ".virtualsize"); + String formatExtension = format.getFileExtension(); + _props.remove(formatExtension); + for(String propertySuffix : Arrays.asList("filename","size","virtualsize")) { + _props.remove(formatExtension + "." + propertySuffix); + } return info; } } diff --git a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java index eb6f220f7ca8..54c6b99cde96 100644 --- a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java +++ b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java @@ -521,12 +521,8 @@ protected Answer copySnapshotToTemplateFromNfsToNfs(CopyCommand cmd, SnapshotObj bufferWriter.write("uniquename=" + destData.getName()); bufferWriter.write("\n"); bufferWriter.write("filename=" + fileName); - bufferWriter.write("\n"); - long size = _storage.getSize(destFileFullPath); - bufferWriter.write("size=" + size); - bufferWriter.close(); - writer.close(); - + } + try { /** * Snapshots might be in either QCOW2 or RAW image format * From 2d246ad6044dc9148670afa7a0bd46568e24b04a Mon Sep 17 00:00:00 2001 From: Ivan Kudryavtsev Date: Sun, 7 Jan 2018 20:59:01 +0700 Subject: [PATCH 2/2] Fixed excessive log levels. --- systemvm/agent/conf/log4j-cloud.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/systemvm/agent/conf/log4j-cloud.xml b/systemvm/agent/conf/log4j-cloud.xml index f4ad65ed66e9..749d2fe89649 100644 --- a/systemvm/agent/conf/log4j-cloud.xml +++ b/systemvm/agent/conf/log4j-cloud.xml @@ -87,11 +87,11 @@ under the License. - + - +