Skip to content

Commit

Permalink
Merge pull request #20 from retromcorg/revert-18-async-saving
Browse files Browse the repository at this point in the history
Revert "Save data asynchronously" and make caches only save on server shutdown
  • Loading branch information
RitzKid76 authored Jan 27, 2025
2 parents 36c1a9c + ff43fd1 commit f71be84
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -165,16 +165,18 @@ public void onEnable() {
Bukkit.getPluginCommand("balancetop").setExecutor(new CommandBalanceTop(plugin));
Bukkit.getPluginCommand("fakequit").setExecutor(new CommandFakeQuit(plugin));
//Timer
//This async task is here to prevent lags from occuring when data is being saved,
//and to ensure TPS doesn't affect the timing of saving.
//This async task is so TPS doesn't affect the timing of saving. This probably actually isn't needed TBH.
Bukkit.getScheduler().scheduleAsyncRepeatingTask(plugin, () -> {
int autoSavePeriod = getFundamentalConfig().getConfigInteger("settings.auto-save-time");
if (lastAutoSaveTime + autoSavePeriod < getUnix()) {
lastAutoSaveTime = getUnix();
debugLogger(Level.INFO, "Automatically saving data.", 2);
saveData();
}
getPlayerMap().runTimerTasks();
//Change back to main thread for all logic.
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
int autoSavePeriod = FundamentalsConfig.getInstance(plugin).getConfigInteger("settings.auto-save-time");
if (lastAutoSaveTime + autoSavePeriod < getUnix()) {
lastAutoSaveTime = getUnix();
debugLogger(Level.INFO, "Automatically saving data.", 2);
saveData();
}
FundamentalsPlayerMap.getInstance(plugin).runTimerTasks();
});
}, 20, 20 * 10);

long endTimeUnix = System.currentTimeMillis() / 1000L;
Expand Down Expand Up @@ -295,10 +297,9 @@ public UUID getPlayerUUID(String playerName) {
}

public void saveData() {
getPlayerMap().saveData();
economyCache.saveData();
// uuidCache.saveData();
playerCache.saveData();
FundamentalsPlayerMap.getInstance().saveData(); // Save player data files that have been modified.

// Save Fundamentals Banks
FundamentalsBank[] banks = new FundamentalsBank[this.banks.size()];
int i = 0;
for (String bankName : this.banks.keySet()) {
Expand All @@ -322,6 +323,10 @@ public void onDisable() {

//Save Player Data
saveData();

// Save caches
playerCache.saveData();
economyCache.saveData();
}

public void logger(Level level, String message) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.regex.Pattern;

public class FundamentalsPlayerMap {
private static FundamentalsPlayerMap singleton;
private Fundamentals plugin;
private ConcurrentHashMap<UUID, FundamentalsPlayer> playerMap = new ConcurrentHashMap<>();
private HashMap<UUID, FundamentalsPlayer> playerMap = new HashMap<UUID, FundamentalsPlayer>();
private ArrayList<UUID> knownPlayers = new ArrayList<UUID>();
private boolean cacheAllPlayers = false;
private int playersLoaded = 0;
Expand Down Expand Up @@ -98,7 +98,7 @@ public void removePlayerFromMap(UUID uuid) {


public void runTimerTasks() {
long currentUnix = System.currentTimeMillis() / 1000L;
Long currentUnix = System.currentTimeMillis() / 1000L;
playerMap.keySet().removeIf(key -> {
FundamentalsPlayer player = playerMap.get(key);
if (!player.isPlayerOnline()) {
Expand Down

0 comments on commit f71be84

Please sign in to comment.