Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,6 @@ private void pollConnectFuture() {
private void handleConnectException(Throwable e) {
++connectionFailureCount;
SocketAddress socketAddress = socketAddresses[getCurrentSocketAddressIndex()];
unresolveCurrentSocketAddress(socketAddress);
while (e.getCause() != null) {
e = e.getCause();
}
Expand All @@ -284,28 +283,16 @@ private void handleConnectException(Throwable e) {
private SocketAddress getNextSocketAddress() {
SocketAddress socketAddress = socketAddresses[nextSocketAddressIndex];

// QFJ-266 Recreate socket address for unresolved addresses
if (socketAddress instanceof InetSocketAddress) {
InetSocketAddress inetAddr = (InetSocketAddress) socketAddress;
if (inetAddr.isUnresolved()) {
socketAddress = new InetSocketAddress(inetAddr.getHostName(), inetAddr
.getPort());
socketAddresses[nextSocketAddressIndex] = socketAddress;
}
}
// Recreate socket address to avoid cached address resolution
if (socketAddress instanceof InetSocketAddress) {
InetSocketAddress inetAddr = (InetSocketAddress) socketAddress;
socketAddress = new InetSocketAddress(inetAddr.getHostName(), inetAddr.getPort());
socketAddresses[nextSocketAddressIndex] = socketAddress;
}
nextSocketAddressIndex = (nextSocketAddressIndex + 1) % socketAddresses.length;
return socketAddress;
}

// QFJ-822 Reset cached DNS resolution information on connection failure.
private void unresolveCurrentSocketAddress(SocketAddress socketAddress) {
if (socketAddress instanceof InetSocketAddress) {
InetSocketAddress inetAddr = (InetSocketAddress) socketAddress;
socketAddresses[getCurrentSocketAddressIndex()] = InetSocketAddress.createUnresolved(
inetAddr.getHostString(), inetAddr.getPort());
}
}

private int getCurrentSocketAddressIndex() {
return (nextSocketAddressIndex + socketAddresses.length - 1) % socketAddresses.length;
}
Expand Down
Loading