Set the SaveTask schedule to async so it won't slow down the server
anymore if the MySQL connection is slow.
This commit is contained in:
3
.build.number
Normal file
3
.build.number
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#Build Number for ANT. Do not edit!
|
||||||
|
#Sun Oct 09 14:44:39 CEST 2011
|
||||||
|
build.number=4
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<property name="dist" value="dist" />
|
<property name="dist" value="dist" />
|
||||||
<property name="src" value="src" />
|
<property name="src" value="src" />
|
||||||
<property name="name" value="Stats" />
|
<property name="name" value="Stats" />
|
||||||
<property name="version" value="0.99.1" />
|
<property name="version" value="0.99.2" />
|
||||||
<property name="resources" value="resources" />
|
<property name="resources" value="resources" />
|
||||||
<property name="author" value="nidefawl" />
|
<property name="author" value="nidefawl" />
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import com.nidefawl.Stats.util.Updater;
|
|||||||
public class Stats extends JavaPlugin {
|
public class Stats extends JavaPlugin {
|
||||||
|
|
||||||
public final static Logger log = Logger.getLogger("Minecraft");
|
public final static Logger log = Logger.getLogger("Minecraft");
|
||||||
public static final String version = "0.99.1";
|
public static final String version = "0.99.2";
|
||||||
public static final String logprefix = "[Stats-" + version + "]";
|
public static final String logprefix = "[Stats-" + version + "]";
|
||||||
public final static String defaultCategory = "stats";
|
public final static String defaultCategory = "stats";
|
||||||
public boolean enabled = false;
|
public boolean enabled = false;
|
||||||
@@ -479,7 +479,8 @@ public class Stats extends JavaPlugin {
|
|||||||
for (Player p : getServer().getOnlinePlayers()) {
|
for (Player p : getServer().getOnlinePlayers()) {
|
||||||
load(p);
|
load(p);
|
||||||
}
|
}
|
||||||
getServer().getScheduler().scheduleSyncRepeatingTask(this, new SaveTask(this), StatsSettings.delay * 20, StatsSettings.delay * 20);
|
getServer().getScheduler().scheduleAsyncRepeatingTask(this, new SaveTask(this), StatsSettings.delay * 20, StatsSettings.delay * 20);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -491,12 +492,41 @@ public class Stats extends JavaPlugin {
|
|||||||
statsInstance = plugin;
|
statsInstance = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
if (!statsInstance.enabled)
|
if (!statsInstance.enabled)
|
||||||
return;
|
return;
|
||||||
statsInstance.saveAll();
|
statsInstance.saveAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void saveAll() {
|
||||||
|
if (StatsSettings.debugOutput)
|
||||||
|
log.info("Stats debug: saving " + this.statsInstance.stats.size() + " players stats");
|
||||||
|
try {
|
||||||
|
Connection conn = StatsSQLConnectionManager.getConnection(StatsSettings.useMySQL);
|
||||||
|
if (conn == null)
|
||||||
|
return;
|
||||||
|
conn.setAutoCommit(false);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
for (PlayerStat stat : this.statsInstance.stats.values()) {
|
||||||
|
if (stat == null || this.statsInstance.getServer().getPlayer(stat.getName()) == null) {
|
||||||
|
stat.unload = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
this.statsInstance.updateTimedStats(stat);
|
||||||
|
stat.save(false);
|
||||||
|
}
|
||||||
|
StatsSQLConnectionManager.closeConnection(StatsSettings.useMySQL);
|
||||||
|
for (PlayerStat stat : this.statsInstance.stats.values()) {
|
||||||
|
if (!stat.unload)
|
||||||
|
continue;
|
||||||
|
LogError("onPlayerQuit did not happen, unloading " + stat.getName() + " now");
|
||||||
|
this.statsInstance.logout(stat.getName());
|
||||||
|
this.statsInstance.unload(stat.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
|
|||||||
Reference in New Issue
Block a user