Merge branch 'sentinel_config_err_handling' of https://github.com/wizwjw/jedis into wizwjw-sentinel_config_err_handling

Conflicts:
	src/main/java/redis/clients/jedis/JedisSentinelPool.java
	src/test/java/redis/clients/jedis/tests/JedisSentinelPoolTest.java
This commit is contained in:
Jungtaek Lim
2014-09-11 13:10:01 +09:00
2 changed files with 37 additions and 5 deletions

View File

@@ -130,8 +130,15 @@ public class JedisSentinelPool extends Pool<Jedis> {
jedis = new Jedis(hap.getHost(), hap.getPort());
if (master == null) {
master = toHostAndPort(jedis
.sentinelGetMasterAddrByName(masterName));
List<String> masterAddr = jedis
.sentinelGetMasterAddrByName(masterName);
if (masterAddr == null || masterAddr.size() != 2) {
log.warning("Can not get master addr, master name: "
+ masterName + ". Sentinel: " + hap + ".");
continue;
}
master = toHostAndPort(masterAddr);
log.fine("Found Redis master at " + master);
break outer;
}
@@ -140,7 +147,7 @@ public class JedisSentinelPool extends Pool<Jedis> {
+ ". Trying next one.");
} finally {
if (jedis != null) {
jedis.close();
jedis.close();
}
}
}
@@ -331,4 +338,4 @@ public class JedisSentinelPool extends Pool<Jedis> {
}
}
}
}
}

View File

@@ -2,6 +2,7 @@ package redis.clients.jedis.tests;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.junit.Before;
@@ -41,6 +42,30 @@ public class JedisSentinelPoolTest extends JedisTestBase {
sentinelJedis2 = new Jedis(sentinel2.getHost(), sentinel2.getPort());
}
@Test
public void errorMasterNameNotThrowException() throws InterruptedException {
final String wrongMasterName = "wrongMasterName";
new Thread(new Runnable() {
@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(3);
sentinelJedis1.sentinelMonitor(wrongMasterName,
"127.0.0.1", master.getPort(), 2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
JedisSentinelPool pool = new JedisSentinelPool(wrongMasterName,
sentinels);
pool.destroy();
sentinelJedis1.sentinelRemove(wrongMasterName);
}
@Test
public void checkCloseableConnections() throws Exception {
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
@@ -197,4 +222,4 @@ public class JedisSentinelPoolTest extends JedisTestBase {
}
}
}
}