mirror of
				https://github.com/proxiodev/RedisBungee.git
				synced 2025-11-04 01:28:02 +00:00 
			
		
		
		
	Deal with connection failures more gracefully.
This commit is contained in:
		
							parent
							
								
									9381701bf6
								
							
						
					
					
						commit
						27b8b09bf3
					
				@ -90,6 +90,11 @@ public final class RedisBungee extends Plugin implements Listener {
 | 
				
			|||||||
                            rsc.set("server:" + i + ":playerCount", "0");
 | 
					                            rsc.set("server:" + i + ":playerCount", "0");
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            } catch (JedisConnectionException e) {
 | 
				
			||||||
 | 
					                // Redis server has disappeared!
 | 
				
			||||||
 | 
					                getLogger().log(Level.SEVERE, "Unable to get connection from pool - did your Redis server go away?", e);
 | 
				
			||||||
 | 
					                pool.returnBrokenResource(rsc);
 | 
				
			||||||
 | 
					                throw new RuntimeException("Unable to get total player count", e);
 | 
				
			||||||
            } finally {
 | 
					            } finally {
 | 
				
			||||||
                pool.returnResource(rsc);
 | 
					                pool.returnResource(rsc);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -115,6 +120,11 @@ public final class RedisBungee extends Plugin implements Listener {
 | 
				
			|||||||
                    if (users != null && !users.isEmpty())
 | 
					                    if (users != null && !users.isEmpty())
 | 
				
			||||||
                        setBuilder = setBuilder.addAll(users);
 | 
					                        setBuilder = setBuilder.addAll(users);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            } catch (JedisConnectionException e) {
 | 
				
			||||||
 | 
					                // Redis server has disappeared!
 | 
				
			||||||
 | 
					                getLogger().log(Level.SEVERE, "Unable to get connection from pool - did your Redis server go away?", e);
 | 
				
			||||||
 | 
					                pool.returnBrokenResource(rsc);
 | 
				
			||||||
 | 
					                throw new RuntimeException("Unable to get all players online", e);
 | 
				
			||||||
            } finally {
 | 
					            } finally {
 | 
				
			||||||
                pool.returnResource(rsc);
 | 
					                pool.returnResource(rsc);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -135,6 +145,11 @@ public final class RedisBungee extends Plugin implements Listener {
 | 
				
			|||||||
            try {
 | 
					            try {
 | 
				
			||||||
                if (tmpRsc.hexists("player:" + name, "server"))
 | 
					                if (tmpRsc.hexists("player:" + name, "server"))
 | 
				
			||||||
                    server = getProxy().getServerInfo(tmpRsc.hget("player:" + name, "server"));
 | 
					                    server = getProxy().getServerInfo(tmpRsc.hget("player:" + name, "server"));
 | 
				
			||||||
 | 
					            } catch (JedisConnectionException e) {
 | 
				
			||||||
 | 
					                // Redis server has disappeared!
 | 
				
			||||||
 | 
					                getLogger().log(Level.SEVERE, "Unable to get connection from pool - did your Redis server go away?", e);
 | 
				
			||||||
 | 
					                pool.returnBrokenResource(tmpRsc);
 | 
				
			||||||
 | 
					                throw new RuntimeException("Unable to get server for "+ name, e);
 | 
				
			||||||
            } finally {
 | 
					            } finally {
 | 
				
			||||||
                pool.returnResource(tmpRsc);
 | 
					                pool.returnResource(tmpRsc);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -171,6 +186,11 @@ public final class RedisBungee extends Plugin implements Listener {
 | 
				
			|||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        tmpRsc.hset("player:" + name, "online", value);
 | 
					                        tmpRsc.hset("player:" + name, "online", value);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					            } catch (JedisConnectionException e) {
 | 
				
			||||||
 | 
					                // Redis server has disappeared!
 | 
				
			||||||
 | 
					                getLogger().log(Level.SEVERE, "Unable to get connection from pool - did your Redis server go away?", e);
 | 
				
			||||||
 | 
					                pool.returnBrokenResource(tmpRsc);
 | 
				
			||||||
 | 
					                throw new RuntimeException("Unable to get last time online for " + name, e);
 | 
				
			||||||
            } finally {
 | 
					            } finally {
 | 
				
			||||||
                pool.returnResource(tmpRsc);
 | 
					                pool.returnResource(tmpRsc);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -187,6 +207,11 @@ public final class RedisBungee extends Plugin implements Listener {
 | 
				
			|||||||
            try {
 | 
					            try {
 | 
				
			||||||
                if (tmpRsc.hexists("player:" + name, "ip"))
 | 
					                if (tmpRsc.hexists("player:" + name, "ip"))
 | 
				
			||||||
                    ia = InetAddress.getByName(tmpRsc.hget("player:" + name, "ip"));
 | 
					                    ia = InetAddress.getByName(tmpRsc.hget("player:" + name, "ip"));
 | 
				
			||||||
 | 
					            } catch (JedisConnectionException e) {
 | 
				
			||||||
 | 
					                // Redis server has disappeared!
 | 
				
			||||||
 | 
					                getLogger().log(Level.SEVERE, "Unable to get connection from pool - did your Redis server go away?", e);
 | 
				
			||||||
 | 
					                pool.returnBrokenResource(tmpRsc);
 | 
				
			||||||
 | 
					                throw new RuntimeException("Unable to fetch IP address for "+ name, e);
 | 
				
			||||||
            } catch (UnknownHostException ignored) {
 | 
					            } catch (UnknownHostException ignored) {
 | 
				
			||||||
                // Best to just return null
 | 
					                // Best to just return null
 | 
				
			||||||
            } finally {
 | 
					            } finally {
 | 
				
			||||||
@ -201,6 +226,11 @@ public final class RedisBungee extends Plugin implements Listener {
 | 
				
			|||||||
        Jedis jedis = pool.getResource();
 | 
					        Jedis jedis = pool.getResource();
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            jedis.publish("redisbungee-" + proxyId, command);
 | 
					            jedis.publish("redisbungee-" + proxyId, command);
 | 
				
			||||||
 | 
					        } catch (JedisConnectionException e) {
 | 
				
			||||||
 | 
					            // Redis server has disappeared!
 | 
				
			||||||
 | 
					            getLogger().log(Level.SEVERE, "Unable to get connection from pool - did your Redis server go away?", e);
 | 
				
			||||||
 | 
					            pool.returnBrokenResource(jedis);
 | 
				
			||||||
 | 
					            throw new RuntimeException("Unable to publish command", e);
 | 
				
			||||||
        } finally {
 | 
					        } finally {
 | 
				
			||||||
            pool.returnResource(jedis);
 | 
					            pool.returnResource(jedis);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -245,6 +275,10 @@ public final class RedisBungee extends Plugin implements Listener {
 | 
				
			|||||||
                    Jedis rsc = pool.getResource();
 | 
					                    Jedis rsc = pool.getResource();
 | 
				
			||||||
                    try {
 | 
					                    try {
 | 
				
			||||||
                        rsc.set("server:" + configuration.getString("server-id") + ":playerCount", String.valueOf(getProxy().getOnlineCount()));
 | 
					                        rsc.set("server:" + configuration.getString("server-id") + ":playerCount", String.valueOf(getProxy().getOnlineCount()));
 | 
				
			||||||
 | 
					                    } catch (JedisConnectionException e) {
 | 
				
			||||||
 | 
					                        // Redis server has disappeared!
 | 
				
			||||||
 | 
					                        getLogger().log(Level.SEVERE, "Unable to update proxy counts - did your Redis server go away?", e);
 | 
				
			||||||
 | 
					                        pool.returnBrokenResource(rsc);
 | 
				
			||||||
                    } finally {
 | 
					                    } finally {
 | 
				
			||||||
                        pool.returnResource(rsc);
 | 
					                        pool.returnResource(rsc);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user