diff options
author | Simon Rettberg | 2015-09-11 13:42:11 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-09-11 13:42:11 +0200 |
commit | 0a59efeb3fa92156323adcd7c35ea206e88932bc (patch) | |
tree | 9550d3b94435c60380988631662c5680dcaa0ffe /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java | |
parent | Merge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1 (diff) | |
download | tutor-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.java | 17 |
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() { |