You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by we...@apache.org on 2023/08/31 19:43:52 UTC
[cloudstack] branch 4.18 updated: PowerFlex: Handle missing volumes gracefully during delete volume (#7924)
This is an automated email from the ASF dual-hosted git repository.
weizhou pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.18 by this push:
new 89e0a4ca25c PowerFlex: Handle missing volumes gracefully during delete volume (#7924)
89e0a4ca25c is described below
commit 89e0a4ca25c108f9c0a166a741c15180bed10712
Author: Marcus Sorensen <ma...@apple.com>
AuthorDate: Thu Aug 31 13:43:45 2023 -0600
PowerFlex: Handle missing volumes gracefully during delete volume (#7924)
---
.../datastore/client/ScaleIOGatewayClientImpl.java | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java
index 61e190d5239..fa428313943 100644
--- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java
+++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java
@@ -738,11 +738,20 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient {
try {
unmapVolumeFromAllSdcs(volumeId);
} catch (Exception ignored) {}
- Boolean removeVolumeStatus = post(
- "/instances/Volume::" + volumeId + "/action/removeVolume",
- "{\"removeMode\":\"ONLY_ME\"}", Boolean.class);
- if (removeVolumeStatus != null) {
- return removeVolumeStatus;
+
+ try {
+ Boolean removeVolumeStatus = post(
+ "/instances/Volume::" + volumeId + "/action/removeVolume",
+ "{\"removeMode\":\"ONLY_ME\"}", Boolean.class);
+ if (removeVolumeStatus != null) {
+ return removeVolumeStatus;
+ }
+ } catch (Exception ex) {
+ if (ex instanceof ServerApiException && ex.getMessage().contains("Could not find the volume")) {
+ LOG.warn(String.format("API says deleting volume %s does not exist, handling gracefully", volumeId));
+ return true;
+ }
+ throw ex;
}
return false;
}