From 140f2980187e191047fc13ab13a30d106109dc15 Mon Sep 17 00:00:00 2001 From: Telesphoreo Date: Fri, 4 Feb 2022 13:30:05 -0600 Subject: [PATCH] Fix Redis hanging --- src/main/java/dev/plex/Plex.java | 9 +--- .../java/dev/plex/command/impl/PlexCMD.java | 1 + .../java/dev/plex/player/PunishedPlayer.java | 1 + .../plex/punishment/PunishmentManager.java | 2 + .../dev/plex/storage/RedisConnection.java | 43 ++++++++++++++++--- 5 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/main/java/dev/plex/Plex.java b/src/main/java/dev/plex/Plex.java index e44c774..89d3a8b 100644 --- a/src/main/java/dev/plex/Plex.java +++ b/src/main/java/dev/plex/Plex.java @@ -70,13 +70,6 @@ public class Plex extends JavaPlugin sqlConnection = new SQLConnection(); mongoConnection = new MongoConnection(); redisConnection = new RedisConnection(); - /*try { - redisConnection.openPool(); - PlexLog.log("Successfully opened redis pool. Closing."); - } catch (Exception e) { - e.printStackTrace(); - } - redisConnection.getJedis().close();*/ } @Override @@ -103,7 +96,7 @@ public class Plex extends JavaPlugin if (redisConnection.isEnabled()) { - redisConnection.openPool(); + redisConnection.getJedis(); } else { diff --git a/src/main/java/dev/plex/command/impl/PlexCMD.java b/src/main/java/dev/plex/command/impl/PlexCMD.java index a93f424..4bb6577 100644 --- a/src/main/java/dev/plex/command/impl/PlexCMD.java +++ b/src/main/java/dev/plex/command/impl/PlexCMD.java @@ -50,6 +50,7 @@ public class PlexCMD extends PlexCommand plugin.getRedisConnection().getJedis().set("test", "123"); send(sender, "Set test to 123. Now outputting key test..."); send(sender, plugin.getRedisConnection().getJedis().get("test")); + plugin.getRedisConnection().getJedis().close(); } else { diff --git a/src/main/java/dev/plex/player/PunishedPlayer.java b/src/main/java/dev/plex/player/PunishedPlayer.java index a8fde8e..d6ba26b 100644 --- a/src/main/java/dev/plex/player/PunishedPlayer.java +++ b/src/main/java/dev/plex/player/PunishedPlayer.java @@ -98,6 +98,7 @@ public class PunishedPlayer extends PlexBase Punishment punishment = Punishment.fromJson(obj.toString()); punishments.add(punishment); }); + plugin.getRedisConnection().getJedis().close(); return punishments; } diff --git a/src/main/java/dev/plex/punishment/PunishmentManager.java b/src/main/java/dev/plex/punishment/PunishmentManager.java index b23cf64..36f1194 100644 --- a/src/main/java/dev/plex/punishment/PunishmentManager.java +++ b/src/main/java/dev/plex/punishment/PunishmentManager.java @@ -41,6 +41,7 @@ public class PunishmentManager extends PlexBase { plugin.getRedisConnection().getJedis().set(player.getUuid(), object.toString()); PlexLog.debug("Added " + player.getUuid() + "'s punishment to the Redis database."); + plugin.getRedisConnection().getJedis().close(); } FileWriter writer = new FileWriter(file); @@ -62,6 +63,7 @@ public class PunishmentManager extends PlexBase { plugin.getRedisConnection().getJedis().set(player.getUuid(), object.toString()); PlexLog.debug("Added " + player.getUuid() + "'s punishment to the Redis database."); + plugin.getRedisConnection().getJedis().close(); } FileWriter writer = new FileWriter(file); diff --git a/src/main/java/dev/plex/storage/RedisConnection.java b/src/main/java/dev/plex/storage/RedisConnection.java index 3187135..70f9a57 100644 --- a/src/main/java/dev/plex/storage/RedisConnection.java +++ b/src/main/java/dev/plex/storage/RedisConnection.java @@ -1,22 +1,22 @@ package dev.plex.storage; -import dev.plex.Plex; import dev.plex.PlexBase; import dev.plex.util.PlexLog; import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.JedisPoolConfig; public class RedisConnection extends PlexBase { - private JedisPool pool; private Jedis jedis; - public JedisPool openPool() + /*public JedisPool openPool() { + JedisPoolConfig jedisConfig = new JedisPoolConfig(); + //jedisConfig.setMaxIdle(10); + //jedisConfig.setMaxTotal(100); ClassLoader previous = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(RedisConnection.class.getClassLoader()); - this.pool = new JedisPool(new JedisPoolConfig(), plugin.config.getString("data.side.hostname"), Plex.get().getConfig().getInt("data.side.port")); + this.pool = new JedisPool(jedisConfig, plugin.config.getString("data.side.hostname"), + plugin.config.getInt("data.side.port")); Thread.currentThread().setContextClassLoader(previous); PlexLog.log("Connected to Redis!"); return pool; @@ -24,12 +24,41 @@ public class RedisConnection extends PlexBase public Jedis getJedis() { - this.jedis = pool.getResource(); + try + { + this.jedis = pool.getResource(); + } + catch (Exception ex) + { + PlexLog.error("An error occurred with Redis."); + ex.printStackTrace(); + } if (plugin.config.getBoolean("data.side.auth")) { jedis.auth(plugin.config.getString("data.side.password")); } return jedis; + }*/ + + public Jedis getJedis() + { + try + { + jedis = new Jedis(plugin.config.getString("data.side.hostname"), + plugin.config.getInt("data.side.port")); + if (plugin.config.getBoolean("data.side.auth")) + { + jedis.auth(plugin.config.getString("data.side.password")); + } + PlexLog.log("Connected to Redis!"); + return jedis; + } + catch (Exception ex) + { + PlexLog.error("An error occurred with Redis."); + ex.printStackTrace(); + } + return jedis; } public final boolean isEnabled()