From 796f80d9c00abeb3ab22c1beb849ef21eb13e021 Mon Sep 17 00:00:00 2001 From: Eoin Coffey Date: Tue, 24 Sep 2013 15:32:18 -0600 Subject: [PATCH] Allow JedisPool to set a custom client name --- .../redis/clients/jedis/JedisFactory.java | 15 +++++++-- .../java/redis/clients/jedis/JedisPool.java | 31 +++++++++++-------- .../clients/jedis/tests/JedisPoolTest.java | 20 ++++++++++-- 3 files changed, 47 insertions(+), 19 deletions(-) diff --git a/src/main/java/redis/clients/jedis/JedisFactory.java b/src/main/java/redis/clients/jedis/JedisFactory.java index 12bef98..66592fe 100644 --- a/src/main/java/redis/clients/jedis/JedisFactory.java +++ b/src/main/java/redis/clients/jedis/JedisFactory.java @@ -11,15 +11,21 @@ class JedisFactory extends BasePoolableObjectFactory { private final int timeout; private final String password; private final int database; + private final String clientName; public JedisFactory(final String host, final int port, - final int timeout, final String password, final int database) { + final int timeout, final String password, final int database) { + this(host, port, timeout, password, database, null); + } + public JedisFactory(final String host, final int port, + final int timeout, final String password, final int database, final String clientName) { super(); this.host = host; this.port = port; this.timeout = timeout; this.password = password; this.database = database; + this.clientName = clientName; } public Object makeObject() throws Exception { @@ -32,10 +38,13 @@ class JedisFactory extends BasePoolableObjectFactory { if( database != 0 ) { jedis.select(database); } - + if ( clientName != null ) { + jedis.clientSetname(clientName); + } + return jedis; } - + @Override public void activateObject(Object obj) throws Exception { if (obj instanceof Jedis) { diff --git a/src/main/java/redis/clients/jedis/JedisPool.java b/src/main/java/redis/clients/jedis/JedisPool.java index ed4f075..6e8b74d 100644 --- a/src/main/java/redis/clients/jedis/JedisPool.java +++ b/src/main/java/redis/clients/jedis/JedisPool.java @@ -10,11 +10,11 @@ import redis.clients.util.Pool; public class JedisPool extends Pool { public JedisPool(final Config poolConfig, final String host) { - this(poolConfig, host, Protocol.DEFAULT_PORT, Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE); + this(poolConfig, host, Protocol.DEFAULT_PORT, Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE, null); } public JedisPool(String host, int port) { - this(new Config(), host, port, Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE); + this(new Config(), host, port, Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE, null); } public JedisPool(final String host) { @@ -25,11 +25,11 @@ public class JedisPool extends Pool { String password = uri.getUserInfo().split(":", 2)[1]; int database = Integer.parseInt(uri.getPath().split("/", 2)[1]); this.internalPool = new GenericObjectPool(new JedisFactory(h, port, - Protocol.DEFAULT_TIMEOUT, password, database), new Config()); + Protocol.DEFAULT_TIMEOUT, password, database, null), new Config()); } else { this.internalPool = new GenericObjectPool(new JedisFactory(host, Protocol.DEFAULT_PORT, Protocol.DEFAULT_TIMEOUT, null, - Protocol.DEFAULT_DATABASE), new Config()); + Protocol.DEFAULT_DATABASE, null), new Config()); } } @@ -39,33 +39,38 @@ public class JedisPool extends Pool { String password = uri.getUserInfo().split(":", 2)[1]; int database = Integer.parseInt(uri.getPath().split("/", 2)[1]); this.internalPool = new GenericObjectPool(new JedisFactory(h, port, - Protocol.DEFAULT_TIMEOUT, password, database), new Config()); + Protocol.DEFAULT_TIMEOUT, password, database, null), new Config()); } - + public JedisPool(final Config poolConfig, final String host, int port, int timeout, final String password) { - this(poolConfig, host, port, timeout, password, Protocol.DEFAULT_DATABASE); + this(poolConfig, host, port, timeout, password, Protocol.DEFAULT_DATABASE, null); } public JedisPool(final Config poolConfig, final String host, final int port) { - this(poolConfig, host, port, Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE); + this(poolConfig, host, port, Protocol.DEFAULT_TIMEOUT, null, Protocol.DEFAULT_DATABASE, null); } public JedisPool(final Config poolConfig, final String host, final int port, final int timeout) { - this(poolConfig, host, port, timeout, null, Protocol.DEFAULT_DATABASE); + this(poolConfig, host, port, timeout, null, Protocol.DEFAULT_DATABASE, null); } public JedisPool(final Config poolConfig, final String host, int port, int timeout, final String password, - final int database) { - super(poolConfig, new JedisFactory(host, port, timeout, password, database)); + final int database) { + this(poolConfig, host, port, timeout, password, database, null); + } + + public JedisPool(final Config poolConfig, final String host, int port, int timeout, final String password, + final int database, final String clientName) { + super(poolConfig, new JedisFactory(host, port, timeout, password, database, clientName)); } public void returnBrokenResource(final BinaryJedis resource) { returnBrokenResourceObject(resource); } - + public void returnResource(final BinaryJedis resource) { returnResourceObject(resource); - } + } } diff --git a/src/test/java/redis/clients/jedis/tests/JedisPoolTest.java b/src/test/java/redis/clients/jedis/tests/JedisPoolTest.java index 61207e4..58964ff 100644 --- a/src/test/java/redis/clients/jedis/tests/JedisPoolTest.java +++ b/src/test/java/redis/clients/jedis/tests/JedisPoolTest.java @@ -117,7 +117,7 @@ public class JedisPoolTest extends Assert { pool1.returnResource(jedis0); pool1.destroy(); } - + @Test public void returnBinary() { JedisPool pool = new JedisPool(new JedisPoolConfig(), hnp.host, @@ -126,7 +126,7 @@ public class JedisPoolTest extends Assert { pool.returnResource(jedis); pool.destroy(); } - + @Test public void startWithUrlString() { Jedis j = new Jedis("localhost", 6380); @@ -138,7 +138,7 @@ public class JedisPoolTest extends Assert { assertEquals("PONG", jedis.ping()); assertEquals("bar", jedis.get("foo")); } - + @Test public void startWithUrl() throws URISyntaxException { Jedis j = new Jedis("localhost", 6380); @@ -170,4 +170,18 @@ public class JedisPoolTest extends Assert { pool.returnResource(jedis1); pool.destroy(); } + + @Test + public void customClientName() { + JedisPool pool0 = new JedisPool(new JedisPoolConfig(), hnp.host, + hnp.port, 2000, "foobared", 0, "my_shiny_client_name"); + + Jedis jedis = pool0.getResource(); + + assertEquals("my_shiny_client_name", jedis.clientGetname()); + + pool0.returnResource(jedis); + pool0.destroy(); + } } +