while (client == null) {
try {
final HostAndPort hostAndPort = getNextHostAndPort();
final NiftyClientConnector<? extends NiftyClientChannel> clientConnector = config.isFramed()
? new FramedClientConnector(hostAndPort)
: new UnframedClientConnector(hostAndPort);
client = thriftClient.open(clientConnector).get();
if (!clientHolder.compareAndSet(null, client)) {
client.close();
client = clientHolder.get();