forked from MagicBane/Server
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.3 KiB
66 lines
2.3 KiB
3 years ago
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
||
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
||
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
||
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
||
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
||
|
// Magicbane Emulator Project © 2013 - 2022
|
||
|
// www.magicbane.com
|
||
|
|
||
|
package engine.workthreads;
|
||
|
|
||
|
import engine.db.archive.DataWarehouse;
|
||
|
import org.pmw.tinylog.Logger;
|
||
|
|
||
|
import java.sql.Connection;
|
||
|
import java.sql.PreparedStatement;
|
||
|
import java.sql.ResultSet;
|
||
|
import java.util.concurrent.atomic.LongAdder;
|
||
|
|
||
|
/*
|
||
|
* This thread runs at bootstrap to ensure cleanup of
|
||
|
* orphaned items (deleted items). God does this mess
|
||
|
* ever need to be refactored and re-use of item uuid's
|
||
|
* implemented.
|
||
|
*/
|
||
|
public class PurgeOprhans implements Runnable {
|
||
|
|
||
|
public static LongAdder recordsDeleted = new LongAdder();
|
||
|
|
||
|
public PurgeOprhans() {
|
||
|
|
||
|
recordsDeleted.reset();
|
||
|
|
||
|
}
|
||
|
|
||
|
public static void startPurgeThread() {
|
||
|
|
||
|
Thread purgeOrphans;
|
||
|
purgeOrphans = new Thread(new PurgeOprhans());
|
||
|
|
||
|
purgeOrphans.setName("purgeOrphans");
|
||
|
purgeOrphans.start();
|
||
|
}
|
||
|
|
||
|
public void run() {
|
||
|
|
||
|
// Member variable declaration
|
||
|
|
||
|
try (
|
||
|
Connection connection = DataWarehouse.connectionPool.getConnection();
|
||
|
PreparedStatement statement = connection.prepareStatement("SELECT * from `object` where `type` = 'item' AND `parent` IS NULL", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
|
||
|
ResultSet rs = statement.executeQuery()) {
|
||
|
|
||
|
while (rs.next()) {
|
||
|
rs.deleteRow();
|
||
|
recordsDeleted.increment();
|
||
|
}
|
||
|
|
||
|
} catch (Exception e) {
|
||
|
Logger.error( e.toString());
|
||
|
}
|
||
|
|
||
|
Logger.info("Thread is exiting with " + recordsDeleted.toString() + " items deleted");
|
||
|
}
|
||
|
|
||
|
}
|