summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-09 18:47:45 +0200
committerSimon Rettberg2015-09-09 18:47:45 +0200
commit115bbf31319678f18c184980e2cc9a3b1ed5ed45 (patch)
tree6799d85c2ed0552f9cb0fc6de4edc447c2ea0246 /dozentenmodulserver/src/main/java/org
parentMerge branch 'v1.1' of stp:openslx-ng/tutor-module into v1.1 (diff)
downloadtutor-module-115bbf31319678f18c184980e2cc9a3b1ed5ed45.tar.gz
tutor-module-115bbf31319678f18c184980e2cc9a3b1ed5ed45.tar.xz
tutor-module-115bbf31319678f18c184980e2cc9a3b1ed5ed45.zip
[server] Delete incomplete uploads (missing meta data)
Diffstat (limited to 'dozentenmodulserver/src/main/java/org')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java23
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/models/LocalImageVersion.java5
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/maintenance/DeleteOldImages.java14
3 files changed, 37 insertions, 5 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
index bf79e88f..40d97657 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbImage.java
@@ -116,8 +116,8 @@ public class DbImage {
}
private final static String localImageBaseSql = "SELECT"
- + " imageversionid, imagebaseid, filepath, filesize, uploaderid, createtime, expiretime, isvalid"
- + " FROM imageversion";
+ + " v.imageversionid, v.imagebaseid, v.filepath, v.filesize, v.uploaderid, v.createtime, v.expiretime, v.isvalid"
+ + " FROM imageversion v";
private static LocalImageVersion toLocalImageVersion(ResultSet rs) throws SQLException {
return new LocalImageVersion(rs.getString("imageversionid"), rs.getString("imagebaseid"),
@@ -815,6 +815,25 @@ public class DbImage {
return true;
}
+ public static List<LocalImageVersion> getVersionsWithMissingData() throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ MysqlStatement stmt = connection.prepareStatement(localImageBaseSql
+ + " INNER JOIN imagebase b USING (imagebaseid)"
+ + " WHERE b.virtid IS NULL OR b.osid IS NULL");
+ ResultSet rs = stmt.executeQuery();
+ List<LocalImageVersion> list = new ArrayList<>();
+ while (rs.next()) {
+ list.add(new LocalImageVersion(rs.getString("imageversionid"), rs.getString("imagebaseid"),
+ rs.getString("filepath"), rs.getLong("filesize"), rs.getString("uploaderid"),
+ rs.getLong("createtime"), 0, rs.getBoolean("isvalid")));
+ }
+ return list;
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in DbImage.getVersionsWithMissingData()", e);
+ throw e;
+ }
+ }
+
public static int deleteOrphanedBases() throws SQLException {
try (MysqlConnection connection = Database.getConnection()) {
// Get all image base entries which have no image version
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/models/LocalImageVersion.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/models/LocalImageVersion.java
index c1952434..96b6e44d 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/models/LocalImageVersion.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/models/LocalImageVersion.java
@@ -36,4 +36,9 @@ public class LocalImageVersion {
&& this.imageVersionId.equals(((LocalImageVersion) that).imageVersionId);
}
+ @Override
+ public int hashCode() {
+ return imageVersionId == null ? 0 : imageVersionId.hashCode() ^ 12345;
+ }
+
}
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 929fbb2a..531f169a 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
@@ -1,7 +1,9 @@
package org.openslx.bwlp.sat.maintenance;
import java.sql.SQLException;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
@@ -63,14 +65,20 @@ public class DeleteOldImages implements Runnable {
return;
}
LOGGER.info("Looking for old image versions to delete");
- List<LocalImageVersion> versions;
+ Set<LocalImageVersion> versions = new HashSet<>();
// First get a list of all image versions which reached their expire date,
// no matter if valid or invalid
try {
- versions = DbImage.getExpiringLocalImageVersions(0);
+ List<LocalImageVersion> list = DbImage.getExpiringLocalImageVersions(0);
+ versions.addAll(list);
} catch (SQLException e) {
LOGGER.error("Will not be able to clean up old image versions");
- return;
+ }
+ try {
+ List<LocalImageVersion> list = DbImage.getVersionsWithMissingData();
+ versions.addAll(list);
+ } catch (SQLException e) {
+ LOGGER.error("Will not be able to clean up invalid image versions");
}
// Mark all as invalid. This will also trigger mails if they have been valid before
try {