Fix Redis hanging

This commit is contained in:
Telesphoreo 2022-02-04 13:30:05 -06:00
parent c93bd4fd2c
commit 140f298018
5 changed files with 41 additions and 15 deletions

View File

@ -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
{

View File

@ -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
{

View File

@ -98,6 +98,7 @@ public class PunishedPlayer extends PlexBase
Punishment punishment = Punishment.fromJson(obj.toString());
punishments.add(punishment);
});
plugin.getRedisConnection().getJedis().close();
return punishments;
}

View File

@ -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);

View File

@ -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()