From 8a4410cde8df95fa4e8a4693f622601516bdfa4b Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Mon, 26 Aug 2019 05:29:29 +0100 Subject: [PATCH] Add a configuration to print jdbc exceptions By default, mcmmo tries to pretty print errors, which is fine for many cases, however; deeper nested errors can lack information, e.g. networking related issues, while the pretty print is less intimitating and provides useful information to users, surpressing the trace can prevent debugging these deeper issues, this config option serves as a compromise between scaring users and having a means to find these deeper issues. --- src/main/java/com/gmail/nossr50/config/Config.java | 1 + .../com/gmail/nossr50/database/SQLDatabaseManager.java | 8 ++++++++ src/main/resources/config.yml | 1 + 3 files changed, 10 insertions(+) diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index d16ab6852..fcbd75545 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -341,6 +341,7 @@ public class Config extends AutoUpdateConfigLoader { public int getMySQLMaxConnections(PoolIdentifier identifier) { return config.getInt("MySQL.Database.MaxConnections." + StringUtils.getCapitalized(identifier.toString()), 30); } public int getMySQLMaxPoolSize(PoolIdentifier identifier) { return config.getInt("MySQL.Database.MaxPoolSize." + StringUtils.getCapitalized(identifier.toString()), 10); } public boolean getMySQLSSL() { return config.getBoolean("MySQL.Server.SSL", true); } + public boolean getMySQLDebug() { return config.getBoolean("MySQL.Debug", false); } private String getStringIncludingInts(String key) { String str = config.getString(key); diff --git a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java index f2255aef1..f2bac01d6 100644 --- a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java +++ b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java @@ -31,6 +31,8 @@ public final class SQLDatabaseManager implements DatabaseManager { private DataSource loadPool; private DataSource savePool; + private boolean debug = false; + private ReentrantLock massUpdateLock = new ReentrantLock(); protected SQLDatabaseManager() { @@ -56,6 +58,8 @@ public final class SQLDatabaseManager implements DatabaseManager { //throw e; // aborts onEnable() Riking if you want to do this, fully implement it. } + debug = Config.getInstance().getMySQLDebug(); + PoolProperties poolProperties = new PoolProperties(); poolProperties.setDriverClassName("com.mysql.jdbc.Driver"); @@ -1148,6 +1152,10 @@ public final class SQLDatabaseManager implements DatabaseManager { } private void printErrors(SQLException ex) { + if (debug) { + ex.printStackTrace(); + } + StackTraceElement element = ex.getStackTrace()[0]; mcMMO.p.getLogger().severe("Location: " + element.getClassName() + " " + element.getMethodName() + " " + element.getLineNumber()); mcMMO.p.getLogger().severe("SQLException: " + ex.getMessage()); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5f5aa4ce3..4d3d2d47e 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -146,6 +146,7 @@ Backups: ### MySQL: Enabled: false + Debug: false Database: User_Name: UserName User_Password: UserPassword