From f7285ff4f19a5b9ca33e5f08ce85a5f79ab20b06 Mon Sep 17 00:00:00 2001 From: mohammed jasem alaajel Date: Wed, 6 Jul 2022 23:04:09 +0400 Subject: [PATCH] removed get JedisPool, refactored jedis summoners, new SinglePoolJedisSummoner, start version 0.8.0 --- RedisBungee-API/pom.xml | 2 +- .../minecraft/redisbungee/RedisBungeeAPI.java | 5 --- .../internal/RedisBungeePlugin.java | 11 +++++-- .../{ => summoners}/JedisSummoner.java | 10 +++--- .../summoners/SinglePoolJedisSummoner.java | 29 ++++++++++++++++ RedisBungee-Bungee/pom.xml | 2 +- .../redisbungee/RedisBungeeBungeePlugin.java | 33 +++++++++---------- pom.xml | 2 +- 8 files changed, 61 insertions(+), 33 deletions(-) rename RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/{ => summoners}/JedisSummoner.java (59%) create mode 100644 RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/summoners/SinglePoolJedisSummoner.java diff --git a/RedisBungee-API/pom.xml b/RedisBungee-API/pom.xml index 92c1e72..d645436 100644 --- a/RedisBungee-API/pom.xml +++ b/RedisBungee-API/pom.xml @@ -5,7 +5,7 @@ RedisBungee com.imaginarycode.minecraft - 0.7.3-SNAPSHOT + 0.8.0-SNAPSHOT 4.0.0 diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java index 42f84d0..0900ddc 100644 --- a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java @@ -312,11 +312,6 @@ public class RedisBungeeAPI { * @deprecated this secluded to be removed when support for redis sentinel or redis cluster is finished, use {@link RedisBungeeAPI#requestJedis()} * @since 0.6.5 */ - @Deprecated - public JedisPool getJedisPool() { - return this.plugin.getJedisPool(); - } - /** * This gives you instance of Jedis diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/RedisBungeePlugin.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/RedisBungeePlugin.java index c400802..61b42a4 100644 --- a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/RedisBungeePlugin.java +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/RedisBungeePlugin.java @@ -3,6 +3,7 @@ package com.imaginarycode.minecraft.redisbungee.internal; import com.google.common.collect.Multimap; import com.imaginarycode.minecraft.redisbungee.RedisBungeeAPI; import com.imaginarycode.minecraft.redisbungee.internal.util.uuid.UUIDTranslator; +import redis.clients.jedis.Jedis; import java.net.InetAddress; import java.util.List; @@ -19,16 +20,20 @@ import java.util.concurrent.TimeUnit; * @since 0.7.0 * */ -public interface RedisBungeePlugin

extends JedisSummoner, EventsPlatform{ +public interface RedisBungeePlugin

extends EventsPlatform{ - default void enable() { + default void start() { } - default void disable() { + default void stop() { } + Jedis requestJedis(); + + boolean isJedisAvailable(); + RedisBungeeConfiguration getConfiguration(); int getCount(); diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/JedisSummoner.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/summoners/JedisSummoner.java similarity index 59% rename from RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/JedisSummoner.java rename to RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/summoners/JedisSummoner.java index 4269767..e09e878 100644 --- a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/JedisSummoner.java +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/summoners/JedisSummoner.java @@ -1,8 +1,11 @@ -package com.imaginarycode.minecraft.redisbungee.internal; +package com.imaginarycode.minecraft.redisbungee.internal.summoners; import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisCluster; import redis.clients.jedis.JedisPool; +import java.io.Closeable; + /** * This class intended for future release to support redis sentinel or redis clusters @@ -11,13 +14,10 @@ import redis.clients.jedis.JedisPool; * @since 0.7.0 * */ -public interface JedisSummoner { +public interface JedisSummoner extends Closeable { Jedis requestJedis(); boolean isJedisAvailable(); - @Deprecated - JedisPool getJedisPool(); - } diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/summoners/SinglePoolJedisSummoner.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/summoners/SinglePoolJedisSummoner.java new file mode 100644 index 0000000..70198f8 --- /dev/null +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/internal/summoners/SinglePoolJedisSummoner.java @@ -0,0 +1,29 @@ +package com.imaginarycode.minecraft.redisbungee.internal.summoners; + +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; + +import java.io.IOException; + +public class SinglePoolJedisSummoner implements JedisSummoner { + final JedisPool jedisPool; + + public SinglePoolJedisSummoner(JedisPool jedisPool) { + this.jedisPool = jedisPool; + } + + @Override + public Jedis requestJedis() { + return this.jedisPool.getResource(); + } + + @Override + public boolean isJedisAvailable() { + return !this.jedisPool.isClosed(); + } + + @Override + public void close() throws IOException { + jedisPool.close(); + } +} diff --git a/RedisBungee-Bungee/pom.xml b/RedisBungee-Bungee/pom.xml index 240399e..d927349 100644 --- a/RedisBungee-Bungee/pom.xml +++ b/RedisBungee-Bungee/pom.xml @@ -5,7 +5,7 @@ RedisBungee com.imaginarycode.minecraft - 0.7.3-SNAPSHOT + 0.8.0-SNAPSHOT 4.0.0 diff --git a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeBungeePlugin.java b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeBungeePlugin.java index bc59fe0..c1a580b 100644 --- a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeBungeePlugin.java +++ b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeBungeePlugin.java @@ -13,6 +13,8 @@ import com.imaginarycode.minecraft.redisbungee.events.PlayerChangedServerNetwork import com.imaginarycode.minecraft.redisbungee.events.PlayerJoinedNetworkEvent; import com.imaginarycode.minecraft.redisbungee.events.PubSubMessageEvent; import com.imaginarycode.minecraft.redisbungee.internal.*; +import com.imaginarycode.minecraft.redisbungee.internal.summoners.JedisSummoner; +import com.imaginarycode.minecraft.redisbungee.internal.summoners.SinglePoolJedisSummoner; import com.imaginarycode.minecraft.redisbungee.internal.util.IOUtil; import com.imaginarycode.minecraft.redisbungee.internal.util.LuaManager; import com.imaginarycode.minecraft.redisbungee.internal.util.uuid.NameFetcher; @@ -48,7 +50,7 @@ public class RedisBungeeBungeePlugin extends Plugin implements RedisBungeePlugin private static final Gson gson = new Gson(); private RedisBungeeAPI api; private PubSubListener psl = null; - private JedisPool jedisPool; + private JedisSummoner jedisSummoner; private UUIDTranslator uuidTranslator; private RedisBungeeConfiguration configuration; private BungeeDataManager dataManager; @@ -128,17 +130,12 @@ public class RedisBungeeBungeePlugin extends Plugin implements RedisBungeePlugin @Override public Jedis requestJedis() { - return this.jedisPool.getResource(); + return this.jedisSummoner.requestJedis(); } @Override public boolean isJedisAvailable() { - return !jedisPool.isClosed(); - } - - @Override - public JedisPool getJedisPool() { - return this.jedisPool; + return this.jedisSummoner.isJedisAvailable(); } @Override @@ -333,7 +330,7 @@ public class RedisBungeeBungeePlugin extends Plugin implements RedisBungeePlugin @Override - public void enable() { + public void start() { ThreadFactory factory = ((ThreadPoolExecutor) getExecutorService()).getThreadFactory(); ScheduledExecutorService service = Executors.newScheduledThreadPool(24, factory); try { @@ -490,7 +487,7 @@ public class RedisBungeeBungeePlugin extends Plugin implements RedisBungeePlugin } @Override - public void disable() { + public void stop() { if (isJedisAvailable()) { // Poison the PubSub listener psl.poison(); @@ -506,8 +503,11 @@ public class RedisBungeeBungeePlugin extends Plugin implements RedisBungeePlugin RedisUtil.cleanUpPlayer(member, tmpRsc); } } - - this.jedisPool.destroy(); + try { + this.jedisSummoner.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } } } @@ -563,7 +563,7 @@ public class RedisBungeeBungeePlugin extends Plugin implements RedisBungeePlugin try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(yamlConfiguration.getInt("max-redis-connections", 8)); - this.jedisPool = new JedisPool(config, redisServer, redisPort, 0, redisPassword, useSSL); + this.jedisSummoner = new SinglePoolJedisSummoner(new JedisPool(config, redisServer, redisPort, 0, redisPassword, useSSL)); } catch (JedisConnectionException e) { throw new RuntimeException("Unable to create Redis pool", e); @@ -599,8 +599,7 @@ public class RedisBungeeBungeePlugin extends Plugin implements RedisBungeePlugin getLogger().log(Level.INFO, "Successfully connected to Redis."); } catch (JedisConnectionException e) { - this.jedisPool.destroy(); - this.jedisPool = null; + this.jedisSummoner.close(); throw e; } } else { @@ -610,12 +609,12 @@ public class RedisBungeeBungeePlugin extends Plugin implements RedisBungeePlugin @Override public void onEnable() { - enable(); + start(); } @Override public void onDisable() { - disable(); + stop(); } @Override diff --git a/pom.xml b/pom.xml index 7dec71f..c09e505 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.imaginarycode.minecraft RedisBungee pom - 0.7.3-SNAPSHOT + 0.8.0-SNAPSHOT