Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
3ce4dc0d
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 大约 1 年
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
3ce4dc0d
编写于
2月 27, 2021
作者:
J
Jingguo Yao
提交者:
GitHub
2月 27, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix ClassCastException from CallbackAdapterInterceptor (#6462)
上级
aacaade5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
38 addition
and
6 deletion
+38
-6
CHANGES.md
CHANGES.md
+1
-0
apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackAdapterInterceptor.java
...ywalking/apm/plugin/kafka/CallbackAdapterInterceptor.java
+11
-1
apm-sniffer/apm-sdk-plugin/kafka-plugin/src/test/java/org/apache/skywalking/apm/plugin/kafka/CallbackInterceptorTest.java
.../skywalking/apm/plugin/kafka/CallbackInterceptorTest.java
+26
-5
未找到文件。
CHANGES.md
浏览文件 @
3ce4dc0d
...
...
@@ -16,6 +16,7 @@ Release Notes.
*
Enhance gRPC log appender to allow layout pattern.
*
Fix apm-dubbo-2.7.x-plugin memory leak due to some Dubbo RpcExceptions.
*
Fix lettuce-5.x-plugin get null host in redis sentinel mode.
*
Fix ClassCastException by making CallbackAdapterInterceptor to implement EnhancedInstance interface in the spring-kafka plugin.
#### OAP-Backend
*
Allow user-defined
`JAVA_OPTS`
in the startup script.
...
...
apm-sniffer/apm-sdk-plugin/kafka-plugin/src/main/java/org/apache/skywalking/apm/plugin/kafka/CallbackAdapterInterceptor.java
浏览文件 @
3ce4dc0d
...
...
@@ -25,12 +25,13 @@ import org.apache.skywalking.apm.agent.core.context.ContextSnapshot;
import
org.apache.skywalking.apm.agent.core.context.tag.Tags
;
import
org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.apache.skywalking.apm.agent.core.context.trace.SpanLayer
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.apache.skywalking.apm.network.trace.component.ComponentsDefine
;
/**
* implements Callback and EnhancedInstance, for kafka callback in lambda expression
*/
public
class
CallbackAdapterInterceptor
implements
Callback
{
public
class
CallbackAdapterInterceptor
implements
Callback
,
EnhancedInstance
{
/**
* user Callback object
...
...
@@ -64,4 +65,13 @@ public class CallbackAdapterInterceptor implements Callback {
ContextManager
.
stopSpan
();
}
}
@Override
public
Object
getSkyWalkingDynamicField
()
{
return
callbackCache
;
}
@Override
public
void
setSkyWalkingDynamicField
(
final
Object
value
)
{
}
}
\ No newline at end of file
apm-sniffer/apm-sdk-plugin/kafka-plugin/src/test/java/org/apache/skywalking/apm/plugin/kafka/CallbackInterceptorTest.java
浏览文件 @
3ce4dc0d
...
...
@@ -65,24 +65,33 @@ public class CallbackInterceptorTest {
private
Object
[]
argumentsWithException
;
private
Class
[]
argumentTypes
;
private
EnhancedInstance
callBackInstance
=
new
EnhancedInstance
()
{
private
EnhancedInstance
callBackInstance
;
private
static
class
CallbackInstance
implements
EnhancedInstance
{
private
CallbackCache
cache
;
public
CallbackInstance
(
CallbackCache
cache
)
{
this
.
cache
=
cache
;
}
@Override
public
Object
getSkyWalkingDynamicField
()
{
CallbackCache
cache
=
new
CallbackCache
();
cache
.
setSnapshot
(
MockContextSnapshot
.
INSTANCE
.
mockContextSnapshot
());
return
cache
;
}
@Override
public
void
setSkyWalkingDynamicField
(
Object
value
)
{
}
}
;
}
@Before
public
void
setUp
()
{
callbackInterceptor
=
new
CallbackInterceptor
();
CallbackCache
cache
=
new
CallbackCache
();
cache
.
setSnapshot
(
MockContextSnapshot
.
INSTANCE
.
mockContextSnapshot
());
callBackInstance
=
new
CallbackInstance
(
cache
);
arguments
=
new
Object
[]
{
recordMetadata
,
null
...
...
@@ -133,6 +142,18 @@ public class CallbackInterceptorTest {
assertCallbackSegmentRef
(
traceSegment
.
getRefs
());
}
@Test
public
void
testCallbackWithCallbackAdapterInterceptor
()
throws
Throwable
{
CallbackCache
cacheForAdapter
=
new
CallbackCache
();
cacheForAdapter
.
setSnapshot
(
MockContextSnapshot
.
INSTANCE
.
mockContextSnapshot
());
CallbackAdapterInterceptor
callbackAdapterInterceptor
=
new
CallbackAdapterInterceptor
(
cacheForAdapter
);
CallbackCache
cache
=
new
CallbackCache
();
cache
.
setCallback
(
callbackAdapterInterceptor
);
EnhancedInstance
instance
=
new
CallbackInstance
(
cache
);
callbackInterceptor
.
beforeMethod
(
instance
,
null
,
arguments
,
argumentTypes
,
null
);
}
private
void
assertCallbackSpanWithException
(
AbstractTracingSpan
span
)
{
assertCallbackSpan
(
span
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录