This is an automated email from the ASF dual-hosted git repository.

nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit f815c4ff1c4aa86692adbbbdfb93e4979f9cd49a
Author: Zhong, Yanghong <nju_y...@apache.org>
AuthorDate: Wed May 20 17:11:20 2020 +0800

    KYLIN-4506 Remove unresolved memcached servers before initialize 
MemcachedClient
---
 .../org/apache/kylin/cache/memcached/MemcachedCache.java | 16 +++++++++++++++-
 .../apache/kylin/cache/memcached/MemcachedCacheTest.java |  9 +++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git 
a/cache/src/main/java/org/apache/kylin/cache/memcached/MemcachedCache.java 
b/cache/src/main/java/org/apache/kylin/cache/memcached/MemcachedCache.java
index e7ff75f..784665e 100644
--- a/cache/src/main/java/org/apache/kylin/cache/memcached/MemcachedCache.java
+++ b/cache/src/main/java/org/apache/kylin/cache/memcached/MemcachedCache.java
@@ -20,8 +20,11 @@ package org.apache.kylin.cache.memcached;
 
 import java.io.IOException;
 import java.io.Serializable;
+import java.net.InetSocketAddress;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
@@ -136,13 +139,24 @@ public class MemcachedCache {
                     
.setOpQueueMaxBlockTime(config.getTimeout()).setOpTimeout(config.getTimeout())
                     
.setReadBufferSize(config.getReadBufferSize()).setOpQueueFactory(opQueueFactory).build();
             return new MemcachedCache(new MemcachedClient(new 
MemcachedConnectionFactory(connectionFactory),
-                    AddrUtil.getAddresses(hostsStr)), config, memcachedPrefix, 
timeToLive);
+                    getResolvedAddrList(hostsStr)), config, memcachedPrefix, 
timeToLive);
         } catch (IOException e) {
             logger.error("Unable to create MemcachedCache instance.", e);
             throw Throwables.propagate(e);
         }
     }
 
+    public static List<InetSocketAddress> getResolvedAddrList(String hostsStr) 
{
+        List<InetSocketAddress> addrs = AddrUtil.getAddresses(hostsStr);
+        Iterator<InetSocketAddress> addrIterator = addrs.iterator();
+        while (addrIterator.hasNext()) {
+            if (addrIterator.next().isUnresolved()) {
+                addrIterator.remove();
+            }
+        }
+        return addrs;
+    }
+
     public String getName() {
         return memcachedPrefix;
     }
diff --git 
a/cache/src/test/java/org/apache/kylin/cache/memcached/MemcachedCacheTest.java 
b/cache/src/test/java/org/apache/kylin/cache/memcached/MemcachedCacheTest.java
index 4fcbc5e..a4f8fc0 100644
--- 
a/cache/src/test/java/org/apache/kylin/cache/memcached/MemcachedCacheTest.java
+++ 
b/cache/src/test/java/org/apache/kylin/cache/memcached/MemcachedCacheTest.java
@@ -21,6 +21,8 @@ package org.apache.kylin.cache.memcached;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.net.InetSocketAddress;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -81,4 +83,11 @@ public class MemcachedCacheTest extends 
LocalFileMetadataTestCase {
             Assert.assertEquals("The value should not change", 
keyValueMap.get(key), memCachedAdaptor.get(key).get());
         }
     }
+
+    @Test
+    public void testGetResolvedAddrList() {
+        String hostsStr = "localhost:11211,fafddafaf:11211,fadfafaerqr:11211";
+        List<InetSocketAddress> addrList = 
MemcachedCache.getResolvedAddrList(hostsStr);
+        Assert.assertEquals(1, addrList.size());
+    }
 }
\ No newline at end of file

Reply via email to