CallEvents.SERVER_PERIODICAL calls

This commit is contained in:
Rsl1122 2019-03-31 12:46:26 +03:00
parent 4fe85d95ed
commit ee795b7702
8 changed files with 108 additions and 27 deletions

View File

@ -19,6 +19,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.db.tasks.DBCleanTask;
import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
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;
@ -50,6 +51,7 @@ public class BukkitTaskSystem extends ServerTaskSystem {
private final PingCountTimerBukkit pingCountTimer; private final PingCountTimerBukkit pingCountTimer;
private final ConfigStoreTask configStoreTask; private final ConfigStoreTask configStoreTask;
private final DBCleanTask dbCleanTask; private final DBCleanTask dbCleanTask;
private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject @Inject
public BukkitTaskSystem( public BukkitTaskSystem(
@ -65,7 +67,8 @@ public class BukkitTaskSystem extends ServerTaskSystem {
LogsFolderCleanTask logsFolderCleanTask, LogsFolderCleanTask logsFolderCleanTask,
PlayersPageRefreshTask playersPageRefreshTask, PlayersPageRefreshTask playersPageRefreshTask,
ConfigStoreTask configStoreTask, ConfigStoreTask configStoreTask,
DBCleanTask dbCleanTask DBCleanTask dbCleanTask,
ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) { ) {
super( super(
runnableFactory, runnableFactory,
@ -80,6 +83,7 @@ public class BukkitTaskSystem extends ServerTaskSystem {
this.pingCountTimer = pingCountTimer; this.pingCountTimer = pingCountTimer;
this.configStoreTask = configStoreTask; this.configStoreTask = configStoreTask;
this.dbCleanTask = dbCleanTask; this.dbCleanTask = dbCleanTask;
this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
} }
@Override @Override
@ -88,20 +92,24 @@ public class BukkitTaskSystem extends ServerTaskSystem {
try { try {
plugin.registerListener(pingCountTimer); plugin.registerListener(pingCountTimer);
long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS); long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS);
registerTask("PingCountTimer", pingCountTimer) registerTask(pingCountTimer).runTaskTimer(startDelay, 40L);
.runTaskTimer(startDelay, 40L);
// +40 ticks / 2 seconds so that update check task runs first.
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
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
} }
// +40 ticks / 2 seconds so that update check task runs first.
long storeDelay = TimeAmount.toTicks(config.get(TimeSettings.CONFIG_UPDATE_INTERVAL), TimeUnit.MILLISECONDS) + 40;
registerTask(configStoreTask).runTaskLaterAsynchronously(storeDelay);
registerTask(dbCleanTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(20, TimeUnit.SECONDS),
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
);
long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod
);
shutdownHook.register(); shutdownHook.register();
} }

View File

@ -18,6 +18,7 @@ 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.db.tasks.DBCleanTask;
import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
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;
@ -47,6 +48,7 @@ public class BungeeTaskSystem extends TaskSystem {
private final PlayersPageRefreshTask playersPageRefreshTask; private final PlayersPageRefreshTask playersPageRefreshTask;
private final NetworkConfigStoreTask networkConfigStoreTask; private final NetworkConfigStoreTask networkConfigStoreTask;
private final DBCleanTask dbCleanTask; private final DBCleanTask dbCleanTask;
private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject @Inject
public BungeeTaskSystem( public BungeeTaskSystem(
@ -59,7 +61,8 @@ public class BungeeTaskSystem extends TaskSystem {
LogsFolderCleanTask logsFolderCleanTask, LogsFolderCleanTask logsFolderCleanTask,
PlayersPageRefreshTask playersPageRefreshTask, PlayersPageRefreshTask playersPageRefreshTask,
NetworkConfigStoreTask networkConfigStoreTask, NetworkConfigStoreTask networkConfigStoreTask,
DBCleanTask dbCleanTask DBCleanTask dbCleanTask,
ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) { ) {
super(runnableFactory, bungeeTPSCountTimer); super(runnableFactory, bungeeTPSCountTimer);
this.plugin = plugin; this.plugin = plugin;
@ -71,6 +74,7 @@ public class BungeeTaskSystem extends TaskSystem {
this.playersPageRefreshTask = playersPageRefreshTask; this.playersPageRefreshTask = playersPageRefreshTask;
this.networkConfigStoreTask = networkConfigStoreTask; this.networkConfigStoreTask = networkConfigStoreTask;
this.dbCleanTask = dbCleanTask; this.dbCleanTask = dbCleanTask;
this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
} }
@Override @Override
@ -85,18 +89,23 @@ public class BungeeTaskSystem extends TaskSystem {
plugin.registerListener(pingCountTimer); plugin.registerListener(pingCountTimer);
long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS); long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS);
runnableFactory.create("PingCountTimer", pingCountTimer).runTaskTimer(startDelay, PingCountTimerBungee.PING_INTERVAL); registerTask(pingCountTimer).runTaskTimer(startDelay, PingCountTimerBungee.PING_INTERVAL);
registerTask(playersPageRefreshTask) registerTask(playersPageRefreshTask)
.runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES)); .runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES));
// +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(networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously( registerTask(dbCleanTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(20, TimeUnit.SECONDS), TimeAmount.toTicks(20, TimeUnit.SECONDS),
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS) TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
); );
long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod
);
} }
} }

View File

@ -0,0 +1,43 @@
/*
* This file is part of Player Analytics (Plan).
*
* Plan is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License v3 as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Plan is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
*/
package com.djrapitops.plan.extension;
import com.djrapitops.plugin.task.AbsRunnable;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Task for updating {@link DataExtension} server values periodically.
*
* @author Rsl1122
*/
@Singleton
public class ExtensionServerMethodCallerTask extends AbsRunnable {
private final ExtensionServiceImplementation extensionServiceImplementation;
@Inject
public ExtensionServerMethodCallerTask(ExtensionServiceImplementation extensionServiceImplementation) {
this.extensionServiceImplementation = extensionServiceImplementation;
}
@Override
public void run() {
extensionServiceImplementation.updateServerValues(CallEvents.SERVER_PERIODICAL);
}
}

View File

@ -37,6 +37,7 @@ public class TimeSettings {
public static final Setting<Long> ACTIVE_PLAY_THRESHOLD = new TimeSetting("Time.Thresholds.Activity_index.Playtime_threshold"); public static final Setting<Long> ACTIVE_PLAY_THRESHOLD = new TimeSetting("Time.Thresholds.Activity_index.Playtime_threshold");
public static final Setting<Long> KEEP_INACTIVE_PLAYERS = new TimeSetting("Time.Thresholds.Remove_inactive_player_data_after"); public static final Setting<Long> KEEP_INACTIVE_PLAYERS = new TimeSetting("Time.Thresholds.Remove_inactive_player_data_after");
public static final Setting<Long> ANALYSIS_REFRESH_PERIOD = new TimeSetting("Time.Periodic_tasks.Analysis_refresh_every"); public static final Setting<Long> ANALYSIS_REFRESH_PERIOD = new TimeSetting("Time.Periodic_tasks.Analysis_refresh_every");
public static final Setting<Long> EXTENSION_DATA_REFRESH_PERIOD = new TimeSetting("Time.Periodic_tasks.Extension_data_refresh_every");
public static final Setting<Long> CLEAN_CACHE_PERIOD = new TimeSetting("Time.Periodic_tasks.Clean_caches_every"); public static final Setting<Long> CLEAN_CACHE_PERIOD = new TimeSetting("Time.Periodic_tasks.Clean_caches_every");
public static final Setting<Long> CLEAN_DATABASE_PERIOD = new TimeSetting("Time.Periodic_tasks.Clean_Database_every"); public static final Setting<Long> CLEAN_DATABASE_PERIOD = new TimeSetting("Time.Periodic_tasks.Clean_Database_every");
public static final Setting<Long> CONFIG_UPDATE_INTERVAL = new TimeSetting("Time.Periodic_tasks.Check_DB_for_server_config_files_every"); public static final Setting<Long> CONFIG_UPDATE_INTERVAL = new TimeSetting("Time.Periodic_tasks.Check_DB_for_server_config_files_every");

View File

@ -86,6 +86,8 @@ Time:
Remove_inactive_player_data_after: 180 Remove_inactive_player_data_after: 180
Unit: DAYS Unit: DAYS
Periodic_tasks: Periodic_tasks:
Extension_data_refresh_every: 1
Unit: HOURS
Check_DB_for_server_config_files_every: 1 Check_DB_for_server_config_files_every: 1
Unit: MINUTES Unit: MINUTES
Clean_caches_every: 10 Clean_caches_every: 10

View File

@ -93,6 +93,8 @@ Time:
Periodic_tasks: Periodic_tasks:
Analysis_refresh_every: 60 Analysis_refresh_every: 60
Unit: MINUTES Unit: MINUTES
Extension_data_refresh_every: 1
Unit: HOURS
Check_DB_for_server_config_files_every: 1 Check_DB_for_server_config_files_every: 1
Unit: MINUTES Unit: MINUTES
Clean_caches_every: 10 Clean_caches_every: 10

View File

@ -19,6 +19,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.db.tasks.DBCleanTask;
import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
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;
@ -43,6 +44,7 @@ public class SpongeTaskSystem extends ServerTaskSystem {
private final PingCountTimerSponge pingCountTimer; private final PingCountTimerSponge pingCountTimer;
private final ConfigStoreTask configStoreTask; private final ConfigStoreTask configStoreTask;
private final DBCleanTask dbCleanTask; private final DBCleanTask dbCleanTask;
private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject @Inject
public SpongeTaskSystem( public SpongeTaskSystem(
@ -57,7 +59,8 @@ public class SpongeTaskSystem extends ServerTaskSystem {
LogsFolderCleanTask logsFolderCleanTask, LogsFolderCleanTask logsFolderCleanTask,
PlayersPageRefreshTask playersPageRefreshTask, PlayersPageRefreshTask playersPageRefreshTask,
ConfigStoreTask configStoreTask, ConfigStoreTask configStoreTask,
DBCleanTask dbCleanTask DBCleanTask dbCleanTask,
ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) { ) {
super( super(
runnableFactory, runnableFactory,
@ -72,6 +75,7 @@ public class SpongeTaskSystem extends ServerTaskSystem {
this.pingCountTimer = pingCountTimer; this.pingCountTimer = pingCountTimer;
this.configStoreTask = configStoreTask; this.configStoreTask = configStoreTask;
this.dbCleanTask = dbCleanTask; this.dbCleanTask = dbCleanTask;
this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
} }
@Override @Override
@ -80,18 +84,22 @@ public class SpongeTaskSystem extends ServerTaskSystem {
plugin.registerListener(pingCountTimer); plugin.registerListener(pingCountTimer);
long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS); long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS);
runnableFactory.create("PingCountTimer", pingCountTimer) registerTask(pingCountTimer).runTaskTimer(startDelay, PingCountTimerSponge.PING_INTERVAL);
.runTaskTimer(startDelay, PingCountTimerSponge.PING_INTERVAL);
// +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(configStoreTask).runTaskLaterAsynchronously(storeDelay);
registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously( registerTask(dbCleanTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(20, TimeUnit.SECONDS), TimeAmount.toTicks(20, TimeUnit.SECONDS),
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS) TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
); );
long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod
);
shutdownHook.register(); shutdownHook.register();
} }

View File

@ -18,6 +18,7 @@ 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.db.tasks.DBCleanTask;
import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
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;
@ -47,6 +48,7 @@ public class VelocityTaskSystem extends TaskSystem {
private final PlayersPageRefreshTask playersPageRefreshTask; private final PlayersPageRefreshTask playersPageRefreshTask;
private final NetworkConfigStoreTask networkConfigStoreTask; private final NetworkConfigStoreTask networkConfigStoreTask;
private final DBCleanTask dbCleanTask; private final DBCleanTask dbCleanTask;
private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject @Inject
public VelocityTaskSystem( public VelocityTaskSystem(
@ -59,7 +61,8 @@ public class VelocityTaskSystem extends TaskSystem {
LogsFolderCleanTask logsFolderCleanTask, LogsFolderCleanTask logsFolderCleanTask,
PlayersPageRefreshTask playersPageRefreshTask, PlayersPageRefreshTask playersPageRefreshTask,
NetworkConfigStoreTask networkConfigStoreTask, NetworkConfigStoreTask networkConfigStoreTask,
DBCleanTask dbCleanTask DBCleanTask dbCleanTask,
ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) { ) {
super(runnableFactory, velocityTPSCountTimer); super(runnableFactory, velocityTPSCountTimer);
this.plugin = plugin; this.plugin = plugin;
@ -71,6 +74,7 @@ public class VelocityTaskSystem extends TaskSystem {
this.playersPageRefreshTask = playersPageRefreshTask; this.playersPageRefreshTask = playersPageRefreshTask;
this.networkConfigStoreTask = networkConfigStoreTask; this.networkConfigStoreTask = networkConfigStoreTask;
this.dbCleanTask = dbCleanTask; this.dbCleanTask = dbCleanTask;
this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
} }
@Override @Override
@ -85,18 +89,22 @@ public class VelocityTaskSystem extends TaskSystem {
plugin.registerListener(pingCountTimer); plugin.registerListener(pingCountTimer);
long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS); long startDelay = TimeAmount.toTicks(config.get(TimeSettings.PING_SERVER_ENABLE_DELAY), TimeUnit.MILLISECONDS);
runnableFactory.create("PingCountTimer", pingCountTimer).runTaskTimer(startDelay, PingCountTimerVelocity.PING_INTERVAL); registerTask(pingCountTimer).runTaskTimer(startDelay, PingCountTimerVelocity.PING_INTERVAL);
registerTask(playersPageRefreshTask) registerTask(playersPageRefreshTask).runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES));
.runTaskTimerAsynchronously(TimeAmount.toTicks(5L, TimeUnit.MINUTES), TimeAmount.toTicks(5L, TimeUnit.MINUTES));
// +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(networkConfigStoreTask).runTaskLaterAsynchronously(storeDelay);
registerTask("DB Clean Task", dbCleanTask).runTaskTimerAsynchronously( registerTask(dbCleanTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(20, TimeUnit.SECONDS), TimeAmount.toTicks(20, TimeUnit.SECONDS),
TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS) TimeAmount.toTicks(config.get(TimeSettings.CLEAN_DATABASE_PERIOD), TimeUnit.MILLISECONDS)
); );
long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(
TimeAmount.toTicks(30, TimeUnit.SECONDS), extensionRefreshPeriod
);
} }
} }