提交 52c21f2d 编写于 作者: K Kohsuke Kawaguchi

If a master fails to ping a slave, it should be hard-disconnected.

上级 3356f4da
......@@ -43,6 +43,8 @@ Upcoming changes</a>
<li class=bug>
Fixed a bug in crontab "day of week" handling in locales where a week starts from Monday.
(<a href="http://issues.hudson-ci.org/browse/HUDSON-8401">issue 8401</a>)
<li class=bug>
If a master fails to ping a slave, it should be hard-disconnected.
</ul>
</div><!--=TRUNK-END=-->
......
......@@ -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;
}
......
......@@ -25,7 +25,7 @@ ClockMonitor.DisplayName=Clock Difference
DiskSpaceMonitor.MarkedOffline=Making {0} offline temporarily due to the lack of disk space
DiskSpaceMonitor.DisplayName=Free Disk Space
ResponseTimeMonitor.DisplayName=Response Time
ResponseTimeMonitor.MarkedOffline=Making {0} offline temporarily because it''s not responding
ResponseTimeMonitor.MarkedOffline=Making {0} offline because it''s not responding
ResponseTimeMonitor.TimeOut=Time out for last {0} try
SwapSpaceMonitor.DisplayName=Free Swap Space
TemporarySpaceMonitor.DisplayName=Free Temp Space
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册