diff --git a/RedisBungee-API/pom.xml b/RedisBungee-API/pom.xml index b681135..6652e00 100644 --- a/RedisBungee-API/pom.xml +++ b/RedisBungee-API/pom.xml @@ -63,7 +63,7 @@ redis.clients jedis - 4.3.0 + 4.3.1 compile diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/config/ConfigLoader.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/config/ConfigLoader.java index 7ad576a..7963d6b 100644 --- a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/config/ConfigLoader.java +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/config/ConfigLoader.java @@ -12,6 +12,7 @@ import ninja.leaping.configurate.objectmapping.ObjectMappingException; import ninja.leaping.configurate.yaml.YAMLConfigurationLoader; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.*; +import redis.clients.jedis.providers.PooledConnectionProvider; import java.io.File; import java.io.IOException; @@ -113,13 +114,13 @@ public interface ConfigLoader { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(node.getNode("compatibility-max-connections").getInt(3)); config.setBlockWhenExhausted(true); - jedisPool = new JedisPool(config, redisServer, redisPort, 0, redisPassword, useSSL); + jedisPool = new JedisPool(config, redisServer, redisPort, 5000, redisPassword, useSSL); plugin.logInfo("Compatibility JedisPool was created"); } GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig<>(); poolConfig.setMaxTotal(maxConnections); poolConfig.setBlockWhenExhausted(true); - summoner = new JedisPooledSummoner(new JedisPooled(poolConfig, redisServer, redisPort, 0, redisPassword, useSSL), jedisPool); + summoner = new JedisPooledSummoner(new PooledConnectionProvider(new ConnectionFactory(new HostAndPort(redisServer, redisPort), DefaultJedisClientConfig.builder().timeoutMillis(5000).password(redisPassword).build()), poolConfig), jedisPool); redisBungeeMode = RedisBungeeMode.SINGLE; } plugin.logInfo("Successfully connected to Redis."); diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/JedisPooledSummoner.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/JedisPooledSummoner.java index 89fde3f..b2e7afe 100644 --- a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/JedisPooledSummoner.java +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/JedisPooledSummoner.java @@ -3,16 +3,17 @@ package com.imaginarycode.minecraft.redisbungee.api.summoners; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPooled; +import redis.clients.jedis.providers.PooledConnectionProvider; import java.io.IOException; public class JedisPooledSummoner implements Summoner { - private final JedisPooled jedisPooled; + private final PooledConnectionProvider connectionProvider; private final JedisPool jedisPool; - public JedisPooledSummoner(JedisPooled jedisPooled, JedisPool jedisPool) { - this.jedisPooled = jedisPooled; + public JedisPooledSummoner(PooledConnectionProvider connectionProvider, JedisPool jedisPool) { + this.connectionProvider = connectionProvider; this.jedisPool = jedisPool; // test connections if (jedisPool != null) { @@ -20,7 +21,9 @@ public class JedisPooledSummoner implements Summoner { // Test the connection to make sure configuration is right jedis.ping(); } + } + final JedisPooled jedisPooled = this.obtainResource(); jedisPooled.set("random_data", "0"); jedisPooled.del("random_data"); @@ -28,7 +31,8 @@ public class JedisPooledSummoner implements Summoner { @Override public JedisPooled obtainResource() { - return this.jedisPooled; + // create UnClosable JedisPool *disposable* + return new NotClosableJedisPooled(this.connectionProvider); } public JedisPool getCompatibilityJedisPool() { @@ -40,7 +44,7 @@ public class JedisPooledSummoner implements Summoner { if (this.jedisPool != null) { this.jedisPool.close(); } - this.jedisPooled.close(); + this.connectionProvider.close(); } } diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/NotClosableJedisPooled.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/NotClosableJedisPooled.java new file mode 100644 index 0000000..d6e18c5 --- /dev/null +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/NotClosableJedisPooled.java @@ -0,0 +1,16 @@ +package com.imaginarycode.minecraft.redisbungee.api.summoners; + +import redis.clients.jedis.JedisPooled; +import redis.clients.jedis.providers.PooledConnectionProvider; + + +public class NotClosableJedisPooled extends JedisPooled { + NotClosableJedisPooled(PooledConnectionProvider provider) { + super(provider); + } + + @Override + public void close() { + + } +} diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/Summoner.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/Summoner.java index 169144c..0e9107e 100644 --- a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/Summoner.java +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/summoners/Summoner.java @@ -14,5 +14,4 @@ public interface Summoner

extends Closeable { P obtainResource(); - }