Prasanna Santhanam created CLOUDSTACK-643:
---------------------------------------------
Summary: KVM snapshots deleted on UI/API do not physically delete
from secondary storage
Key: CLOUDSTACK-643
URL: https://issues.apache.org/jira/browse/CLOUDSTACK-643
Project: CloudStack
Issue Type: Bug
Security Level: Public (Anyone can view this level - this is the default.)
Components: KVM, Snapshot
Affects Versions: 4.0.0, 4.1.0
Reporter: Prasanna Santhanam
Fix For: 4.0.1, 4.1.0
Snapshots taken on KVM do not delete on secondary storage even after deleting
them on the API/UI.
The cmd.getSnapshotUuid() in case of KVM is the complete path to the qcow2
image on secondary storage. But the following concatenation evaluates to an
invalid path and subsequent "rm -f" fails quietly returning Answer(success)
back to management server.
""
String lPath = parent + "/snapshots/" + String.valueOf(accountId) + "/" +
String.valueOf(volumeId) + "/" + filename;
""
On NfsSecondaryStorageResource.java:
protected Answer execute(final DeleteSnapshotBackupCommand cmd) {
String secondaryStorageUrl = cmd.getSecondaryStorageUrl();
Long accountId = cmd.getAccountId();
Long volumeId = cmd.getVolumeId();
String name = cmd.getSnapshotUuid();
try {
if (swift == null) {
String parent = getRootDir(secondaryStorageUrl);
String filename;
if (cmd.isAll()) {
filename = "*";
} else {
filename = "*" + name + "*";
}
String lPath = parent + "/snapshots/" +
String.valueOf(accountId) + "/" + String.valueOf(volumeId) + "/" + filename;
String result = deleteLocalFile(lPath);
if (result != null) {
String errMsg = "failed to delete snapshot " + lPath + " ,
err=" + result;
s_logger.warn(errMsg);
return new Answer(cmd, false, errMsg);
}
} else {
#### SNIP ####
}
return new Answer(cmd, true, "success");
} catch (Exception e) {
}
}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira