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);



Posted by '김용환'
,