From fc981fda2094d4831b69554821897c8a18baf637 Mon Sep 17 00:00:00 2001 From: t00thpick1 Date: Thu, 21 Aug 2014 19:41:47 -0400 Subject: [PATCH] Better connection validation for us. --- .../gmail/nossr50/database/SQLDatabaseManager.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java index 6b5fea656..619925837 100644 --- a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java +++ b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java @@ -29,7 +29,9 @@ import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.runnables.database.UUIDUpdateAsyncTask; import com.gmail.nossr50.util.Misc; +import snaq.db.CacheConnection; import snaq.db.ConnectionPool; +import snaq.db.ConnectionValidator; 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"; @@ -73,6 +75,7 @@ public final class SQLDatabaseManager implements DatabaseManager { 0 /* idle timeout of connections */, connectionString, connectionProperties); + miscPool.setValidator(new mcMMOValidator()); loadPool = new ConnectionPool("mcMMO-Load-Pool", 1 /*Minimum of one*/, Config.getInstance().getMySQLMaxPoolSize(PoolIdentifier.LOAD) /*max pool size */, @@ -80,6 +83,7 @@ public final class SQLDatabaseManager implements DatabaseManager { 0 /* idle timeout of connections */, connectionString, connectionProperties); + loadPool.setValidator(new mcMMOValidator()); savePool = new ConnectionPool("mcMMO-Save-Pool", 1 /*Minimum of one*/, Config.getInstance().getMySQLMaxPoolSize(PoolIdentifier.SAVE) /*max pool size */, @@ -87,6 +91,7 @@ public final class SQLDatabaseManager implements DatabaseManager { 0 /* idle timeout of connections */, connectionString, connectionProperties); + savePool.setValidator(new mcMMOValidator()); miscPool.init(); // Init first connection miscPool.registerShutdownHook(); // Auto release on jvm exit just in case loadPool.init(); @@ -1604,4 +1609,12 @@ public final class SQLDatabaseManager implements DatabaseManager { LOAD, SAVE; } + + private class mcMMOValidator implements ConnectionValidator { + @Override + public boolean isValid(Connection connection) throws SQLException { + return connection instanceof CacheConnection && connection.isValid(10); + } + + } }