Better connection validation for us.

This commit is contained in:
t00thpick1 2014-08-21 19:41:47 -04:00
parent be9ff51fd9
commit fc981fda20

View File

@ -29,7 +29,9 @@ import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.runnables.database.UUIDUpdateAsyncTask; import com.gmail.nossr50.runnables.database.UUIDUpdateAsyncTask;
import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Misc;
import snaq.db.CacheConnection;
import snaq.db.ConnectionPool; import snaq.db.ConnectionPool;
import snaq.db.ConnectionValidator;
public final class SQLDatabaseManager implements DatabaseManager { public final class SQLDatabaseManager implements DatabaseManager {
private static final String ALL_QUERY_VERSION = "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing+alchemy"; private static final String ALL_QUERY_VERSION = "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing+alchemy";
@ -73,6 +75,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
0 /* idle timeout of connections */, 0 /* idle timeout of connections */,
connectionString, connectionString,
connectionProperties); connectionProperties);
miscPool.setValidator(new mcMMOValidator());
loadPool = new ConnectionPool("mcMMO-Load-Pool", loadPool = new ConnectionPool("mcMMO-Load-Pool",
1 /*Minimum of one*/, 1 /*Minimum of one*/,
Config.getInstance().getMySQLMaxPoolSize(PoolIdentifier.LOAD) /*max pool size */, Config.getInstance().getMySQLMaxPoolSize(PoolIdentifier.LOAD) /*max pool size */,
@ -80,6 +83,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
0 /* idle timeout of connections */, 0 /* idle timeout of connections */,
connectionString, connectionString,
connectionProperties); connectionProperties);
loadPool.setValidator(new mcMMOValidator());
savePool = new ConnectionPool("mcMMO-Save-Pool", savePool = new ConnectionPool("mcMMO-Save-Pool",
1 /*Minimum of one*/, 1 /*Minimum of one*/,
Config.getInstance().getMySQLMaxPoolSize(PoolIdentifier.SAVE) /*max pool size */, Config.getInstance().getMySQLMaxPoolSize(PoolIdentifier.SAVE) /*max pool size */,
@ -87,6 +91,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
0 /* idle timeout of connections */, 0 /* idle timeout of connections */,
connectionString, connectionString,
connectionProperties); connectionProperties);
savePool.setValidator(new mcMMOValidator());
miscPool.init(); // Init first connection miscPool.init(); // Init first connection
miscPool.registerShutdownHook(); // Auto release on jvm exit just in case miscPool.registerShutdownHook(); // Auto release on jvm exit just in case
loadPool.init(); loadPool.init();
@ -1604,4 +1609,12 @@ public final class SQLDatabaseManager implements DatabaseManager {
LOAD, LOAD,
SAVE; SAVE;
} }
private class mcMMOValidator implements ConnectionValidator {
@Override
public boolean isValid(Connection connection) throws SQLException {
return connection instanceof CacheConnection && connection.isValid(10);
}
}
} }