Skip to content

Commit 293dd4d

Browse files
authored
volume: Fix deletion of Uploaded volumes (#5125)
Fixes issue with deletion of Uploaded volumes
1 parent 5fd970d commit 293dd4d

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323
import java.util.Collections;
2424
import java.util.Date;
2525
import java.util.HashMap;
26+
import java.util.HashSet;
2627
import java.util.List;
2728
import java.util.Map;
2829
import java.util.Optional;
30+
import java.util.Set;
2931
import java.util.UUID;
3032
import java.util.concurrent.ExecutionException;
3133

@@ -306,6 +308,8 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
306308
private long _maxVolumeSizeInGb;
307309
private final StateMachine2<Volume.State, Volume.Event, Volume> _volStateMachine;
308310

311+
private static final Set<Volume.State> STATES_VOLUME_CANNOT_BE_DESTROYED = new HashSet<>(Arrays.asList(Volume.State.Destroy, Volume.State.Expunging, Volume.State.Expunged, Volume.State.Allocated));
312+
309313
protected VolumeApiServiceImpl() {
310314
_volStateMachine = Volume.State.getStateMachine();
311315
_gson = GsonHelper.getGsonLogger();
@@ -1451,13 +1455,14 @@ protected VolumeVO retrieveAndValidateVolume(long volumeId, Account caller) {
14511455
* <ul>
14521456
* <li> {@value Volume.State#Destroy};
14531457
* <li> {@value Volume.State#Expunging};
1454-
* <li> {@value Volume.State#Expunged}.
1458+
* <li> {@value Volume.State#Expunged};
1459+
* <li> {@value Volume.State#Allocated}.
14551460
* </ul>
14561461
*
14571462
* The volume is destroyed via {@link VolumeService#destroyVolume(long)} method.
14581463
*/
14591464
protected void destroyVolumeIfPossible(VolumeVO volume) {
1460-
if (volume.getState() != Volume.State.Destroy && volume.getState() != Volume.State.Expunging && volume.getState() != Volume.State.Expunged && volume.getState() != Volume.State.Allocated && volume.getState() != Volume.State.Uploaded) {
1465+
if (!STATES_VOLUME_CANNOT_BE_DESTROYED.contains(volume.getState())) {
14611466
volService.destroyVolume(volume.getId());
14621467
}
14631468
}

0 commit comments

Comments
 (0)