From 9775dd57f3760facb79aaa6fdbefc0cfc4fce445 Mon Sep 17 00:00:00 2001 From: darrin Date: Wed, 10 Jun 2020 10:27:11 +0200 Subject: [PATCH 1/7] Added a check for the original error message --- .../com/cloud/storage/template/HttpTemplateDownloader.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) mode change 100644 => 100755 core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java diff --git a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java old mode 100644 new mode 100755 index d3c23a1fddb3..4aea955f586b --- a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java +++ b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java @@ -218,7 +218,10 @@ public long download(boolean resume, DownloadCompleteCallback callback) { errorString = hte.getMessage(); } catch (IOException ioe) { status = TemplateDownloader.Status.UNRECOVERABLE_ERROR; //probably a file write error? - errorString = ioe.getMessage(); + // Let's not overwrite the original error message. + if (errorString.isEmpty()){ + errorString = ioe.getMessage(); + } } finally { if (status == Status.UNRECOVERABLE_ERROR && file.exists() && !file.isDirectory()) { file.delete(); From dabb83e4abab516cdab522936aff584f64feb83d Mon Sep 17 00:00:00 2001 From: darrin Date: Wed, 10 Jun 2020 11:14:23 +0200 Subject: [PATCH 2/7] Added some cleanup --- .../apache/cloudstack/storage/image/TemplateServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) mode change 100644 => 100755 engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java diff --git a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java old mode 100644 new mode 100755 index 97ac7c9037d4..774a894091bf --- a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java +++ b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java @@ -489,6 +489,10 @@ public void handleTemplateSync(DataStore store) { s_logger.info("Removing leftover template " + uniqueName + " entry from template store table"); // remove those leftover entries _vmTemplateStoreDao.remove(tmpltStore.getId()); + // remove from zones + _vmTemplateZoneDao.deletePrimaryRecordsForTemplate(tmplt.getId()); + // remove template + _templateDao.remove(tmplt.getId()); } } } From 4db5f192c1c265b41cccf9dc66559cbda158e716 Mon Sep 17 00:00:00 2001 From: darrin Date: Wed, 10 Jun 2020 13:36:25 +0200 Subject: [PATCH 3/7] Changed empty string check --- .../java/com/cloud/storage/template/HttpTemplateDownloader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java index 4aea955f586b..694835436b31 100755 --- a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java +++ b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java @@ -219,7 +219,7 @@ public long download(boolean resume, DownloadCompleteCallback callback) { } catch (IOException ioe) { status = TemplateDownloader.Status.UNRECOVERABLE_ERROR; //probably a file write error? // Let's not overwrite the original error message. - if (errorString.isEmpty()){ + if (errorString.equals(" ")){ errorString = ioe.getMessage(); } } finally { From c6ccb523040b90f69fdcee831f87b78f2da625b9 Mon Sep 17 00:00:00 2001 From: Darrin Husselmann Date: Tue, 23 Jun 2020 11:16:37 +0200 Subject: [PATCH 4/7] Initialised errorString to null and added exception when format is invalid --- .../storage/template/HttpTemplateDownloader.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java index 694835436b31..2bd7ebd4a36a 100755 --- a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java +++ b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java @@ -27,6 +27,7 @@ import java.net.URISyntaxException; import java.util.Date; +import com.cloud.utils.exception.CloudRuntimeException; import org.apache.cloudstack.utils.imagestore.ImageStoreUtil; import org.apache.commons.httpclient.Credentials; import org.apache.commons.httpclient.Header; @@ -63,7 +64,7 @@ public class HttpTemplateDownloader extends ManagedContextRunnable implements Te private String downloadUrl; private String toFile; public TemplateDownloader.Status status; - public String errorString = " "; + private String errorString = null; private long remoteSize = 0; public long downloadTime = 0; public long totalBytes; @@ -219,7 +220,7 @@ public long download(boolean resume, DownloadCompleteCallback callback) { } catch (IOException ioe) { status = TemplateDownloader.Status.UNRECOVERABLE_ERROR; //probably a file write error? // Let's not overwrite the original error message. - if (errorString.equals(" ")){ + if (errorString == null){ errorString = ioe.getMessage(); } } finally { @@ -246,7 +247,6 @@ private boolean copyBytes(File file, InputStream in, RandomAccessFile out) throw offset = writeBlock(bytes, out, block, offset); if (!verifyFormat.isVerifiedFormat() && (offset >= 1048576 || offset >= remoteSize)) { //let's check format after we get 1MB or full file verifyFormat.invoke(); - if (verifyFormat.isInvalid()) return true; } } else { done = true; @@ -446,7 +446,7 @@ public boolean isResume() { @Override public String getDownloadError() { - return errorString; + return errorString == null ? " " : errorString; } @Override @@ -498,7 +498,6 @@ public ResourceType getResourceType() { } private class VerifyFormat { - private boolean invalidFormat; private File file; private boolean verifiedFormat; @@ -507,10 +506,6 @@ public VerifyFormat(File file) { this.verifiedFormat = false; } - boolean isInvalid() { - return invalidFormat; - } - public boolean isVerifiedFormat() { return verifiedFormat; } @@ -532,11 +527,10 @@ public VerifyFormat invoke() { } status = Status.UNRECOVERABLE_ERROR; errorString = "Template content is unsupported, or mismatch between selected format and template content. Found : " + unsupportedFormat; - invalidFormat = true; + throw new CloudRuntimeException(errorString); } else { s_logger.debug("Verified format of downloading file " + file.getAbsolutePath() + " is supported"); verifiedFormat = true; - invalidFormat = false; } return this; } From fdfe7e85cf4158ded47d7b7e9a2deac9ee9ec564 Mon Sep 17 00:00:00 2001 From: Darrin Husselmann Date: Wed, 24 Jun 2020 12:09:14 +0200 Subject: [PATCH 5/7] Reverting this change due to unintended side effects --- .../apache/cloudstack/storage/image/TemplateServiceImpl.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java index 774a894091bf..97ac7c9037d4 100755 --- a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java +++ b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java @@ -489,10 +489,6 @@ public void handleTemplateSync(DataStore store) { s_logger.info("Removing leftover template " + uniqueName + " entry from template store table"); // remove those leftover entries _vmTemplateStoreDao.remove(tmpltStore.getId()); - // remove from zones - _vmTemplateZoneDao.deletePrimaryRecordsForTemplate(tmplt.getId()); - // remove template - _templateDao.remove(tmplt.getId()); } } } From 977335e2fad27fb52ddb5fb793c9afefb6224162 Mon Sep 17 00:00:00 2001 From: Darrin Husselmann Date: Fri, 3 Jul 2020 16:43:55 +0200 Subject: [PATCH 6/7] Formatting --- .../java/com/cloud/storage/template/HttpTemplateDownloader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java index 2bd7ebd4a36a..357262746544 100755 --- a/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java +++ b/core/src/main/java/com/cloud/storage/template/HttpTemplateDownloader.java @@ -220,7 +220,7 @@ public long download(boolean resume, DownloadCompleteCallback callback) { } catch (IOException ioe) { status = TemplateDownloader.Status.UNRECOVERABLE_ERROR; //probably a file write error? // Let's not overwrite the original error message. - if (errorString == null){ + if (errorString == null) { errorString = ioe.getMessage(); } } finally { From b77a929e16b69854e4948e4e5f08609236d0bf49 Mon Sep 17 00:00:00 2001 From: Darrin Husselmann Date: Fri, 3 Jul 2020 17:08:56 +0200 Subject: [PATCH 7/7] Removed executable flag from file --- .../org/apache/cloudstack/storage/image/TemplateServiceImpl.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java diff --git a/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java b/engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateServiceImpl.java old mode 100755 new mode 100644