Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
jenkins
提交
885edb7c
J
jenkins
项目概览
xxadev
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
885edb7c
编写于
9月 10, 2017
作者:
O
Oleg Nenashev
提交者:
GitHub
9月 10, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Revert "[JENKINS-38711] Add UncaughtExceptionHandler to remoting related threads (#2986)"
This reverts commit
50bec3f6
.
上级
50bec3f6
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
2 addition
and
107 deletion
+2
-107
core/src/main/java/hudson/TcpSlaveAgentListener.java
core/src/main/java/hudson/TcpSlaveAgentListener.java
+2
-107
未找到文件。
core/src/main/java/hudson/TcpSlaveAgentListener.java
浏览文件 @
885edb7c
...
...
@@ -30,8 +30,6 @@ import java.io.Writer;
import
java.nio.charset.Charset
;
import
java.security.interfaces.RSAPublicKey
;
import
javax.annotation.Nullable
;
import
hudson.model.AperiodicWork
;
import
jenkins.model.Jenkins
;
import
jenkins.model.identity.InstanceIdentityProvider
;
import
jenkins.util.SystemProperties
;
...
...
@@ -55,7 +53,6 @@ import java.net.Socket;
import
java.nio.channels.ServerSocketChannel
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.io.Charsets
;
import
org.apache.commons.io.IOUtils
;
...
...
@@ -101,11 +98,6 @@ public final class TcpSlaveAgentListener extends Thread {
throw
(
BindException
)
new
BindException
(
"Failed to listen on port "
+
port
+
" because it's already in use."
).
initCause
(
e
);
}
this
.
configuredPort
=
port
;
setUncaughtExceptionHandler
((
t
,
e
)
->
{
LOGGER
.
log
(
Level
.
SEVERE
,
"Uncaught exception in TcpSlaveAgentListener "
+
t
+
", attempting to reschedule thread"
,
e
);
shutdown
();
TcpSlaveAgentListenerRescheduler
.
schedule
(
t
,
port
,
e
);
});
LOGGER
.
log
(
Level
.
FINE
,
"TCP agent listener started on port {0}"
,
getPort
());
...
...
@@ -163,14 +155,7 @@ public final class TcpSlaveAgentListener extends Thread {
// we take care of buffering on our own
s
.
setTcpNoDelay
(
true
);
new
ConnectionHandler
(
s
,
new
ConnectionHandlerFailureCallback
(
this
,
configuredPort
)
{
@Override
public
void
run
(
Throwable
cause
)
{
LOGGER
.
log
(
Level
.
WARNING
,
"Connection handler failed, restarting listener"
,
cause
);
shutdown
();
TcpSlaveAgentListenerRescheduler
.
schedule
(
getParentThread
(),
getPort
(),
cause
);
}
}).
start
();
new
ConnectionHandler
(
s
).
start
();
}
}
catch
(
IOException
e
)
{
if
(!
shuttingDown
)
{
...
...
@@ -209,21 +194,12 @@ public final class TcpSlaveAgentListener extends Thread {
*/
private
final
int
id
;
public
ConnectionHandler
(
Socket
s
,
ConnectionHandlerFailureCallback
parentTerminator
)
{
public
ConnectionHandler
(
Socket
s
)
{
this
.
s
=
s
;
synchronized
(
getClass
())
{
id
=
iotaGen
++;
}
setName
(
"TCP agent connection handler #"
+
id
+
" with "
+
s
.
getRemoteSocketAddress
());
setUncaughtExceptionHandler
((
t
,
e
)
->
{
LOGGER
.
log
(
Level
.
SEVERE
,
"Uncaught exception in TcpSlaveAgentListener ConnectionHandler "
+
t
,
e
);
try
{
s
.
close
();
parentTerminator
.
run
(
e
);
}
catch
(
IOException
e1
)
{
LOGGER
.
log
(
Level
.
WARNING
,
"Could not close socket after unexpected thread death"
,
e1
);
}
});
}
@Override
...
...
@@ -325,27 +301,6 @@ public final class TcpSlaveAgentListener extends Thread {
}
}
// This is essentially just to be able to pass the parent thread into the callback, as it can't access it otherwise
private
abstract
class
ConnectionHandlerFailureCallback
{
private
Thread
parentThread
;
private
int
port
;
public
ConnectionHandlerFailureCallback
(
Thread
parentThread
,
int
port
)
{
this
.
parentThread
=
parentThread
;
this
.
port
=
port
;
}
public
int
getPort
()
{
return
port
;
}
public
Thread
getParentThread
()
{
return
parentThread
;
}
public
abstract
void
run
(
Throwable
cause
);
}
/**
* This extension provides a Ping protocol that allows people to verify that the TcpSlaveAgentListener is alive.
* We also use this to wake the acceptor thread on termination.
...
...
@@ -428,66 +383,6 @@ public final class TcpSlaveAgentListener extends Thread {
}
}
/**
* Reschedules the <code>TcpSlaveAgentListener</code> on demand. Disables itself after running.
*/
@Extension
@Restricted
(
NoExternalUse
.
class
)
public
static
class
TcpSlaveAgentListenerRescheduler
extends
AperiodicWork
{
private
Thread
originThread
;
private
int
port
;
private
Throwable
cause
;
private
long
recurrencePeriod
=
5000
;
private
boolean
isActive
;
public
TcpSlaveAgentListenerRescheduler
(
Thread
originThread
,
int
port
,
Throwable
cause
)
{
this
.
originThread
=
originThread
;
this
.
port
=
port
;
this
.
cause
=
cause
;
this
.
isActive
=
false
;
}
@Override
public
long
getRecurrencePeriod
()
{
return
recurrencePeriod
;
}
@Override
public
AperiodicWork
getNewInstance
()
{
return
new
TcpSlaveAgentListenerRescheduler
(
originThread
,
port
,
cause
);
}
@Override
protected
void
doAperiodicRun
()
{
if
(
isActive
)
{
try
{
if
(
originThread
.
isAlive
())
{
originThread
.
interrupt
();
}
new
TcpSlaveAgentListener
(
port
).
start
();
LOGGER
.
log
(
Level
.
INFO
,
"Restarted TcpSlaveAgentListener"
);
isActive
=
false
;
}
catch
(
IOException
e
)
{
LOGGER
.
log
(
Level
.
SEVERE
,
"Could not reschedule TcpSlaveAgentListener - trying again."
,
cause
);
}
}
}
public
static
void
schedule
(
Thread
originThread
,
int
port
,
Throwable
cause
)
{
schedule
(
originThread
,
port
,
cause
,
5000
);
}
public
static
void
schedule
(
Thread
originThread
,
int
port
,
Throwable
cause
,
long
approxDelay
)
{
TcpSlaveAgentListenerRescheduler
rescheduler
=
AperiodicWork
.
all
().
get
(
TcpSlaveAgentListenerRescheduler
.
class
);
rescheduler
.
originThread
=
originThread
;
rescheduler
.
port
=
port
;
rescheduler
.
cause
=
cause
;
rescheduler
.
recurrencePeriod
=
approxDelay
;
rescheduler
.
isActive
=
true
;
}
}
/**
* Connection terminated because we are reconnected from the current peer.
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录