From f7d57efe0b54cb58b2ac3f60c9a2e9ae277489fd Mon Sep 17 00:00:00 2001 From: Brettflan Date: Thu, 18 Apr 2013 03:02:40 -0500 Subject: [PATCH] Made SaveTask routine's repeat rate configurable through new setting "saveToFileEveryXMinutes" (default 30.0, as it was previously hardcoded). Routine can be disabled by setting it to 0 or lower. Also added in flag to make sure the routine doesn't try to run more than one iteration simultaneously if a previous iteration is still running. --- src/com/massivecraft/factions/Conf.java | 2 ++ src/com/massivecraft/factions/zcore/MPlugin.java | 6 ++++-- src/com/massivecraft/factions/zcore/persist/SaveTask.java | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/com/massivecraft/factions/Conf.java b/src/com/massivecraft/factions/Conf.java index d4b84a3e..b6f83269 100644 --- a/src/com/massivecraft/factions/Conf.java +++ b/src/com/massivecraft/factions/Conf.java @@ -71,6 +71,8 @@ public class Conf public static boolean broadcastDescriptionChanges = false; + public static double saveToFileEveryXMinutes = 30.0; + public static double autoLeaveAfterDaysOfInactivity = 10.0; public static double autoLeaveRoutineRunsEveryXMinutes = 5.0; public static boolean removePlayerDataWhenBanned = true; diff --git a/src/com/massivecraft/factions/zcore/MPlugin.java b/src/com/massivecraft/factions/zcore/MPlugin.java index 0531e4ff..fa685c6a 100644 --- a/src/com/massivecraft/factions/zcore/MPlugin.java +++ b/src/com/massivecraft/factions/zcore/MPlugin.java @@ -20,6 +20,8 @@ import com.massivecraft.factions.zcore.util.PermUtil; import com.massivecraft.factions.zcore.util.Persist; import com.massivecraft.factions.zcore.util.TextUtil; +import com.massivecraft.factions.Conf; + public abstract class MPlugin extends JavaPlugin { @@ -88,9 +90,9 @@ public abstract class MPlugin extends JavaPlugin // Register recurring tasks - long saveTicks = 20 * 60 * 30; // Approximately every 30 min - if (saveTask == null) + if (saveTask == null && Conf.saveToFileEveryXMinutes > 0.0) { + long saveTicks = (long)(20 * 60 * Conf.saveToFileEveryXMinutes); // Approximately every 30 min by default saveTask = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new SaveTask(this), saveTicks, saveTicks); } diff --git a/src/com/massivecraft/factions/zcore/persist/SaveTask.java b/src/com/massivecraft/factions/zcore/persist/SaveTask.java index 3b03126d..c3833470 100644 --- a/src/com/massivecraft/factions/zcore/persist/SaveTask.java +++ b/src/com/massivecraft/factions/zcore/persist/SaveTask.java @@ -4,6 +4,8 @@ import com.massivecraft.factions.zcore.MPlugin; public class SaveTask implements Runnable { + static private boolean running = false; + MPlugin p; public SaveTask(MPlugin p) { @@ -12,9 +14,11 @@ public class SaveTask implements Runnable public void run() { - if ( ! p.getAutoSave()) return; + if ( ! p.getAutoSave() || running) return; + running = true; p.preAutoSave(); EM.saveAllToDisc(); p.postAutoSave(); + running = false; } }