DaanHoogland commented on code in PR #12347:
URL: https://github.com/apache/cloudstack/pull/12347#discussion_r2651421002
##########
server/src/main/java/com/cloud/storage/StorageManagerImpl.java:
##########
@@ -2055,6 +2008,63 @@ public void cleanupStorage(boolean recurring) {
}
}
+ private void cleanupSnapshotsFromStoreRefInDestroyingState() {
+ List<SnapshotDataStoreVO> storeRefSnapshotsInDestroyingState =
_snapshotStoreDao.listByState(ObjectInDataStoreStateMachine.State.Destroying);
+ for (SnapshotDataStoreVO snapshotDataStoreVO :
storeRefSnapshotsInDestroyingState) {
+ SnapshotVO snapshot =
_snapshotDao.findById(snapshotDataStoreVO.getSnapshotId());
+ if (snapshot == null) {
+ logger.warn("Did not find snapshot [ID: {}] for which store
reference is in destroying state; therefore, it cannot be destroyed.",
snapshotDataStoreVO.getSnapshotId());
+ continue;
+ }
+ deleteSnapshot(snapshot, snapshotDataStoreVO);
+ }
+ }
+
+ private void deleteSnapshot(SnapshotVO snapshot, SnapshotDataStoreVO
snapshotDataStoreVO) {
+ if (snapshot == null || snapshotDataStoreVO == null) {
+ return;
+ }
+
+ try {
+ final String snapshotUuid = snapshot.getUuid();
+ final String storeRole =
snapshotDataStoreVO.getRole().toString().toLowerCase();
+ if (logger.isDebugEnabled()) {
+ logger.debug("Snapshot [{}] is in {} state on {} data store
ID: {}.", snapshotUuid, snapshotDataStoreVO.getState(), storeRole,
snapshotDataStoreVO.getDataStoreId());
+ }
Review Comment:
```suggestion
logger.debug("Snapshot [{}] is in {} state on {} data store ID:
{}.", snapshotUuid, snapshotDataStoreVO.getState(), storeRole,
snapshotDataStoreVO.getDataStoreId());
```
##########
server/src/main/java/com/cloud/storage/StorageManagerImpl.java:
##########
@@ -2055,6 +2008,63 @@ public void cleanupStorage(boolean recurring) {
}
}
+ private void cleanupSnapshotsFromStoreRefInDestroyingState() {
+ List<SnapshotDataStoreVO> storeRefSnapshotsInDestroyingState =
_snapshotStoreDao.listByState(ObjectInDataStoreStateMachine.State.Destroying);
+ for (SnapshotDataStoreVO snapshotDataStoreVO :
storeRefSnapshotsInDestroyingState) {
+ SnapshotVO snapshot =
_snapshotDao.findById(snapshotDataStoreVO.getSnapshotId());
+ if (snapshot == null) {
+ logger.warn("Did not find snapshot [ID: {}] for which store
reference is in destroying state; therefore, it cannot be destroyed.",
snapshotDataStoreVO.getSnapshotId());
+ continue;
+ }
+ deleteSnapshot(snapshot, snapshotDataStoreVO);
+ }
+ }
+
+ private void deleteSnapshot(SnapshotVO snapshot, SnapshotDataStoreVO
snapshotDataStoreVO) {
+ if (snapshot == null || snapshotDataStoreVO == null) {
+ return;
+ }
+
+ try {
+ final String snapshotUuid = snapshot.getUuid();
+ final String storeRole =
snapshotDataStoreVO.getRole().toString().toLowerCase();
+ if (logger.isDebugEnabled()) {
+ logger.debug("Snapshot [{}] is in {} state on {} data store
ID: {}.", snapshotUuid, snapshotDataStoreVO.getState(), storeRole,
snapshotDataStoreVO.getDataStoreId());
+ }
+ SnapshotInfo snapshotInfo =
snapshotFactory.getSnapshotIncludingRemoved(snapshotDataStoreVO.getSnapshotId(),
snapshotDataStoreVO.getDataStoreId(), snapshotDataStoreVO.getRole());
+ if (snapshotInfo != null) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Snapshot [{}] in {} state found on {} data
store [{}], it will be deleted.", snapshotUuid, snapshotDataStoreVO.getState(),
storeRole, snapshotInfo.getDataStore().getUuid());
+ }
+ _snapshotService.deleteSnapshot(snapshotInfo);
+ } else if (logger.isDebugEnabled()) {
+ logger.debug("Did not find snapshot [{}] in {} state on {}
data store ID: {}.", snapshotUuid, snapshotDataStoreVO.getState(), storeRole,
snapshotDataStoreVO.getDataStoreId());
+ }
Review Comment:
```suggestion
} else {
logger.debug("Did not find snapshot [{}] in {} state on {}
data store ID: {}.", snapshotUuid, snapshotDataStoreVO.getState(), storeRole,
snapshotDataStoreVO.getDataStoreId());
}
```
##########
server/src/main/java/com/cloud/storage/StorageManagerImpl.java:
##########
@@ -2055,6 +2008,63 @@ public void cleanupStorage(boolean recurring) {
}
}
+ private void cleanupSnapshotsFromStoreRefInDestroyingState() {
+ List<SnapshotDataStoreVO> storeRefSnapshotsInDestroyingState =
_snapshotStoreDao.listByState(ObjectInDataStoreStateMachine.State.Destroying);
+ for (SnapshotDataStoreVO snapshotDataStoreVO :
storeRefSnapshotsInDestroyingState) {
+ SnapshotVO snapshot =
_snapshotDao.findById(snapshotDataStoreVO.getSnapshotId());
+ if (snapshot == null) {
+ logger.warn("Did not find snapshot [ID: {}] for which store
reference is in destroying state; therefore, it cannot be destroyed.",
snapshotDataStoreVO.getSnapshotId());
+ continue;
+ }
+ deleteSnapshot(snapshot, snapshotDataStoreVO);
+ }
+ }
+
+ private void deleteSnapshot(SnapshotVO snapshot, SnapshotDataStoreVO
snapshotDataStoreVO) {
+ if (snapshot == null || snapshotDataStoreVO == null) {
+ return;
+ }
+
+ try {
+ final String snapshotUuid = snapshot.getUuid();
+ final String storeRole =
snapshotDataStoreVO.getRole().toString().toLowerCase();
+ if (logger.isDebugEnabled()) {
+ logger.debug("Snapshot [{}] is in {} state on {} data store
ID: {}.", snapshotUuid, snapshotDataStoreVO.getState(), storeRole,
snapshotDataStoreVO.getDataStoreId());
+ }
+ SnapshotInfo snapshotInfo =
snapshotFactory.getSnapshotIncludingRemoved(snapshotDataStoreVO.getSnapshotId(),
snapshotDataStoreVO.getDataStoreId(), snapshotDataStoreVO.getRole());
+ if (snapshotInfo != null) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Snapshot [{}] in {} state found on {} data
store [{}], it will be deleted.", snapshotUuid, snapshotDataStoreVO.getState(),
storeRole, snapshotInfo.getDataStore().getUuid());
+ }
+ _snapshotService.deleteSnapshot(snapshotInfo);
+ } else if (logger.isDebugEnabled()) {
+ logger.debug("Did not find snapshot [{}] in {} state on {}
data store ID: {}.", snapshotUuid, snapshotDataStoreVO.getState(), storeRole,
snapshotDataStoreVO.getDataStoreId());
+ }
+ } catch (Exception e) {
+ logger.error("Failed to delete snapshot [{}] from storage due to:
[{}].", snapshot, e.getMessage());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Failed to delete snapshot [{}] from storage.",
snapshot, e);
+ }
Review Comment:
```suggestion
logger.debug("Failed to delete snapshot [{}] from storage.",
snapshot, e);
```
##########
server/src/main/java/com/cloud/storage/StorageManagerImpl.java:
##########
@@ -2055,6 +2008,63 @@ public void cleanupStorage(boolean recurring) {
}
}
+ private void cleanupSnapshotsFromStoreRefInDestroyingState() {
+ List<SnapshotDataStoreVO> storeRefSnapshotsInDestroyingState =
_snapshotStoreDao.listByState(ObjectInDataStoreStateMachine.State.Destroying);
+ for (SnapshotDataStoreVO snapshotDataStoreVO :
storeRefSnapshotsInDestroyingState) {
+ SnapshotVO snapshot =
_snapshotDao.findById(snapshotDataStoreVO.getSnapshotId());
+ if (snapshot == null) {
+ logger.warn("Did not find snapshot [ID: {}] for which store
reference is in destroying state; therefore, it cannot be destroyed.",
snapshotDataStoreVO.getSnapshotId());
+ continue;
+ }
+ deleteSnapshot(snapshot, snapshotDataStoreVO);
+ }
+ }
+
+ private void deleteSnapshot(SnapshotVO snapshot, SnapshotDataStoreVO
snapshotDataStoreVO) {
+ if (snapshot == null || snapshotDataStoreVO == null) {
+ return;
+ }
+
+ try {
+ final String snapshotUuid = snapshot.getUuid();
+ final String storeRole =
snapshotDataStoreVO.getRole().toString().toLowerCase();
+ if (logger.isDebugEnabled()) {
+ logger.debug("Snapshot [{}] is in {} state on {} data store
ID: {}.", snapshotUuid, snapshotDataStoreVO.getState(), storeRole,
snapshotDataStoreVO.getDataStoreId());
+ }
+ SnapshotInfo snapshotInfo =
snapshotFactory.getSnapshotIncludingRemoved(snapshotDataStoreVO.getSnapshotId(),
snapshotDataStoreVO.getDataStoreId(), snapshotDataStoreVO.getRole());
+ if (snapshotInfo != null) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Snapshot [{}] in {} state found on {} data
store [{}], it will be deleted.", snapshotUuid, snapshotDataStoreVO.getState(),
storeRole, snapshotInfo.getDataStore().getUuid());
+ }
Review Comment:
I think the condition is not needed for the simple getters. Else lambdas can
work as well.
```suggestion
logger.debug("Snapshot [{}] in {} state found on {} data
store [{}], it will be deleted.", snapshotUuid, snapshotDataStoreVO.getState(),
storeRole, snapshotInfo.getDataStore().getUuid());
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]