mirror of
https://github.com/jenkinsci/jenkins.git
synced 2026-11-13 20:12:14 +00:00
If a master fails to ping a slave, it should be hard-disconnected.
This commit is contained in:
1 parent
3356f4da29
commit
52c21f2df7
4 files changed
+17
-2
No files matched your search
@@ -116,6 +116,12 @@ public final class TcpSlaveAgentListener extends Thread {
|
||||
// the loop eventually terminates when the socket is closed.
|
||||
while (true) {
|
||||
Socket s = serverSocket.accept();
|
||||
|
||||
// this prevents a connection from silently terminated by the router in between or the other peer
|
||||
// and that goes without unnoticed. However, the time out is often very long (for example 2 hours
|
||||
// by default in Linux) that this alone is enough to prevent that.
|
||||
s.setKeepAlive(true);
|
||||
|
||||
new ConnectionHandler(s).start();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
||||
@@ -25,6 +25,7 @@ package hudson.node_monitors;
|
||||
|
||||
import hudson.Util;
|
||||
import hudson.Extension;
|
||||
import hudson.model.Descriptor.FormException;
|
||||
import hudson.slaves.OfflineCause;
|
||||
import hudson.model.Computer;
|
||||
import hudson.remoting.Callable;
|
||||
@@ -67,8 +68,14 @@ public class ResponseTimeMonitor extends NodeMonitor {
|
||||
d = new Data(old,-1L);
|
||||
}
|
||||
|
||||
if(d.hasTooManyTimeouts() && markOffline(c,d))
|
||||
if(d.hasTooManyTimeouts() && !isIgnored()) {
|
||||
// unlike other monitors whose failure still allow us to communicate with the slave,
|
||||
// the failure in this monitor indicates that we are just unable to make any requests
|
||||
// to this slave. So we should severe the connection, as opposed to marking it temporarily
|
||||
// off line, which still keeps the underlying channel open.
|
||||
c.disconnect(d);
|
||||
LOGGER.warning(Messages.ResponseTimeMonitor_MarkedOffline(c.getName()));
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user