mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-25 10:37:51 +01:00
Refactored database clean task out of the database
Fixed SonarCloud smells: Level blocker: - Removed 'dbType' field from CreateIndexTransaction (is in Transaction) - Removed unused 'dbSystem' from AnalysisContainer
This commit is contained in:
parent
0d8c2f2824
commit
4f63a3771b
@ -18,6 +18,7 @@ package com.djrapitops.plan.system.tasks;
|
|||||||
|
|
||||||
import com.djrapitops.plan.Plan;
|
import com.djrapitops.plan.Plan;
|
||||||
import com.djrapitops.plan.ShutdownHook;
|
import com.djrapitops.plan.ShutdownHook;
|
||||||
|
import com.djrapitops.plan.db.tasks.DBCleanTask;
|
||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
||||||
import com.djrapitops.plan.system.tasks.bukkit.BukkitTPSCountTimer;
|
import com.djrapitops.plan.system.tasks.bukkit.BukkitTPSCountTimer;
|
||||||
@ -46,6 +47,7 @@ public class BukkitTaskSystem extends ServerTaskSystem {
|
|||||||
private final ShutdownHook shutdownHook;
|
private final ShutdownHook shutdownHook;
|
||||||
private final PingCountTimerBukkit pingCountTimer;
|
private final PingCountTimerBukkit pingCountTimer;
|
||||||
private final ConfigStoreTask configStoreTask;
|
private final ConfigStoreTask configStoreTask;
|
||||||
|
private final DBCleanTask dbCleanTask;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public BukkitTaskSystem(
|
public BukkitTaskSystem(
|
||||||
@ -60,7 +62,8 @@ public class BukkitTaskSystem extends ServerTaskSystem {
|
|||||||
PingCountTimerBukkit pingCountTimer,
|
PingCountTimerBukkit pingCountTimer,
|
||||||
LogsFolderCleanTask logsFolderCleanTask,
|
LogsFolderCleanTask logsFolderCleanTask,
|
||||||
PlayersPageRefreshTask playersPageRefreshTask,
|
PlayersPageRefreshTask playersPageRefreshTask,
|
||||||
ConfigStoreTask configStoreTask
|
ConfigStoreTask configStoreTask,
|
||||||
|
DBCleanTask dbCleanTask
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
runnableFactory,
|
runnableFactory,
|
||||||
@ -74,6 +77,7 @@ public class BukkitTaskSystem extends ServerTaskSystem {
|
|||||||
this.shutdownHook = shutdownHook;
|
this.shutdownHook = shutdownHook;
|
||||||
this.pingCountTimer = pingCountTimer;
|
this.pingCountTimer = pingCountTimer;
|
||||||
this.configStoreTask = configStoreTask;
|
this.configStoreTask = configStoreTask;
|
||||||
|
this.dbCleanTask = dbCleanTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -88,6 +92,11 @@ public class BukkitTaskSystem extends ServerTaskSystem {
|
|||||||
// +40 ticks / 2 seconds so that update check task runs first.
|
// +40 ticks / 2 seconds so that update check task runs first.
|
||||||
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
|
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
|
||||||
registerTask("Config Store Task", configStoreTask).runTaskLaterAsynchronously(storeDelay);
|
registerTask("Config Store Task", configStoreTask).runTaskLaterAsynchronously(storeDelay);
|
||||||
|
|
||||||
|
registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously(
|
||||||
|
TimeAmount.toTicks(20, TimeUnit.SECONDS),
|
||||||
|
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
|
||||||
|
);
|
||||||
} catch (ExceptionInInitializerError | NoClassDefFoundError ignore) {
|
} catch (ExceptionInInitializerError | NoClassDefFoundError ignore) {
|
||||||
// Running CraftBukkit
|
// Running CraftBukkit
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package com.djrapitops.plan.system.tasks;
|
package com.djrapitops.plan.system.tasks;
|
||||||
|
|
||||||
import com.djrapitops.plan.PlanBungee;
|
import com.djrapitops.plan.PlanBungee;
|
||||||
|
import com.djrapitops.plan.db.tasks.DBCleanTask;
|
||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
||||||
import com.djrapitops.plan.system.tasks.bungee.BungeeTPSCountTimer;
|
import com.djrapitops.plan.system.tasks.bungee.BungeeTPSCountTimer;
|
||||||
@ -43,6 +44,7 @@ public class BungeeTaskSystem extends TaskSystem {
|
|||||||
private final LogsFolderCleanTask logsFolderCleanTask;
|
private final LogsFolderCleanTask logsFolderCleanTask;
|
||||||
private final PlayersPageRefreshTask playersPageRefreshTask;
|
private final PlayersPageRefreshTask playersPageRefreshTask;
|
||||||
private final NetworkConfigStoreTask networkConfigStoreTask;
|
private final NetworkConfigStoreTask networkConfigStoreTask;
|
||||||
|
private final DBCleanTask dbCleanTask;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public BungeeTaskSystem(
|
public BungeeTaskSystem(
|
||||||
@ -54,7 +56,8 @@ public class BungeeTaskSystem extends TaskSystem {
|
|||||||
PingCountTimerBungee pingCountTimer,
|
PingCountTimerBungee pingCountTimer,
|
||||||
LogsFolderCleanTask logsFolderCleanTask,
|
LogsFolderCleanTask logsFolderCleanTask,
|
||||||
PlayersPageRefreshTask playersPageRefreshTask,
|
PlayersPageRefreshTask playersPageRefreshTask,
|
||||||
NetworkConfigStoreTask networkConfigStoreTask
|
NetworkConfigStoreTask networkConfigStoreTask,
|
||||||
|
DBCleanTask dbCleanTask
|
||||||
) {
|
) {
|
||||||
super(runnableFactory, bungeeTPSCountTimer);
|
super(runnableFactory, bungeeTPSCountTimer);
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
@ -65,6 +68,7 @@ public class BungeeTaskSystem extends TaskSystem {
|
|||||||
this.logsFolderCleanTask = logsFolderCleanTask;
|
this.logsFolderCleanTask = logsFolderCleanTask;
|
||||||
this.playersPageRefreshTask = playersPageRefreshTask;
|
this.playersPageRefreshTask = playersPageRefreshTask;
|
||||||
this.networkConfigStoreTask = networkConfigStoreTask;
|
this.networkConfigStoreTask = networkConfigStoreTask;
|
||||||
|
this.dbCleanTask = dbCleanTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -87,5 +91,10 @@ public class BungeeTaskSystem extends TaskSystem {
|
|||||||
// +40 ticks / 2 seconds so that update check task runs first.
|
// +40 ticks / 2 seconds so that update check task runs first.
|
||||||
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
|
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
|
||||||
registerTask("Config Store Task", networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
|
registerTask("Config Store Task", networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
|
||||||
|
|
||||||
|
registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously(
|
||||||
|
TimeAmount.toTicks(20, TimeUnit.SECONDS),
|
||||||
|
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,6 @@ import com.djrapitops.plan.data.store.keys.ServerKeys;
|
|||||||
import com.djrapitops.plan.data.store.mutators.*;
|
import com.djrapitops.plan.data.store.mutators.*;
|
||||||
import com.djrapitops.plan.data.store.mutators.health.HealthInformation;
|
import com.djrapitops.plan.data.store.mutators.health.HealthInformation;
|
||||||
import com.djrapitops.plan.data.time.WorldTimes;
|
import com.djrapitops.plan.data.time.WorldTimes;
|
||||||
import com.djrapitops.plan.system.database.DBSystem;
|
|
||||||
import com.djrapitops.plan.system.info.server.properties.ServerProperties;
|
import com.djrapitops.plan.system.info.server.properties.ServerProperties;
|
||||||
import com.djrapitops.plan.system.locale.Locale;
|
import com.djrapitops.plan.system.locale.Locale;
|
||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
@ -67,7 +66,6 @@ public class AnalysisContainer extends DynamicDataContainer {
|
|||||||
private final Locale locale;
|
private final Locale locale;
|
||||||
private final PlanConfig config;
|
private final PlanConfig config;
|
||||||
private final Theme theme;
|
private final Theme theme;
|
||||||
private final DBSystem dbSystem;
|
|
||||||
private final ServerProperties serverProperties;
|
private final ServerProperties serverProperties;
|
||||||
private final Formatters formatters;
|
private final Formatters formatters;
|
||||||
private final Graphs graphs;
|
private final Graphs graphs;
|
||||||
@ -81,7 +79,6 @@ public class AnalysisContainer extends DynamicDataContainer {
|
|||||||
Locale locale,
|
Locale locale,
|
||||||
PlanConfig config,
|
PlanConfig config,
|
||||||
Theme theme,
|
Theme theme,
|
||||||
DBSystem dbSystem,
|
|
||||||
ServerProperties serverProperties,
|
ServerProperties serverProperties,
|
||||||
Formatters formatters,
|
Formatters formatters,
|
||||||
Graphs graphs,
|
Graphs graphs,
|
||||||
@ -94,7 +91,6 @@ public class AnalysisContainer extends DynamicDataContainer {
|
|||||||
this.locale = locale;
|
this.locale = locale;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.theme = theme;
|
this.theme = theme;
|
||||||
this.dbSystem = dbSystem;
|
|
||||||
this.serverProperties = serverProperties;
|
this.serverProperties = serverProperties;
|
||||||
this.formatters = formatters;
|
this.formatters = formatters;
|
||||||
this.graphs = graphs;
|
this.graphs = graphs;
|
||||||
@ -508,7 +504,6 @@ public class AnalysisContainer extends DynamicDataContainer {
|
|||||||
private final PlanConfig config;
|
private final PlanConfig config;
|
||||||
private final Locale locale;
|
private final Locale locale;
|
||||||
private final Theme theme;
|
private final Theme theme;
|
||||||
private final DBSystem dbSystem;
|
|
||||||
private final ServerProperties serverProperties;
|
private final ServerProperties serverProperties;
|
||||||
private final Formatters formatters;
|
private final Formatters formatters;
|
||||||
private final Graphs graphs;
|
private final Graphs graphs;
|
||||||
@ -522,7 +517,6 @@ public class AnalysisContainer extends DynamicDataContainer {
|
|||||||
PlanConfig config,
|
PlanConfig config,
|
||||||
Locale locale,
|
Locale locale,
|
||||||
Theme theme,
|
Theme theme,
|
||||||
DBSystem dbSystem,
|
|
||||||
ServerProperties serverProperties,
|
ServerProperties serverProperties,
|
||||||
Formatters formatters,
|
Formatters formatters,
|
||||||
Graphs graphs,
|
Graphs graphs,
|
||||||
@ -534,7 +528,6 @@ public class AnalysisContainer extends DynamicDataContainer {
|
|||||||
this.config = config;
|
this.config = config;
|
||||||
this.locale = locale;
|
this.locale = locale;
|
||||||
this.theme = theme;
|
this.theme = theme;
|
||||||
this.dbSystem = dbSystem;
|
|
||||||
this.serverProperties = serverProperties;
|
this.serverProperties = serverProperties;
|
||||||
this.formatters = formatters;
|
this.formatters = formatters;
|
||||||
this.graphs = graphs;
|
this.graphs = graphs;
|
||||||
@ -550,7 +543,6 @@ public class AnalysisContainer extends DynamicDataContainer {
|
|||||||
locale,
|
locale,
|
||||||
config,
|
config,
|
||||||
theme,
|
theme,
|
||||||
dbSystem,
|
|
||||||
serverProperties,
|
serverProperties,
|
||||||
formatters,
|
formatters,
|
||||||
graphs,
|
graphs,
|
||||||
|
@ -67,9 +67,6 @@ public interface Database {
|
|||||||
*/
|
*/
|
||||||
DBType getType();
|
DBType getType();
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
void scheduleClean(long delay);
|
|
||||||
|
|
||||||
State getState();
|
State getState();
|
||||||
|
|
||||||
enum State {
|
enum State {
|
||||||
|
@ -22,21 +22,18 @@ import com.djrapitops.plan.api.exceptions.database.FatalDBException;
|
|||||||
import com.djrapitops.plan.data.store.containers.NetworkContainer;
|
import com.djrapitops.plan.data.store.containers.NetworkContainer;
|
||||||
import com.djrapitops.plan.db.access.Query;
|
import com.djrapitops.plan.db.access.Query;
|
||||||
import com.djrapitops.plan.db.access.transactions.Transaction;
|
import com.djrapitops.plan.db.access.transactions.Transaction;
|
||||||
import com.djrapitops.plan.db.access.transactions.init.CleanTransaction;
|
|
||||||
import com.djrapitops.plan.db.access.transactions.init.CreateIndexTransaction;
|
import com.djrapitops.plan.db.access.transactions.init.CreateIndexTransaction;
|
||||||
import com.djrapitops.plan.db.access.transactions.init.CreateTablesTransaction;
|
import com.djrapitops.plan.db.access.transactions.init.CreateTablesTransaction;
|
||||||
import com.djrapitops.plan.db.access.transactions.init.OperationCriticalTransaction;
|
import com.djrapitops.plan.db.access.transactions.init.OperationCriticalTransaction;
|
||||||
import com.djrapitops.plan.db.patches.*;
|
import com.djrapitops.plan.db.patches.*;
|
||||||
import com.djrapitops.plan.system.locale.Locale;
|
import com.djrapitops.plan.system.locale.Locale;
|
||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
|
||||||
import com.djrapitops.plan.utilities.java.ThrowableUtils;
|
import com.djrapitops.plan.utilities.java.ThrowableUtils;
|
||||||
import com.djrapitops.plugin.api.TimeAmount;
|
import com.djrapitops.plugin.api.TimeAmount;
|
||||||
import com.djrapitops.plugin.logging.L;
|
import com.djrapitops.plugin.logging.L;
|
||||||
import com.djrapitops.plugin.logging.console.PluginLogger;
|
import com.djrapitops.plugin.logging.console.PluginLogger;
|
||||||
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
||||||
import com.djrapitops.plugin.task.AbsRunnable;
|
import com.djrapitops.plugin.task.AbsRunnable;
|
||||||
import com.djrapitops.plugin.task.PluginTask;
|
|
||||||
import com.djrapitops.plugin.task.RunnableFactory;
|
import com.djrapitops.plugin.task.RunnableFactory;
|
||||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
|
|
||||||
@ -65,8 +62,6 @@ public abstract class SQLDB extends AbstractDatabase {
|
|||||||
protected final PluginLogger logger;
|
protected final PluginLogger logger;
|
||||||
protected final ErrorHandler errorHandler;
|
protected final ErrorHandler errorHandler;
|
||||||
|
|
||||||
private PluginTask dbCleanTask;
|
|
||||||
|
|
||||||
private Supplier<ExecutorService> transactionExecutorServiceProvider;
|
private Supplier<ExecutorService> transactionExecutorServiceProvider;
|
||||||
private ExecutorService transactionExecutor;
|
private ExecutorService transactionExecutor;
|
||||||
|
|
||||||
@ -125,28 +120,6 @@ public abstract class SQLDB extends AbstractDatabase {
|
|||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void scheduleClean(long secondsDelay) {
|
|
||||||
dbCleanTask = runnableFactory.create("DB Clean Task", new AbsRunnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
if (getState() != State.CLOSED) {
|
|
||||||
executeTransaction(new CleanTransaction(serverUUIDSupplier.get(),
|
|
||||||
config.get(TimeSettings.KEEP_INACTIVE_PLAYERS), logger, locale)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch (DBOpException e) {
|
|
||||||
errorHandler.log(L.ERROR, this.getClass(), e);
|
|
||||||
cancel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).runTaskTimerAsynchronously(
|
|
||||||
TimeAmount.toTicks(secondsDelay, TimeUnit.SECONDS),
|
|
||||||
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Patch[] patches() {
|
Patch[] patches() {
|
||||||
return new Patch[]{
|
return new Patch[]{
|
||||||
new Version10Patch(),
|
new Version10Patch(),
|
||||||
@ -197,7 +170,7 @@ public abstract class SQLDB extends AbstractDatabase {
|
|||||||
runnableFactory.create("Database Index Creation", new AbsRunnable() {
|
runnableFactory.create("Database Index Creation", new AbsRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
executeTransaction(new CreateIndexTransaction(getType()));
|
executeTransaction(new CreateIndexTransaction());
|
||||||
}
|
}
|
||||||
}).runTaskLaterAsynchronously(TimeAmount.toTicks(1, TimeUnit.MINUTES));
|
}).runTaskLaterAsynchronously(TimeAmount.toTicks(1, TimeUnit.MINUTES));
|
||||||
} catch (Exception ignore) {
|
} catch (Exception ignore) {
|
||||||
@ -216,9 +189,6 @@ public abstract class SQLDB extends AbstractDatabase {
|
|||||||
public void close() {
|
public void close() {
|
||||||
setState(State.CLOSED);
|
setState(State.CLOSED);
|
||||||
closeTransactionExecutor(transactionExecutor);
|
closeTransactionExecutor(transactionExecutor);
|
||||||
if (dbCleanTask != null) {
|
|
||||||
dbCleanTask.cancel();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Connection getConnection() throws SQLException;
|
public abstract Connection getConnection() throws SQLException;
|
||||||
|
@ -29,12 +29,6 @@ import org.apache.commons.text.TextStringBuilder;
|
|||||||
*/
|
*/
|
||||||
public class CreateIndexTransaction extends Transaction {
|
public class CreateIndexTransaction extends Transaction {
|
||||||
|
|
||||||
private final DBType dbType;
|
|
||||||
|
|
||||||
public CreateIndexTransaction(DBType dbType) {
|
|
||||||
this.dbType = dbType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void performOperations() {
|
protected void performOperations() {
|
||||||
createIndex(UsersTable.TABLE_NAME, "plan_users_uuid_index",
|
createIndex(UsersTable.TABLE_NAME, "plan_users_uuid_index",
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
package com.djrapitops.plan.db.tasks;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.api.exceptions.database.DBOpException;
|
||||||
|
import com.djrapitops.plan.db.Database;
|
||||||
|
import com.djrapitops.plan.db.access.transactions.init.CleanTransaction;
|
||||||
|
import com.djrapitops.plan.system.database.DBSystem;
|
||||||
|
import com.djrapitops.plan.system.info.server.ServerInfo;
|
||||||
|
import com.djrapitops.plan.system.locale.Locale;
|
||||||
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
|
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
||||||
|
import com.djrapitops.plugin.logging.L;
|
||||||
|
import com.djrapitops.plugin.logging.console.PluginLogger;
|
||||||
|
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
||||||
|
import com.djrapitops.plugin.task.AbsRunnable;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Task for cleaning the active database.
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
@Singleton
|
||||||
|
public class DBCleanTask extends AbsRunnable {
|
||||||
|
|
||||||
|
private final Locale locale;
|
||||||
|
private final DBSystem dbSystem;
|
||||||
|
private final PlanConfig config;
|
||||||
|
private final ServerInfo serverInfo;
|
||||||
|
private final PluginLogger logger;
|
||||||
|
private final ErrorHandler errorHandler;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public DBCleanTask(
|
||||||
|
PlanConfig config,
|
||||||
|
Locale locale,
|
||||||
|
DBSystem dbSystem,
|
||||||
|
ServerInfo serverInfo,
|
||||||
|
PluginLogger logger,
|
||||||
|
ErrorHandler errorHandler
|
||||||
|
) {
|
||||||
|
this.locale = locale;
|
||||||
|
|
||||||
|
this.dbSystem = dbSystem;
|
||||||
|
this.config = config;
|
||||||
|
this.serverInfo = serverInfo;
|
||||||
|
this.logger = logger;
|
||||||
|
this.errorHandler = errorHandler;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Database database = dbSystem.getDatabase();
|
||||||
|
try {
|
||||||
|
if (database.getState() != Database.State.CLOSED) {
|
||||||
|
database.executeTransaction(new CleanTransaction(serverInfo.getServerUUID(),
|
||||||
|
config.get(TimeSettings.KEEP_INACTIVE_PLAYERS), logger, locale)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (DBOpException e) {
|
||||||
|
errorHandler.log(L.ERROR, this.getClass(), e);
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -97,7 +97,6 @@ public abstract class DBSystem implements SubSystem {
|
|||||||
public void enable() throws EnableException {
|
public void enable() throws EnableException {
|
||||||
try {
|
try {
|
||||||
db.init();
|
db.init();
|
||||||
db.scheduleClean(20L);
|
|
||||||
logger.info(locale.getString(PluginLang.ENABLED_DATABASE, db.getType().getName()));
|
logger.info(locale.getString(PluginLang.ENABLED_DATABASE, db.getType().getName()));
|
||||||
} catch (DBInitException e) {
|
} catch (DBInitException e) {
|
||||||
Throwable cause = e.getCause();
|
Throwable cause = e.getCause();
|
||||||
|
@ -900,7 +900,6 @@ public abstract class CommonDBTest {
|
|||||||
system.getConfigSystem().getConfig(),
|
system.getConfigSystem().getConfig(),
|
||||||
system.getLocaleSystem().getLocale(),
|
system.getLocaleSystem().getLocale(),
|
||||||
system.getConfigSystem().getTheme(),
|
system.getConfigSystem().getTheme(),
|
||||||
dbSystem,
|
|
||||||
system.getServerInfo().getServerProperties(),
|
system.getServerInfo().getServerProperties(),
|
||||||
system.getHtmlUtilities().getFormatters(),
|
system.getHtmlUtilities().getFormatters(),
|
||||||
system.getHtmlUtilities().getGraphs(),
|
system.getHtmlUtilities().getGraphs(),
|
||||||
@ -991,7 +990,7 @@ public abstract class CommonDBTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void indexCreationWorksWithoutErrors() {
|
public void indexCreationWorksWithoutErrors() {
|
||||||
db.executeTransaction(new CreateIndexTransaction(db.getType()));
|
db.executeTransaction(new CreateIndexTransaction());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -18,6 +18,7 @@ package com.djrapitops.plan.system.tasks;
|
|||||||
|
|
||||||
import com.djrapitops.plan.PlanSponge;
|
import com.djrapitops.plan.PlanSponge;
|
||||||
import com.djrapitops.plan.ShutdownHook;
|
import com.djrapitops.plan.ShutdownHook;
|
||||||
|
import com.djrapitops.plan.db.tasks.DBCleanTask;
|
||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
||||||
import com.djrapitops.plan.system.tasks.server.BootAnalysisTask;
|
import com.djrapitops.plan.system.tasks.server.BootAnalysisTask;
|
||||||
@ -39,6 +40,7 @@ public class SpongeTaskSystem extends ServerTaskSystem {
|
|||||||
private final ShutdownHook shutdownHook;
|
private final ShutdownHook shutdownHook;
|
||||||
private final PingCountTimerSponge pingCountTimer;
|
private final PingCountTimerSponge pingCountTimer;
|
||||||
private final ConfigStoreTask configStoreTask;
|
private final ConfigStoreTask configStoreTask;
|
||||||
|
private final DBCleanTask dbCleanTask;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public SpongeTaskSystem(
|
public SpongeTaskSystem(
|
||||||
@ -52,7 +54,8 @@ public class SpongeTaskSystem extends ServerTaskSystem {
|
|||||||
PingCountTimerSponge pingCountTimer,
|
PingCountTimerSponge pingCountTimer,
|
||||||
LogsFolderCleanTask logsFolderCleanTask,
|
LogsFolderCleanTask logsFolderCleanTask,
|
||||||
PlayersPageRefreshTask playersPageRefreshTask,
|
PlayersPageRefreshTask playersPageRefreshTask,
|
||||||
ConfigStoreTask configStoreTask
|
ConfigStoreTask configStoreTask,
|
||||||
|
DBCleanTask dbCleanTask
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
runnableFactory,
|
runnableFactory,
|
||||||
@ -66,6 +69,7 @@ public class SpongeTaskSystem extends ServerTaskSystem {
|
|||||||
this.shutdownHook = shutdownHook;
|
this.shutdownHook = shutdownHook;
|
||||||
this.pingCountTimer = pingCountTimer;
|
this.pingCountTimer = pingCountTimer;
|
||||||
this.configStoreTask = configStoreTask;
|
this.configStoreTask = configStoreTask;
|
||||||
|
this.dbCleanTask = dbCleanTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -81,6 +85,11 @@ public class SpongeTaskSystem extends ServerTaskSystem {
|
|||||||
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
|
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
|
||||||
registerTask("Config Store Task", configStoreTask).runTaskLaterAsynchronously(storeDelay);
|
registerTask("Config Store Task", configStoreTask).runTaskLaterAsynchronously(storeDelay);
|
||||||
|
|
||||||
|
registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously(
|
||||||
|
TimeAmount.toTicks(20, TimeUnit.SECONDS),
|
||||||
|
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
|
||||||
|
);
|
||||||
|
|
||||||
shutdownHook.register();
|
shutdownHook.register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package com.djrapitops.plan.system.tasks;
|
package com.djrapitops.plan.system.tasks;
|
||||||
|
|
||||||
import com.djrapitops.plan.PlanVelocity;
|
import com.djrapitops.plan.PlanVelocity;
|
||||||
|
import com.djrapitops.plan.db.tasks.DBCleanTask;
|
||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
import com.djrapitops.plan.system.settings.paths.TimeSettings;
|
||||||
import com.djrapitops.plan.system.tasks.proxy.NetworkConfigStoreTask;
|
import com.djrapitops.plan.system.tasks.proxy.NetworkConfigStoreTask;
|
||||||
@ -43,6 +44,7 @@ public class VelocityTaskSystem extends TaskSystem {
|
|||||||
private final LogsFolderCleanTask logsFolderCleanTask;
|
private final LogsFolderCleanTask logsFolderCleanTask;
|
||||||
private final PlayersPageRefreshTask playersPageRefreshTask;
|
private final PlayersPageRefreshTask playersPageRefreshTask;
|
||||||
private final NetworkConfigStoreTask networkConfigStoreTask;
|
private final NetworkConfigStoreTask networkConfigStoreTask;
|
||||||
|
private final DBCleanTask dbCleanTask;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public VelocityTaskSystem(
|
public VelocityTaskSystem(
|
||||||
@ -54,7 +56,8 @@ public class VelocityTaskSystem extends TaskSystem {
|
|||||||
PingCountTimerVelocity pingCountTimer,
|
PingCountTimerVelocity pingCountTimer,
|
||||||
LogsFolderCleanTask logsFolderCleanTask,
|
LogsFolderCleanTask logsFolderCleanTask,
|
||||||
PlayersPageRefreshTask playersPageRefreshTask,
|
PlayersPageRefreshTask playersPageRefreshTask,
|
||||||
NetworkConfigStoreTask networkConfigStoreTask
|
NetworkConfigStoreTask networkConfigStoreTask,
|
||||||
|
DBCleanTask dbCleanTask
|
||||||
) {
|
) {
|
||||||
super(runnableFactory, velocityTPSCountTimer);
|
super(runnableFactory, velocityTPSCountTimer);
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
@ -65,6 +68,7 @@ public class VelocityTaskSystem extends TaskSystem {
|
|||||||
this.logsFolderCleanTask = logsFolderCleanTask;
|
this.logsFolderCleanTask = logsFolderCleanTask;
|
||||||
this.playersPageRefreshTask = playersPageRefreshTask;
|
this.playersPageRefreshTask = playersPageRefreshTask;
|
||||||
this.networkConfigStoreTask = networkConfigStoreTask;
|
this.networkConfigStoreTask = networkConfigStoreTask;
|
||||||
|
this.dbCleanTask = dbCleanTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -87,5 +91,10 @@ public class VelocityTaskSystem extends TaskSystem {
|
|||||||
// +40 ticks / 2 seconds so that update check task runs first.
|
// +40 ticks / 2 seconds so that update check task runs first.
|
||||||
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
|
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
|
||||||
registerTask("Config Store Task", networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
|
registerTask("Config Store Task", networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
|
||||||
|
|
||||||
|
registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously(
|
||||||
|
TimeAmount.toTicks(20, TimeUnit.SECONDS),
|
||||||
|
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user