Shutdown ExecutorService after it's finished in OfflinePlayerHandler and made async method for initial database setup

This commit is contained in:
Artemis-the-gr8 2023-05-08 13:19:59 +02:00
parent 2ec80e8a84
commit 279020153c
5 changed files with 18 additions and 22 deletions

View File

@ -213,7 +213,7 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.19-R0.1-SNAPSHOT</version>
<version>1.19.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>

View File

@ -65,7 +65,7 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.19-R0.1-SNAPSHOT</version>
<version>1.19.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>

View File

@ -1,10 +1,11 @@
package com.artemis.the.gr8.playerstats.core.database;
import com.artemis.the.gr8.databasemanager.DatabaseManager;
import com.artemis.the.gr8.databasemanager.datamodels.MyStatType;
import com.artemis.the.gr8.databasemanager.datamodels.MyStatistic;
import com.artemis.the.gr8.databasemanager.datamodels.MySubStatistic;
import com.artemis.the.gr8.databasemanager.models.MyStatType;
import com.artemis.the.gr8.databasemanager.models.MyStatistic;
import com.artemis.the.gr8.databasemanager.models.MySubStatistic;
import com.artemis.the.gr8.playerstats.core.utils.EnumHandler;
import com.artemis.the.gr8.playerstats.core.utils.MyLogger;
import org.bukkit.Statistic;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
@ -12,6 +13,7 @@ import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public class Database {
@ -34,12 +36,11 @@ public class Database {
}
private void setUp() {
databaseManager.updateStatistics(getStats(), getSubStats());
}
public boolean isRunning() {
//TODO do something with databaseManager to see if it's active
return true;
//TODO detect if empty
long startTime = System.currentTimeMillis();
CompletableFuture
.runAsync(() -> databaseManager.updateStatistics(getStats(), getSubStats()))
.thenRun(() -> MyLogger.logLowLevelTask("Database setup finished", startTime));
}
private @NotNull List<MyStatistic> getStats() {

View File

@ -12,17 +12,12 @@ public class DatabaseProcessor extends RequestProcessor {
private final OutputManager outputManager;
private final Database database;
private boolean isActive;
public DatabaseProcessor(OutputManager outputManager, Database database) {
this.outputManager = outputManager;
this.database = database;
}
public boolean isActive() {
return database.isRunning();
}
@Override
public @NotNull StatResult<Integer> processPlayerRequest(StatRequest<?> playerStatRequest) {
return null;

View File

@ -9,9 +9,7 @@ import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.*;
import java.util.function.Predicate;
/**
@ -153,14 +151,16 @@ public final class OfflinePlayerHandler extends FileHandler {
}
private void loadOfflinePlayers() {
Executors.newSingleThreadExecutor().execute(() -> {
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(() -> {
loadExcludedPlayerNames();
loadIncludedOfflinePlayers();
});
executor.shutdown();
}
private void loadIncludedOfflinePlayers() {
long time = System.currentTimeMillis();
long startTime = System.currentTimeMillis();
OfflinePlayer[] offlinePlayers;
if (config.whitelistOnly()) {
@ -177,7 +177,7 @@ public final class OfflinePlayerHandler extends FileHandler {
ForkJoinPool.commonPool().invoke(ThreadManager.getPlayerLoadAction(offlinePlayers, includedPlayerUUIDs));
MyLogger.actionFinished();
MyLogger.logLowLevelTask(("Loaded " + includedPlayerUUIDs.size() + " offline players"), time);
MyLogger.logLowLevelTask(("Loaded " + includedPlayerUUIDs.size() + " offline players"), startTime);
}
private void loadExcludedPlayerNames() {