From 0b72507e2d2a2bdffe45bb19ad5ea136a800819f Mon Sep 17 00:00:00 2001 From: Luck Date: Fri, 22 Dec 2017 22:35:13 +0000 Subject: [PATCH] Correctly close flatfile database connections on disable, catch all exceptions when performing initial data load --- .../java/me/lucko/luckperms/bukkit/LPBukkitPlugin.java | 7 ++++++- .../java/me/lucko/luckperms/bungee/LPBungeePlugin.java | 7 ++++++- .../dao/sql/connection/file/FlatfileConnectionFactory.java | 6 +++--- .../dao/sql/connection/file/NonClosableConnection.java | 4 ++++ .../java/me/lucko/luckperms/sponge/LPSpongePlugin.java | 6 +++++- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitPlugin.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitPlugin.java index 6a45d3b6..f21d0afd 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitPlugin.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitPlugin.java @@ -271,7 +271,12 @@ public class LPBukkitPlugin extends JavaPlugin implements LuckPermsPlugin { // run an update instantly. getLog().info("Performing initial data load..."); - new UpdateTask(this, true).run(); + try { + new UpdateTask(this, true).run(); + } catch (Exception e) { + e.printStackTrace(); + } + // register tasks scheduler.asyncRepeating(new ExpireTemporaryTask(this), 60L); diff --git a/bungee/src/main/java/me/lucko/luckperms/bungee/LPBungeePlugin.java b/bungee/src/main/java/me/lucko/luckperms/bungee/LPBungeePlugin.java index 7ec5bf6e..6930698b 100644 --- a/bungee/src/main/java/me/lucko/luckperms/bungee/LPBungeePlugin.java +++ b/bungee/src/main/java/me/lucko/luckperms/bungee/LPBungeePlugin.java @@ -210,7 +210,12 @@ public class LPBungeePlugin extends Plugin implements LuckPermsPlugin { // run an update instantly. getLog().info("Performing initial data load..."); - new UpdateTask(this, true).run(); + try { + new UpdateTask(this, true).run(); + } catch (Exception e) { + e.printStackTrace(); + } + // register tasks scheduler.asyncRepeating(new ExpireTemporaryTask(this), 60L); diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/dao/sql/connection/file/FlatfileConnectionFactory.java b/common/src/main/java/me/lucko/luckperms/common/storage/dao/sql/connection/file/FlatfileConnectionFactory.java index 083b390b..f4574c3c 100644 --- a/common/src/main/java/me/lucko/luckperms/common/storage/dao/sql/connection/file/FlatfileConnectionFactory.java +++ b/common/src/main/java/me/lucko/luckperms/common/storage/dao/sql/connection/file/FlatfileConnectionFactory.java @@ -39,7 +39,7 @@ abstract class FlatfileConnectionFactory extends AbstractConnectionFactory { protected final File file; private final ReentrantLock lock = new ReentrantLock(); - private Connection connection; + private NonClosableConnection connection; FlatfileConnectionFactory(String name, File file) { super(name); @@ -56,8 +56,8 @@ abstract class FlatfileConnectionFactory extends AbstractConnectionFactory { @Override public void shutdown() throws Exception { - if (connection != null && !connection.isClosed()) { - connection.close(); + if (connection != null) { + connection.shutdown(); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/dao/sql/connection/file/NonClosableConnection.java b/common/src/main/java/me/lucko/luckperms/common/storage/dao/sql/connection/file/NonClosableConnection.java index cbcfbce1..b3715107 100644 --- a/common/src/main/java/me/lucko/luckperms/common/storage/dao/sql/connection/file/NonClosableConnection.java +++ b/common/src/main/java/me/lucko/luckperms/common/storage/dao/sql/connection/file/NonClosableConnection.java @@ -42,6 +42,10 @@ public final class NonClosableConnection implements Connection { } + public void shutdown() throws SQLException { + delegate.close(); + } + private interface Exclude { void close() throws SQLException; } diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java index 1d4b3cdb..d7f03f9a 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java @@ -279,7 +279,11 @@ public class LPSpongePlugin implements LuckPermsPlugin { // run an update instantly. getLog().info("Performing initial data load..."); - new UpdateTask(this, true).run(); + try { + new UpdateTask(this, true).run(); + } catch (Exception e) { + e.printStackTrace(); + } // register tasks scheduler.asyncRepeating(new ExpireTemporaryTask(this), 60L);