Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Zero.Ki
Pinpoint
提交
09cbcc22
P
Pinpoint
项目概览
Zero.Ki
/
Pinpoint
通知
4
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Pinpoint
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
09cbcc22
编写于
2月 18, 2021
作者:
J
jaehong-kim
提交者:
Jaehong Kim
2月 19, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[#7679] Fix assert class of retransform
上级
c4b566b9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
2 deletion
+17
-2
profiler/src/main/java/com/navercorp/pinpoint/profiler/transformer/DynamicTransformService.java
...inpoint/profiler/transformer/DynamicTransformService.java
+17
-2
未找到文件。
profiler/src/main/java/com/navercorp/pinpoint/profiler/transformer/DynamicTransformService.java
浏览文件 @
09cbcc22
...
...
@@ -21,14 +21,20 @@ import java.lang.instrument.Instrumentation;
import
java.lang.instrument.UnmodifiableClassException
;
import
com.navercorp.pinpoint.bootstrap.instrument.RequestHandle
;
import
com.navercorp.pinpoint.common.util.JvmUtils
;
import
com.navercorp.pinpoint.common.util.JvmVersion
;
import
com.navercorp.pinpoint.profiler.ProfilerException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.navercorp.pinpoint.bootstrap.instrument.DynamicTransformRequestListener
;
import
com.navercorp.pinpoint.bootstrap.instrument.DynamicTransformTrigger
;
import
java.util.Objects
;
import
static
com
.
navercorp
.
pinpoint
.
common
.
util
.
JvmVersion
.
JAVA_8
;
import
static
com
.
navercorp
.
pinpoint
.
common
.
util
.
JvmVersion
.
JAVA_9
;
/**
* @author emeroad
*/
...
...
@@ -63,13 +69,13 @@ public class DynamicTransformService implements DynamicTransformTrigger {
}
}
}
@Override
public
void
addClassFileTransformer
(
ClassLoader
classLoader
,
String
targetClassName
,
ClassFileTransformer
transformer
)
{
if
(
this
.
logger
.
isDebugEnabled
())
{
logger
.
debug
(
"Add dynamic transform. classLoader={}, class={}"
,
classLoader
,
targetClassName
);
}
this
.
dynamicTransformRequestListener
.
onTransformRequest
(
classLoader
,
targetClassName
,
transformer
);
}
...
...
@@ -77,6 +83,15 @@ public class DynamicTransformService implements DynamicTransformTrigger {
if
(!
instrumentation
.
isModifiableClass
(
target
))
{
throw
new
ProfilerException
(
"Target class "
+
target
+
" is not modifiable"
);
}
final
JvmVersion
version
=
JvmUtils
.
getVersion
();
if
(
JAVA_8
.
compareTo
(
version
)
==
0
)
{
// If the version is java 8
// Java 8 bug - NoClassDefFound error in transforming lambdas(https://bugs.openjdk.java.net/browse/JDK-8145964)
final
String
className
=
target
.
getName
();
if
(
className
!=
null
&&
className
.
contains
(
"$$Lambda$"
))
{
throw
new
ProfilerException
(
"Target class "
+
target
+
" is lambda class, Causes NoClassDefFound error in java 8."
);
}
}
}
private
void
triggerRetransform
(
Class
<?>
target
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录