Skip to content

Commit 72d3ec5

Browse files
Fix bug in clientMode
1 parent a817f80 commit 72d3ec5

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

src/main/java/net/spy/memcached/MemcachedClient.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ private MemcachedClient(ConnectionFactory cf, List<InetSocketAddress> addrs, boo
248248
//An internal customer convenience check to determine whether the client mode based on
249249
// the DNS name if only one endpoint is specified.
250250
if(determineClientMode){
251+
boolean isClientModeDetermined = false;
251252
if(addrs.size() == 1){
252253
if(addrs.get(0) == null){
253254
throw new NullPointerException("Socket address is null");
@@ -256,10 +257,14 @@ private MemcachedClient(ConnectionFactory cf, List<InetSocketAddress> addrs, boo
256257
//All config endpoints has ".cfg." subdomain in the DNS name.
257258
if(hostName != null && hostName.contains(".cfg.")){
258259
cf = updateClientMode(cf, ClientMode.Dynamic);
260+
isClientModeDetermined = true;
259261
}
260262
}
261263
//Fallback to static mode
262-
cf = updateClientMode(cf, ClientMode.Static);
264+
if (!isClientModeDetermined) {
265+
cf = updateClientMode(cf, ClientMode.Static);
266+
isClientModeDetermined = true;
267+
}
263268
}
264269

265270
if (cf == null) {

src/test/java/net/spy/memcached/MemcachedConnectionTest.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,14 @@ public void testBelongsToCluster() throws Exception {
7373
assertTrue(conn.belongsToCluster(node));
7474
assertFalse(conn.belongsToCluster(node2));
7575
}
76-
public void testDefaultClientMode() throws Exception {
76+
77+
public void testClientMode() throws Exception {
7778
ConnectionFactory factory = new DefaultConnectionFactory();
7879
assert factory.getClientMode() == ClientMode.Unset;
79-
MemcachedClient client = new MemcachedClient(factory, AddrUtil.getAddresses(UnitTestConfig.IPV4_ADDR + ":11211"));
80-
assert client.clientMode == ClientMode.Static;
80+
MemcachedClient client1 = new MemcachedClient(factory, AddrUtil.getAddresses(UnitTestConfig.IPV4_ADDR + ":11211"));
81+
assert client1.clientMode == ClientMode.Static;
82+
MemcachedClient client2 = new MemcachedClient(AddrUtil.getAddresses(UnitTestConfig.TEST_HOSTNAME + ":11211"));
83+
assert client2.clientMode == ClientMode.Dynamic;
8184
}
85+
8286
}

src/test/java/net/spy/memcached/UnitTestConfig.java

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public final class UnitTestConfig {
3636
public static final String PORT_PROP = "server.port_number";
3737
public static final String TYPE_TEST_UNIT = "unit";
3838
public static final String TYPE_TEST_CI = "ci";
39+
public static final String TEST_HOSTNAME = "abc.cfg.test.com";
3940

4041
//currently server host address ipv4 is always default to "127.0.0.1", disabled in build.xml
4142
public static final String IPV4_ADDR = System.getProperty(IPV4_PROP,

0 commit comments

Comments
 (0)