Skip to content

Commit

Permalink
Merge pull request #13826 from mdogan/ping-fd-improvement-x
Browse files Browse the repository at this point in the history
[BACKPORT] Do not suppress exceptions in ICMP ping task
  • Loading branch information
mdogan committed Sep 24, 2018
2 parents b03a0c1 + 1a2a9ac commit 65a18c3
Showing 1 changed file with 30 additions and 34 deletions.
Expand Up @@ -741,25 +741,21 @@ private class PingTask
}

public void run() {
try {
Address address = member.getAddress();
logger.warning(format("%s will ping %s", node.getThisAddress(), address));
for (int i = 0; i < MAX_PING_RETRY_COUNT; i++) {
if (doPing(address, Level.INFO)) {
return;
}
Address address = member.getAddress();
logger.warning(format("%s will ping %s", node.getThisAddress(), address));
for (int i = 0; i < MAX_PING_RETRY_COUNT; i++) {
if (doPing(address, Level.INFO)) {
return;
}
// host not reachable
String reason = format("%s could not ping %s", node.getThisAddress(), address);
logger.warning(reason);
clusterService.suspectMember(member, reason, true);
} catch (Throwable ignored) {
ignore(ignored);
}

// host not reachable
String reason = format("%s could not ping %s", node.getThisAddress(), address);
logger.warning(reason);
clusterService.suspectMember(member, reason, true);
}

boolean doPing(Address address, Level level)
throws IOException {
boolean doPing(Address address, Level level) {
try {
if (address.getInetAddress().isReachable(null, icmpTtl, icmpTimeoutMillis)) {
String msg = format("%s pinged %s successfully", node.getThisAddress(), address);
Expand All @@ -769,6 +765,10 @@ boolean doPing(Address address, Level level)
} catch (ConnectException ignored) {
// no route to host, means we cannot connect anymore
ignore(ignored);
} catch (IOException e) {
if (logger.isFinestEnabled()) {
logger.finest("Failed while pinging " + address, e);
}
}
return false;
}
Expand All @@ -783,29 +783,25 @@ private class PeriodicPingTask
}

public void run() {
try {
Address address = member.getAddress();
logger.fine(format("%s will ping %s", node.getThisAddress(), address));
if (doPing(address, Level.FINE)) {
boolean pingRestored = (icmpFailureDetector.heartbeat(member) > 0);
if (pingRestored) {
quorumService.onPingRestored(member);
}
return;
Address address = member.getAddress();
logger.fine(format("%s will ping %s", node.getThisAddress(), address));
if (doPing(address, Level.FINE)) {
boolean pingRestored = (icmpFailureDetector.heartbeat(member) > 0);
if (pingRestored) {
quorumService.onPingRestored(member);
}
return;
}

icmpFailureDetector.logAttempt(member);
quorumService.onPingLost(member);
icmpFailureDetector.logAttempt(member);
quorumService.onPingLost(member);

// host not reachable
String reason = format("%s could not ping %s", node.getThisAddress(), address);
logger.warning(reason);
// host not reachable
String reason = format("%s could not ping %s", node.getThisAddress(), address);
logger.warning(reason);

if (!icmpFailureDetector.isAlive(member)) {
clusterService.suspectMember(member, reason, true);
}
} catch (Throwable ignored) {
ignore(ignored);
if (!icmpFailureDetector.isAlive(member)) {
clusterService.suspectMember(member, reason, true);
}
}
}
Expand Down

0 comments on commit 65a18c3

Please sign in to comment.