Просмотр исходного кода

Better connection validation for us.

t00thpick1 10 лет назад
Родитель
Сommit
fc981fda20
1 измененных файлов с 13 добавлено и 0 удалено
  1. 13 0
      src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java

+ 13 - 0
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.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);
+        }
+        
+    }
 }
 }