Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿啄debugIT
transmittable-thread-local
提交
40731bf4
T
transmittable-thread-local
项目概览
阿啄debugIT
/
transmittable-thread-local
与 Fork 源项目一致
从无法访问的项目Fork
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
transmittable-thread-local
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
40731bf4
编写于
10月 16, 2013
作者:
oldratlee
🔥
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
clean code; catch Throwable in Agent
上级
99ec6b1b
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
11 addition
and
12 deletion
+11
-12
src/main/java/com/alibaba/mtc/threadpool/agent/MtContextAgent.java
...java/com/alibaba/mtc/threadpool/agent/MtContextAgent.java
+1
-1
src/main/java/com/alibaba/mtc/threadpool/agent/MtContextTransformer.java
...om/alibaba/mtc/threadpool/agent/MtContextTransformer.java
+10
-11
未找到文件。
src/main/java/com/alibaba/mtc/threadpool/agent/MtContextAgent.java
浏览文件 @
40731bf4
...
...
@@ -11,7 +11,7 @@ import java.util.logging.Logger;
* @since 0.9.0
*/
public
class
MtContextAgent
{
private
static
Logger
logger
=
Logger
.
getLogger
(
MtContextAgent
.
class
.
getName
());
private
static
final
Logger
logger
=
Logger
.
getLogger
(
MtContextAgent
.
class
.
getName
());
public
static
void
premain
(
String
agentArgs
,
Instrumentation
inst
)
{
logger
.
warning
(
"[MtContextAgent.premain] begin, agentArgs: "
+
agentArgs
);
...
...
src/main/java/com/alibaba/mtc/threadpool/agent/MtContextTransformer.java
浏览文件 @
40731bf4
...
...
@@ -22,14 +22,13 @@ import java.util.logging.Logger;
* @since 0.9.0
*/
public
class
MtContextTransformer
implements
ClassFileTransformer
{
private
static
Logger
logger
=
Logger
.
getLogger
(
MtContextTransformer
.
class
.
getName
());
private
static
final
Logger
logger
=
Logger
.
getLogger
(
MtContextTransformer
.
class
.
getName
());
private
static
final
String
RUNNABLE_CLASS_NAME
=
"java.lang.Runnable"
;
private
static
final
String
CALLABLE_CLASS_NAME
=
"java.util.concurrent.Callable"
;
private
static
final
String
MTCONTEXT_RUNNABLE_CLASS_NAME
=
MtContextRunnable
.
class
.
getName
();
private
static
final
String
MTCONTEXT_CALLABLE_CLASS_NAME
=
MtContextCallable
.
class
.
getName
();
private
static
final
String
MT
_
CONTEXT_RUNNABLE_CLASS_NAME
=
MtContextRunnable
.
class
.
getName
();
private
static
final
String
MT
_
CONTEXT_CALLABLE_CLASS_NAME
=
MtContextCallable
.
class
.
getName
();
private
static
final
String
THREAD_POOL_CLASS_FILE
=
"java.util.concurrent.ThreadPoolExecutor"
.
replace
(
'.'
,
'/'
);
private
static
final
String
SCHEDULER_CLASS_FILE
=
"java.util.concurrent.ScheduledThreadPoolExecutor"
.
replace
(
'.'
,
'/'
);
...
...
@@ -53,16 +52,16 @@ public class MtContextTransformer implements ClassFileTransformer {
updateMethod
(
method
);
}
return
clazz
.
toBytecode
();
}
catch
(
Exception
e
)
{
String
msg
=
"Fail to transform class "
+
className
+
", cause: "
+
e
.
getMessage
();
}
catch
(
Throwable
t
)
{
String
msg
=
"Fail to transform class "
+
className
+
", cause: "
+
t
.
getMessage
();
logger
.
severe
(
msg
);
throw
new
IllegalStateException
(
msg
,
e
);
throw
new
IllegalStateException
(
msg
,
t
);
}
}
return
null
;
}
static
Set
<
String
>
updateMethodNames
=
new
HashSet
<
String
>();
static
final
Set
<
String
>
updateMethodNames
=
new
HashSet
<
String
>();
static
{
updateMethodNames
.
add
(
"execute"
);
...
...
@@ -76,7 +75,7 @@ public class MtContextTransformer implements ClassFileTransformer {
if
(!
updateMethodNames
.
contains
(
method
.
getName
()))
{
return
;
}
int
modifiers
=
method
.
getModifiers
();
final
int
modifiers
=
method
.
getModifiers
();
if
(!
Modifier
.
isPublic
(
modifiers
)
||
Modifier
.
isStatic
(
modifiers
))
{
return
;
}
...
...
@@ -86,11 +85,11 @@ public class MtContextTransformer implements ClassFileTransformer {
for
(
int
i
=
0
;
i
<
parameterTypes
.
length
;
i
++)
{
CtClass
paraType
=
parameterTypes
[
i
];
if
(
RUNNABLE_CLASS_NAME
.
equals
(
paraType
.
getName
()))
{
String
code
=
String
.
format
(
"$%d = %s.get($%d);"
,
i
+
1
,
MTCONTEXT_RUNNABLE_CLASS_NAME
,
i
+
1
);
String
code
=
String
.
format
(
"$%d = %s.get($%d);"
,
i
+
1
,
MT
_
CONTEXT_RUNNABLE_CLASS_NAME
,
i
+
1
);
logger
.
info
(
"insert code before method "
+
method
+
": "
+
code
);
insertCode
.
append
(
code
);
}
else
if
(
CALLABLE_CLASS_NAME
.
equals
(
paraType
.
getName
()))
{
String
code
=
String
.
format
(
"$%d = %s.get($%d);"
,
i
+
1
,
MTCONTEXT_CALLABLE_CLASS_NAME
,
i
+
1
);
String
code
=
String
.
format
(
"$%d = %s.get($%d);"
,
i
+
1
,
MT
_
CONTEXT_CALLABLE_CLASS_NAME
,
i
+
1
);
logger
.
info
(
"insert code before method "
+
method
+
": "
+
code
);
insertCode
.
append
(
code
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录