summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-11 13:42:11 +0200
committerSimon Rettberg2015-09-11 13:42:11 +0200
commit0a59efeb3fa92156323adcd7c35ea206e88932bc (patch)
tree9550d3b94435c60380988631662c5680dcaa0ffe /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
parentMerge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1 (diff)
downloadtutor-module-0a59efeb3fa92156323adcd7c35ea206e88932bc.tar.gz
tutor-module-0a59efeb3fa92156323adcd7c35ea206e88932bc.tar.xz
tutor-module-0a59efeb3fa92156323adcd7c35ea206e88932bc.zip
[server] Handle deletion/undeletion flags
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java17
1 files changed, 15 insertions, 2 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
index 56e7d1d0..23efa2f0 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java
@@ -63,6 +63,13 @@ public class DeleteOldImages implements Runnable {
@Override
public void run() {
+ // Get all images currently marked as "Should delete" and reset them to "keep"
+ Set<String> resetList;
+ try {
+ resetList = DbImage.resetDeleteState();
+ } catch (SQLException e1) {
+ resetList = new HashSet<>();
+ }
if (!FileSystem.isStorageMounted()) {
LOGGER.warn("Will not execute deletion of old images; store seems to be unmounted!");
return;
@@ -90,19 +97,22 @@ public class DeleteOldImages implements Runnable {
LOGGER.error("Could not mark images to be deleted as invalid. Cleanup of old images failed.");
return;
}
- // Delete them permanently only if they expired (at least) one day ago
int hardDeleteCount = 0;
final long hardDelete = Util.unixTime() - 86400;
for (LocalImageVersion version : versions) {
if (version.expireTime < hardDelete) {
+ // Delete them permanently only if they expired (at least) one day ago
hardDeleteCount++;
try {
DbImage.setDeletion(DeleteState.SHOULD_DELETE, version.imageVersionId);
} catch (SQLException e) {
}
}
+ // Remove all versions from our reset list that were just disabled again, so we keep those
+ // that have potentially been falsely disabled before
+ resetList.remove(version.imageVersionId);
}
- // Delete base images which no image versions (including invalid ones)
+ // Delete base images with no image versions (including invalid ones)
int baseDeleteCount = 0;
try {
baseDeleteCount = DbImage.deleteOrphanedBases();
@@ -111,6 +121,9 @@ public class DeleteOldImages implements Runnable {
}
LOGGER.info("Deletion done. Soft: " + (versions.size() - hardDeleteCount) + ", hard: "
+ hardDeleteCount + ", base: " + baseDeleteCount);
+ // Aftermath: We might have a list of image versions that have been un-marked from deletion,
+ // and weren't re-marked in this run. This means there might have been clock skew or other problems.
+ // So let's check those images' files, and if they're ok, we also set the 'isvalid' flag again
}
public static StringBuilder hardDeleteImages() {