Skip to content
Permalink
Browse files

[JENKINS-35190] Do not even consult PingFailureAnalyzer if ping fails…

… on the agent side. (#2377)
  • Loading branch information
jglick authored and oleg-nenashev committed May 29, 2016
1 parent 3403a3e commit 0ae6c42ed2cbda0ea4a1e196656ef1d6008d80ba
Showing with 15 additions and 5 deletions.
  1. +15 −5 core/src/main/java/hudson/slaves/ChannelPinger.java
@@ -88,7 +88,7 @@ public void install(Channel channel) {

// set up ping from both directions, so that in case of a router dropping a connection,
// both sides can notice it and take compensation actions.
setUpPingForChannel(channel, pingInterval);
setUpPingForChannel(channel, pingInterval, true);
}

private static class SetUpRemotePing extends MasterToSlaveCallable<Void, IOException> {
@@ -99,18 +99,20 @@ public SetUpRemotePing(int pingInterval) {
}

public Void call() throws IOException {
setUpPingForChannel(Channel.current(), pingInterval);
setUpPingForChannel(Channel.current(), pingInterval, false);
return null;
}
}

private static void setUpPingForChannel(final Channel channel, int interval) {
private static void setUpPingForChannel(final Channel channel, int interval, final boolean analysis) {
LOGGER.log(FINE, "setting up ping on {0} at interval {1}m", new Object[] {channel.getName(), interval});
final AtomicBoolean isInClosed = new AtomicBoolean(false);
final PingThread t = new PingThread(channel, interval * 60 * 1000) {
@Override
protected void onDead(Throwable cause) {
try {
for (PingFailureAnalyzer pfa : PingFailureAnalyzer.all()) {
pfa.onPingFailure(channel,cause);
if (analysis) {
analyze(cause);
}
if (isInClosed.get()) {
LOGGER.log(FINE,"Ping failed after the channel "+channel.getName()+" is already partially closed.",cause);
@@ -122,6 +124,14 @@ protected void onDead(Throwable cause) {
LOGGER.log(SEVERE,"Failed to terminate the channel "+channel.getName(),e);
}
}
/** Keep in a separate method so we do not even try to do class loading on {@link PingFailureAnalyzer} from an agent JVM. */
private void analyze(Throwable cause) throws IOException {
for (PingFailureAnalyzer pfa : PingFailureAnalyzer.all()) {
pfa.onPingFailure(channel,cause);
}
}
@Deprecated
@Override
protected void onDead() {
onDead(null);
}

0 comments on commit 0ae6c42

Please sign in to comment.
You can’t perform that action at this time.