提交 b8f5342c 编写于 作者: J James Nord

Merge pull request #1784 from Vlatombe/JENKINS-29798

[FIXED JENKINS-29798] Failed to listen to incoming slave connection
......@@ -64,6 +64,9 @@ Upcoming changes</a>
<li class="bug">
Do not display <em>No changes</em> if changelog is still being computed.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-2327">JENKINS-2327</a>)
<li class=bug>
Fix error message "Failed to listen to incoming slave connection" after fixing port through init.groovy.d (<a href="https://issues.jenkins-ci.org/browse/JENKINS-29798">JENKINS-29798</a>)
<li class=>
</ul>
</div><!--=TRUNK-END=-->
<h3><a name=v1.625>What's new in 1.625</a> (2015/08/17)</h3>
......
......@@ -552,6 +552,8 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
public transient volatile TcpSlaveAgentListener tcpSlaveAgentListener;
private transient final Object tcpSlaveAgentListenerLock = new Object();
private transient UDPBroadcastThread udpBroadcastThread;
private transient DNSMultiCast dnsMultiCast;
......@@ -821,16 +823,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
if(KILL_AFTER_LOAD)
System.exit(0);
if(slaveAgentPort!=-1) {
try {
tcpSlaveAgentListener = new TcpSlaveAgentListener(slaveAgentPort);
} catch (BindException e) {
new AdministrativeError(getClass().getName()+".tcpBind",
"Failed to listen to incoming slave connection",
"Failed to listen to incoming slave connection. <a href='configure'>Change the port number</a> to solve the problem.",e);
}
} else
tcpSlaveAgentListener = null;
launchTcpSlaveAgentListener();
if (UDPBroadcastThread.PORT != -1) {
try {
......@@ -946,17 +939,32 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
*/
public void setSlaveAgentPort(int port) throws IOException {
this.slaveAgentPort = port;
launchTcpSlaveAgentListener();
}
// relaunch the agent
if(tcpSlaveAgentListener==null) {
if(slaveAgentPort!=-1)
tcpSlaveAgentListener = new TcpSlaveAgentListener(slaveAgentPort);
} else {
if(tcpSlaveAgentListener.configuredPort!=slaveAgentPort) {
private void launchTcpSlaveAgentListener() throws IOException {
synchronized(tcpSlaveAgentListenerLock) {
// shutdown previous agent if the port has changed
if (tcpSlaveAgentListener != null && tcpSlaveAgentListener.configuredPort != slaveAgentPort) {
tcpSlaveAgentListener.shutdown();
tcpSlaveAgentListener = null;
if(slaveAgentPort!=-1)
}
if (slaveAgentPort != -1 && tcpSlaveAgentListener == null) {
String administrativeMonitorId = getClass().getName() + ".tcpBind";
try {
tcpSlaveAgentListener = new TcpSlaveAgentListener(slaveAgentPort);
// remove previous monitor in case of previous error
for (Iterator<AdministrativeMonitor> it = AdministrativeMonitor.all().iterator(); it.hasNext(); ) {
AdministrativeMonitor am = it.next();
if (administrativeMonitorId.equals(am.id)) {
it.remove();
}
}
} catch (BindException e) {
new AdministrativeError(administrativeMonitorId,
"Failed to listen to incoming slave connection",
"Failed to listen to incoming slave connection. <a href='configure'>Change the port number</a> to solve the problem.", e);
}
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册