From 7af17d6f947ba057a3446521e994bb003741b794 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Sun, 8 Oct 2017 11:22:47 +0300 Subject: [PATCH] Fixed a bug with ViaVersion PluginData that caused Database to lock on /plan reload (Related to #347) --- .../plan/database/processing/ExecStatement.java | 1 + .../plan/database/processing/QueryStatement.java | 1 + .../com/djrapitops/plan/database/tables/Table.java | 1 + .../plan/viaversion/PlayerVersionListener.java | 13 ++++++------- .../plan/viaversion/ViaVersionHook.java | 8 ++++++-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Plan/src/main/java/com/djrapitops/plan/database/processing/ExecStatement.java b/Plan/src/main/java/com/djrapitops/plan/database/processing/ExecStatement.java index 61bd298b5..f4008f3c8 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/processing/ExecStatement.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/processing/ExecStatement.java @@ -18,6 +18,7 @@ public abstract class ExecStatement { public ExecStatement(String sql) { this.sql = sql; +// Log.debug("Execute Statement: " + sql); } public boolean execute(PreparedStatement statement) throws SQLException { diff --git a/Plan/src/main/java/com/djrapitops/plan/database/processing/QueryStatement.java b/Plan/src/main/java/com/djrapitops/plan/database/processing/QueryStatement.java index 7c9eba739..1778d8fa0 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/processing/QueryStatement.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/processing/QueryStatement.java @@ -24,6 +24,7 @@ public abstract class QueryStatement { public QueryStatement(String sql, int fetchSize) { this.sql = sql; +// Log.debug("Query Statement: " + sql); this.fetchSize = fetchSize; } diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java index b2761cfb1..b7edc137d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/Table.java @@ -89,6 +89,7 @@ public abstract class Table { connection = getConnection(); statement = connection.createStatement(); boolean b = statement.execute(statementString); +// Log.debug("Execute: " + statementString); commit(connection); return b; } finally { diff --git a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/viaversion/PlayerVersionListener.java b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/viaversion/PlayerVersionListener.java index b6617d04b..a05a4c71c 100644 --- a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/viaversion/PlayerVersionListener.java +++ b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/viaversion/PlayerVersionListener.java @@ -7,6 +7,7 @@ package com.djrapitops.pluginbridge.plan.viaversion; import main.java.com.djrapitops.plan.Log; import main.java.com.djrapitops.plan.Plan; +import main.java.com.djrapitops.plan.database.databases.SQLDB; import main.java.com.djrapitops.plan.systems.processing.Processor; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -25,25 +26,23 @@ import java.util.UUID; */ public class PlayerVersionListener implements Listener { - private final Plan plan; - private final ViaAPI viaAPI; - private final ProtocolTable table; + private ViaAPI viaAPI; - public PlayerVersionListener(Plan plan, ViaAPI viaAPI, ProtocolTable dbTable) { - this.plan = plan; + public PlayerVersionListener(ViaAPI viaAPI) { this.viaAPI = viaAPI; - this.table = dbTable; } @EventHandler(priority = EventPriority.MONITOR) public void onJoin(PlayerJoinEvent event) { UUID uuid = event.getPlayer().getUniqueId(); int playerVersion = viaAPI.getPlayerVersion(uuid); + Plan plan = Plan.getInstance(); plan.addToProcessQueue(new Processor(uuid) { @Override public void process() { try { - table.saveProtocolVersion(uuid, playerVersion); + + new ProtocolTable((SQLDB) plan.getDB()).saveProtocolVersion(uuid, playerVersion); } catch (SQLException e) { Log.toLog(this.getClass().getName() + ":PlanViaVersionJoinListener", e); } diff --git a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/viaversion/ViaVersionHook.java b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/viaversion/ViaVersionHook.java index a27bc1c34..cb836cad2 100644 --- a/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/viaversion/ViaVersionHook.java +++ b/PlanPluginBridge/src/main/java/com/djrapitops/pluginbridge/plan/viaversion/ViaVersionHook.java @@ -18,6 +18,8 @@ import us.myles.ViaVersion.api.ViaAPI; */ public class ViaVersionHook extends Hook { + private static PlayerVersionListener listener; + /** * Hooks the plugin and registers it's PluginData objects. *

@@ -43,8 +45,10 @@ public class ViaVersionHook extends Hook { Log.toLog(this.getClass().getName(), e); return; } - PlayerVersionListener l = new PlayerVersionListener(plan, api, table); - plan.registerListener(l); + if (listener == null) { + listener = new PlayerVersionListener(api); + plan.registerListener(listener); + } addPluginDataSource(new ViaVersionVersionTable(table)); addPluginDataSource(new ViaVersionVersion(table)); }