Break up purge task

This commit is contained in:
Jesse Boyd 2017-03-15 00:16:27 +11:00
parent 411c75b219
commit b0df79bb80
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F

View File

@ -2038,15 +2038,27 @@ public class SQLManager implements AbstractDB {
public void run() { public void run() {
if (!uniqueIds.isEmpty()) { if (!uniqueIds.isEmpty()) {
try { try {
ArrayList<Integer> uniqueIdsList = new ArrayList<Integer>(uniqueIds);
String stmt_prefix = ""; String stmt_prefix = "";
StringBuilder idstr2 = new StringBuilder(""); StringBuilder idstr2 = new StringBuilder("");
for (Integer id : uniqueIds) { int size = uniqueIdsList.size();
int packet = 5000;
int amount = size / packet;
int count = 0;
int last = -1;
for (int j = 0; j <= amount; j++) {
PS.debug("Purging " + (j * packet) + " / " + size);
List<Integer> subList = uniqueIdsList.subList(j * packet, Math.min(size, (j + 1) * packet));
if (subList.isEmpty()) {
break;
}
for (Integer id : subList) {
idstr2.append(stmt_prefix).append(id); idstr2.append(stmt_prefix).append(id);
stmt_prefix = " OR `id` = "; stmt_prefix = " OR `id` = ";
} }
stmt_prefix = ""; stmt_prefix = "";
StringBuilder idstr = new StringBuilder(); StringBuilder idstr = new StringBuilder();
for (Integer id : uniqueIds) { for (Integer id : subList) {
idstr.append(stmt_prefix).append(id); idstr.append(stmt_prefix).append(id);
stmt_prefix = " OR `plot_plot_id` = "; stmt_prefix = " OR `plot_plot_id` = ";
} }
@ -2070,6 +2082,7 @@ public class SQLManager implements AbstractDB {
.prepareStatement("DELETE FROM `" + SQLManager.this.prefix + "plot` WHERE `id` = " + idstr2); .prepareStatement("DELETE FROM `" + SQLManager.this.prefix + "plot` WHERE `id` = " + idstr2);
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
}
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
PS.debug("&c[ERROR] FAILED TO PURGE PLOTS!"); PS.debug("&c[ERROR] FAILED TO PURGE PLOTS!");