Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FIY695
jenkins
提交
2aad4029
J
jenkins
项目概览
FIY695
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
2aad4029
编写于
3月 18, 2011
作者:
K
Kohsuke Kawaguchi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[FIXED JENKINS-9050] Improved the error diagnostics when a remote method call fails to deserialize.
上级
ca4de00c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
34 addition
and
0 deletion
+34
-0
changelog.html
changelog.html
+3
-0
remoting/src/main/java/hudson/remoting/UserRequest.java
remoting/src/main/java/hudson/remoting/UserRequest.java
+4
-0
remoting/src/test/java/hudson/remoting/ChannelTest.java
remoting/src/test/java/hudson/remoting/ChannelTest.java
+27
-0
未找到文件。
changelog.html
浏览文件 @
2aad4029
...
...
@@ -90,6 +90,9 @@ Upcoming changes</a>
<li
class=
rfe
>
Added a new axis type to the matrix project that lets you use boolean expressions
(
<a
href=
"https://github.com/jenkinsci/jenkins/pull/66"
>
pull request #66
</a>
)
<li
class=
rfe
>
Improved the error diagnostics when a remote method call fails to deserialize.
(
<a
href=
"http://issues.jenkins-ci.org/browse/JENKINS-9050"
>
issue 9050
</a>
)
</ul>
</div>
<!--=TRUNK-END=-->
...
...
remoting/src/main/java/hudson/remoting/UserRequest.java
浏览文件 @
2aad4029
...
...
@@ -98,6 +98,10 @@ final class UserRequest<RSP,EXC extends Throwable> extends Request<UserResponse<
o
=
deserialize
(
channel
,
request
,
cl
);
}
catch
(
ClassNotFoundException
e
)
{
throw
new
ClassNotFoundException
(
"Failed to deserialize the Callable object. Perhaps you needed to implement DelegatingCallable?"
,
e
);
}
catch
(
RuntimeException
e
)
{
// if the error is during deserialization, throw it in one of the types Channel.call will
// capture its call site stack trace. See
throw
new
Error
(
"Failed to deserialize the Callable object."
,
e
);
}
Callable
<
RSP
,
EXC
>
callable
=
(
Callable
<
RSP
,
EXC
>)
o
;
...
...
remoting/src/test/java/hudson/remoting/ChannelTest.java
浏览文件 @
2aad4029
package
hudson.remoting
;
import
org.jvnet.hudson.test.Bug
;
import
java.io.IOException
;
import
java.io.ObjectInputStream
;
/**
* @author Kohsuke Kawaguchi
*/
...
...
@@ -7,4 +12,26 @@ public class ChannelTest extends RmiTestBase {
public
void
testCapability
()
{
assertTrue
(
channel
.
remoteCapability
.
supportsMultiClassLoaderRPC
());
}
@Bug
(
9050
)
public
void
testFailureInDeserialization
()
throws
Exception
{
try
{
channel
.
call
(
new
CallableImpl
());
fail
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
assertEquals
(
"foobar"
,
e
.
getCause
().
getCause
().
getMessage
());
assertTrue
(
e
.
getCause
().
getCause
()
instanceof
ClassCastException
);
}
}
private
static
class
CallableImpl
implements
Callable
<
Object
,
IOException
>
{
public
Object
call
()
throws
IOException
{
return
null
;
}
private
void
readObject
(
ObjectInputStream
ois
)
throws
IOException
,
ClassNotFoundException
{
throw
new
ClassCastException
(
"foobar"
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录