Task for JSONCache cleanup

This commit is contained in:
Rsl1122 2019-08-31 12:22:00 +03:00
parent 5b3f08f870
commit 3f8a3d1521
7 changed files with 42 additions and 10 deletions

View File

@ -17,6 +17,7 @@
package com.djrapitops.plan; package com.djrapitops.plan;
import com.djrapitops.plan.delivery.upkeep.PeriodicServerExportTask; import com.djrapitops.plan.delivery.upkeep.PeriodicServerExportTask;
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask; import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
import com.djrapitops.plan.gathering.ShutdownHook; import com.djrapitops.plan.gathering.ShutdownHook;
import com.djrapitops.plan.gathering.timed.BukkitPingCounter; import com.djrapitops.plan.gathering.timed.BukkitPingCounter;
@ -50,6 +51,7 @@ public class BukkitTaskSystem extends TaskSystem {
private final Plan plugin; private final Plan plugin;
private final PlanConfig config; private final PlanConfig config;
private final ShutdownHook shutdownHook; private final ShutdownHook shutdownHook;
private final JSONCache.CleanTask jsonCacheCleanTask;
private final PeriodicServerExportTask periodicServerExportTask; private final PeriodicServerExportTask periodicServerExportTask;
private final LogsFolderCleanTask logsFolderCleanTask; private final LogsFolderCleanTask logsFolderCleanTask;
private final BukkitPingCounter pingCounter; private final BukkitPingCounter pingCounter;
@ -73,6 +75,7 @@ public class BukkitTaskSystem extends TaskSystem {
LogsFolderCleanTask logsFolderCleanTask, LogsFolderCleanTask logsFolderCleanTask,
ConfigStoreTask configStoreTask, ConfigStoreTask configStoreTask,
DBCleanTask dbCleanTask, DBCleanTask dbCleanTask,
JSONCache.CleanTask jsonCacheCleanTask,
PeriodicServerExportTask periodicServerExportTask PeriodicServerExportTask periodicServerExportTask
) { ) {
@ -80,6 +83,7 @@ public class BukkitTaskSystem extends TaskSystem {
this.plugin = plugin; this.plugin = plugin;
this.config = config; this.config = config;
this.shutdownHook = shutdownHook; this.shutdownHook = shutdownHook;
this.jsonCacheCleanTask = jsonCacheCleanTask;
this.tpsCounter = Check.isPaperAvailable() ? paperTPSCountTimer : bukkitTPSCountTimer; this.tpsCounter = Check.isPaperAvailable() ? paperTPSCountTimer : bukkitTPSCountTimer;
this.pingCounter = pingCounter; this.pingCounter = pingCounter;
@ -111,6 +115,8 @@ public class BukkitTaskSystem extends TaskSystem {
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 minute = TimeAmount.toTicks(1, TimeUnit.MINUTES);
registerTask(jsonCacheCleanTask).runTaskTimerAsynchronously(minute, minute);
if (config.get(ExportSettings.SERVER_PAGE)) { if (config.get(ExportSettings.SERVER_PAGE)) {
registerTask(periodicServerExportTask).runTaskTimerAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS), TimeAmount.toTicks(20L, TimeUnit.MINUTES)); registerTask(periodicServerExportTask).runTaskTimerAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS), TimeAmount.toTicks(20L, TimeUnit.MINUTES));

View File

@ -16,6 +16,7 @@
*/ */
package com.djrapitops.plan; package com.djrapitops.plan;
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask; import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
import com.djrapitops.plan.gathering.timed.BungeePingCounter; import com.djrapitops.plan.gathering.timed.BungeePingCounter;
import com.djrapitops.plan.gathering.timed.BungeeTPSCounter; import com.djrapitops.plan.gathering.timed.BungeeTPSCounter;
@ -47,6 +48,7 @@ public class BungeeTaskSystem extends TaskSystem {
private final LogsFolderCleanTask logsFolderCleanTask; private final LogsFolderCleanTask logsFolderCleanTask;
private final NetworkConfigStoreTask networkConfigStoreTask; private final NetworkConfigStoreTask networkConfigStoreTask;
private final DBCleanTask dbCleanTask; private final DBCleanTask dbCleanTask;
private final JSONCache.CleanTask jsonCacheCleanTask;
private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask; private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject @Inject
@ -59,6 +61,7 @@ public class BungeeTaskSystem extends TaskSystem {
LogsFolderCleanTask logsFolderCleanTask, LogsFolderCleanTask logsFolderCleanTask,
NetworkConfigStoreTask networkConfigStoreTask, NetworkConfigStoreTask networkConfigStoreTask,
DBCleanTask dbCleanTask, DBCleanTask dbCleanTask,
JSONCache.CleanTask jsonCacheCleanTask,
ExtensionServerMethodCallerTask extensionServerMethodCallerTask ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) { ) {
super(runnableFactory); super(runnableFactory);
@ -70,6 +73,7 @@ public class BungeeTaskSystem extends TaskSystem {
this.logsFolderCleanTask = logsFolderCleanTask; this.logsFolderCleanTask = logsFolderCleanTask;
this.networkConfigStoreTask = networkConfigStoreTask; this.networkConfigStoreTask = networkConfigStoreTask;
this.dbCleanTask = dbCleanTask; this.dbCleanTask = dbCleanTask;
this.jsonCacheCleanTask = jsonCacheCleanTask;
this.extensionServerMethodCallerTask = extensionServerMethodCallerTask; this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
} }
@ -97,6 +101,8 @@ public class BungeeTaskSystem extends TaskSystem {
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 minute = TimeAmount.toTicks(1, TimeUnit.MINUTES);
registerTask(jsonCacheCleanTask).runTaskTimerAsynchronously(minute, minute);
long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS); long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously( registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(

View File

@ -28,13 +28,6 @@ public class DebugChannels {
/* Static variable class */ /* Static variable class */
} }
public static final String ANALYSIS = "Analysis";
@Deprecated
public static final String INFO_REQUESTS = "InfoRequests";
@Deprecated
public static final String CONNECTIONS = "Connections";
@Deprecated
public static final String WEB_REQUESTS = "Web Requests";
public static final String IMPORTING = "Importing"; public static final String IMPORTING = "Importing";
public static final String SQL = "SQL"; public static final String SQL = "SQL";
public static final String DATA_EXTENSIONS = "DataExtensions"; public static final String DATA_EXTENSIONS = "DataExtensions";

View File

@ -16,7 +16,6 @@
*/ */
package com.djrapitops.plan.delivery.webserver; package com.djrapitops.plan.delivery.webserver;
import com.djrapitops.plan.DebugChannels;
import com.djrapitops.plan.delivery.webserver.auth.Authentication; import com.djrapitops.plan.delivery.webserver.auth.Authentication;
import com.djrapitops.plan.delivery.webserver.auth.BasicAuthentication; import com.djrapitops.plan.delivery.webserver.auth.BasicAuthentication;
import com.djrapitops.plan.delivery.webserver.response.PromptAuthorizationResponse; import com.djrapitops.plan.delivery.webserver.response.PromptAuthorizationResponse;
@ -102,7 +101,6 @@ public class RequestHandler implements HttpHandler {
// Increase attempt count and block if too high // Increase attempt count and block if too high
Optional<Response> forbid = handlePasswordBruteForceAttempts(request, response); Optional<Response> forbid = handlePasswordBruteForceAttempts(request, response);
if (forbid.isPresent()) { if (forbid.isPresent()) {
logger.getDebugLogger().logOn(DebugChannels.WEB_REQUESTS, "Blocked: " + request.getTargetString() + " -> " + request.getRemoteAddress());
response = forbid.get(); response = forbid.get();
} }
@ -111,7 +109,6 @@ public class RequestHandler implements HttpHandler {
responseHeaders.set("WWW-Authenticate", response.getHeader("WWW-Authenticate").orElse("Basic realm=\"Plan WebUser (/plan register)\"")); responseHeaders.set("WWW-Authenticate", response.getHeader("WWW-Authenticate").orElse("Basic realm=\"Plan WebUser (/plan register)\""));
} }
logger.getDebugLogger().logOn(DebugChannels.WEB_REQUESTS, "Sending: " + request.getTargetString() + " -> " + request.getRemoteAddress());
response.setResponseHeaders(responseHeaders); response.setResponseHeaders(responseHeaders);
response.send(exchange, locale, theme); response.send(exchange, locale, theme);
} catch (Exception e) { } catch (Exception e) {

View File

@ -18,10 +18,14 @@ package com.djrapitops.plan.delivery.webserver.cache;
import com.djrapitops.plan.delivery.webserver.response.Response; import com.djrapitops.plan.delivery.webserver.response.Response;
import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse; import com.djrapitops.plan.delivery.webserver.response.data.JSONResponse;
import com.djrapitops.plan.storage.file.ResourceCache;
import com.djrapitops.plugin.task.AbsRunnable;
import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.Caffeine;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Supplier; import java.util.function.Supplier;
@ -113,4 +117,18 @@ public class JSONCache {
Collections.sort(identifiers); Collections.sort(identifiers);
return identifiers; return identifiers;
} }
@Singleton
public static class CleanTask extends AbsRunnable {
@Inject
public CleanTask() {
}
@Override
public void run() {
cleanUp();
ResourceCache.cleanUp();
}
}
} }

View File

@ -17,6 +17,7 @@
package com.djrapitops.plan; package com.djrapitops.plan;
import com.djrapitops.plan.delivery.upkeep.PeriodicServerExportTask; import com.djrapitops.plan.delivery.upkeep.PeriodicServerExportTask;
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask; import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
import com.djrapitops.plan.gathering.ShutdownHook; import com.djrapitops.plan.gathering.ShutdownHook;
import com.djrapitops.plan.gathering.timed.SpongePingCounter; import com.djrapitops.plan.gathering.timed.SpongePingCounter;
@ -44,6 +45,7 @@ public class SpongeTaskSystem extends TaskSystem {
private final PlanConfig config; private final PlanConfig config;
private final ShutdownHook shutdownHook; private final ShutdownHook shutdownHook;
private final SpongeTPSCounter tpsCounter; private final SpongeTPSCounter tpsCounter;
private final JSONCache.CleanTask jsonCacheCleanTask;
private final PeriodicServerExportTask periodicServerExportTask; private final PeriodicServerExportTask periodicServerExportTask;
private final SpongePingCounter pingCounter; private final SpongePingCounter pingCounter;
private final LogsFolderCleanTask logsFolderCleanTask; private final LogsFolderCleanTask logsFolderCleanTask;
@ -65,6 +67,7 @@ public class SpongeTaskSystem extends TaskSystem {
LogsFolderCleanTask logsFolderCleanTask, LogsFolderCleanTask logsFolderCleanTask,
ConfigStoreTask configStoreTask, ConfigStoreTask configStoreTask,
DBCleanTask dbCleanTask, DBCleanTask dbCleanTask,
JSONCache.CleanTask jsonCacheCleanTask,
PeriodicServerExportTask periodicServerExportTask PeriodicServerExportTask periodicServerExportTask
) { ) {
@ -80,6 +83,7 @@ public class SpongeTaskSystem extends TaskSystem {
this.logsFolderCleanTask = logsFolderCleanTask; this.logsFolderCleanTask = logsFolderCleanTask;
this.configStoreTask = configStoreTask; this.configStoreTask = configStoreTask;
this.dbCleanTask = dbCleanTask; this.dbCleanTask = dbCleanTask;
this.jsonCacheCleanTask = jsonCacheCleanTask;
this.periodicServerExportTask = periodicServerExportTask; this.periodicServerExportTask = periodicServerExportTask;
} }
@ -103,6 +107,8 @@ public class SpongeTaskSystem extends TaskSystem {
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 minute = TimeAmount.toTicks(1, TimeUnit.MINUTES);
registerTask(jsonCacheCleanTask).runTaskTimerAsynchronously(minute, minute);
if (config.get(ExportSettings.SERVER_PAGE)) { if (config.get(ExportSettings.SERVER_PAGE)) {
registerTask(periodicServerExportTask).runTaskTimerAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS), TimeAmount.toTicks(20L, TimeUnit.MINUTES)); registerTask(periodicServerExportTask).runTaskTimerAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS), TimeAmount.toTicks(20L, TimeUnit.MINUTES));

View File

@ -16,6 +16,7 @@
*/ */
package com.djrapitops.plan; package com.djrapitops.plan;
import com.djrapitops.plan.delivery.webserver.cache.JSONCache;
import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask; import com.djrapitops.plan.extension.ExtensionServerMethodCallerTask;
import com.djrapitops.plan.gathering.timed.VelocityPingCounter; import com.djrapitops.plan.gathering.timed.VelocityPingCounter;
import com.djrapitops.plan.gathering.timed.VelocityTPSCounter; import com.djrapitops.plan.gathering.timed.VelocityTPSCounter;
@ -47,6 +48,7 @@ public class VelocityTaskSystem extends TaskSystem {
private final LogsFolderCleanTask logsFolderCleanTask; private final LogsFolderCleanTask logsFolderCleanTask;
private final NetworkConfigStoreTask networkConfigStoreTask; private final NetworkConfigStoreTask networkConfigStoreTask;
private final DBCleanTask dbCleanTask; private final DBCleanTask dbCleanTask;
private final JSONCache.CleanTask jsonCacheCleanTask;
private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask; private final ExtensionServerMethodCallerTask extensionServerMethodCallerTask;
@Inject @Inject
@ -59,6 +61,7 @@ public class VelocityTaskSystem extends TaskSystem {
LogsFolderCleanTask logsFolderCleanTask, LogsFolderCleanTask logsFolderCleanTask,
NetworkConfigStoreTask networkConfigStoreTask, NetworkConfigStoreTask networkConfigStoreTask,
DBCleanTask dbCleanTask, DBCleanTask dbCleanTask,
JSONCache.CleanTask jsonCacheCleanTask,
ExtensionServerMethodCallerTask extensionServerMethodCallerTask ExtensionServerMethodCallerTask extensionServerMethodCallerTask
) { ) {
super(runnableFactory); super(runnableFactory);
@ -69,6 +72,7 @@ public class VelocityTaskSystem extends TaskSystem {
this.logsFolderCleanTask = logsFolderCleanTask; this.logsFolderCleanTask = logsFolderCleanTask;
this.networkConfigStoreTask = networkConfigStoreTask; this.networkConfigStoreTask = networkConfigStoreTask;
this.dbCleanTask = dbCleanTask; this.dbCleanTask = dbCleanTask;
this.jsonCacheCleanTask = jsonCacheCleanTask;
this.extensionServerMethodCallerTask = extensionServerMethodCallerTask; this.extensionServerMethodCallerTask = extensionServerMethodCallerTask;
} }
@ -96,6 +100,8 @@ public class VelocityTaskSystem extends TaskSystem {
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 minute = TimeAmount.toTicks(1, TimeUnit.MINUTES);
registerTask(jsonCacheCleanTask).runTaskTimerAsynchronously(minute, minute);
long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS); long extensionRefreshPeriod = TimeAmount.toTicks(config.get(TimeSettings.EXTENSION_DATA_REFRESH_PERIOD), TimeUnit.MILLISECONDS);
registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously( registerTask(extensionServerMethodCallerTask).runTaskTimerAsynchronously(