Skip to content

Commit d1043f0

Browse files
erikbocksdhslove
authored andcommitted
Fix infrastructure leak on exception while attaching/detaching volumes in VMware (apache#10860)
* Handled exception separately to prevent infrastructure data leak
1 parent 8409149 commit d1043f0

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
import com.cloud.event.ActionEvent;
152152
import com.cloud.event.EventTypes;
153153
import com.cloud.event.UsageEventUtils;
154+
import com.cloud.exception.AgentUnavailableException;
154155
import com.cloud.exception.ConcurrentOperationException;
155156
import com.cloud.exception.InvalidParameterValueException;
156157
import com.cloud.exception.PermissionDeniedException;
@@ -3363,6 +3364,8 @@ private Volume orchestrateDetachVolumeFromVM(long vmId, long volumeId) {
33633364

33643365
try {
33653366
answer = _agentMgr.send(hostId, cmd);
3367+
} catch (AgentUnavailableException e) {
3368+
throw new CloudRuntimeException(String.format("%s. Please contact your system administrator.", errorMsg));
33663369
} catch (Exception e) {
33673370
throw new CloudRuntimeException(errorMsg + " due to: " + e.getMessage());
33683371
}
@@ -5000,6 +5003,11 @@ private VolumeVO sendAttachVolumeCommand(UserVmVO vm, VolumeVO volumeToAttach, L
50005003

50015004
try {
50025005
answer = (AttachAnswer)_agentMgr.send(hostId, cmd);
5006+
} catch (AgentUnavailableException e) {
5007+
if (host != null) {
5008+
volService.revokeAccess(volFactory.getVolume(volumeToAttach.getId()), host, dataStore);
5009+
}
5010+
throw new CloudRuntimeException(String.format("%s. Please contact your system administrator.", errorMsg));
50035011
} catch (Exception e) {
50045012
if (host != null) {
50055013
volService.revokeAccess(volFactory.getVolume(volumeToAttach.getId()), host, dataStore);

0 commit comments

Comments
 (0)