[cassandra3] Failed to add contact point 해결하기
cassandra 3.0에서 IllegalArgumentException : Failed to add contact point 예외가 발생했다.
Caused by: java.lang.IllegalArgumentException: Failed to add contact point: 1.1.1.2
at com.datastax.driver.core.Cluster$Builder.addContactPoint(Cluster.java:851)
at com.datastax.driver.core.Cluster$Builder.addContactPoints(Cluster.java:874)
Caused by: java.net.UnknownHostException: 172.17.56.91: unknown error
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:907)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1302)
at java.net.InetAddress.getAllByName0(InetAddress.java:1255)
코드는 매우 간단했다..
String[] contactPoints = StringUtils.split(urls, ",")
cluster = Cluster.builder().addContactPoints(contactPoints).
withQueryOptions(queryOptions).
...
확인해보니,ip 목록을 받을 때 공백문자가 있으면 java에서는 unknown error가 발생한다.
재현 코드는 다음과 같다.
import java.net.*;
public class Test {
public static void main(String args[]) throws Exception{
InetAddress ipAddress=null;
ipAddress = InetAddress.getByName(" 1.1.1.2");
System.out.println("getHostName:"+ipAddress.getHostName());
System.out.println("getHostAddr:"+ipAddress.getHostAddress());
}
}
$ java Test
Exception in thread "main" java.net.UnknownHostException: 172.17.56.91: unknown error
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:907)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1302)
at java.net.InetAddress.getAllByName0(InetAddress.java:1255)
이 문제 해결을 위해 단순하게 split만 하지 않고 공백 문자가 들어와도 공백을 없애도록 코드를 수정했다.
String[] contactPoints = Arrays.stream(StringUtils.split(urls, ",")).map(String::trim).toArray(String[]::new);