blob: 90e7e80dbf900035df25cc5dd27a86a106ea6651 (
plain) (
tree)
|
|
package org.openslx.bwlp.sat.maintenance;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.log4j.Logger;
import org.openslx.bwlp.sat.database.mappers.DbImage;
import org.openslx.bwlp.sat.database.models.LocalImageVersion;
import org.openslx.bwlp.sat.fileserv.FileServer;
/**
* Delete old image versions (images that reached their expire time).
*/
public class DeleteOldImages implements Runnable {
private static final Logger LOGGER = Logger.getLogger(DeleteOldImages.class);
@Override
public void run() {
List<LocalImageVersion> versions;
try {
versions = DbImage.getExpiringLocalImageVersions(0);
} catch (SQLException e) {
LOGGER.error("Will not be able to clean up old image versions");
return;
}
// Mark all as invalid. This will also trigger emails.
try {
DbImage.markValid(false, false, versions.toArray(new LocalImageVersion[versions.size()]));
} catch (SQLException e) {
LOGGER.error("Could not mark images to be deleted as invalid. Cleanup of old images failed.");
}
// Delete them permanently only if they expired (at least) one day ago
Set<String> deleteVersionIds = new HashSet<>();
final long hardDelete = (System.currentTimeMillis() / 1000) - 86400;
for (LocalImageVersion version : versions) {
if (version.expireTime < hardDelete) {
deleteVersionIds.add(version.imageVersionId);
FileServer.composeAbsolutePath(version).delete();
}
}
}
}
|