Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
888e0484
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 搜索 >>
提交
888e0484
编写于
7月 02, 2017
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix entry and exit span methods bug.
上级
9d100902
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
78 addition
and
6 deletion
+78
-6
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java
...org/skywalking/apm/agent/core/context/TracingContext.java
+12
-6
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/EntrySpan.java
...rg/skywalking/apm/agent/core/context/trace/EntrySpan.java
+33
-0
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java
...org/skywalking/apm/agent/core/context/trace/ExitSpan.java
+28
-0
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentRef.java
...walking/apm/agent/core/context/trace/TraceSegmentRef.java
+5
-0
未找到文件。
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java
浏览文件 @
888e0484
...
...
@@ -77,10 +77,11 @@ public class TracingContext implements AbstractTracerContext {
@Override
public
AbstractSpan
createEntrySpan
(
final
String
operationName
)
{
AbstractTracingSpan
entrySpan
;
AbstractTracingSpan
parentSpan
=
peek
();
final
int
parentSpanId
=
parentSpan
==
null
?
-
1
:
parentSpan
.
getSpanId
();
if
(
parentSpan
==
null
)
{
AbstractTracingSpan
s
pan
=
(
AbstractTracingSpan
)
DictionaryManager
.
findOperationNameCodeSection
()
entryS
pan
=
(
AbstractTracingSpan
)
DictionaryManager
.
findOperationNameCodeSection
()
.
find
(
segment
.
getApplicationId
(),
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
operationId
)
{
...
...
@@ -91,9 +92,10 @@ public class TracingContext implements AbstractTracerContext {
return
new
EntrySpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
);
}
});
return
push
(
span
);
entrySpan
.
start
();
return
push
(
entrySpan
);
}
else
if
(
parentSpan
.
isEntry
())
{
return
parentSpan
;
return
parentSpan
.
start
()
;
}
else
{
throw
new
IllegalStateException
(
"The Entry Span can't be the child of Non-Entry Span"
);
}
...
...
@@ -116,17 +118,19 @@ public class TracingContext implements AbstractTracerContext {
return
new
LocalSpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
);
}
});
span
.
start
();
return
push
(
span
);
}
@Override
public
AbstractSpan
createExitSpan
(
final
String
operationName
,
final
String
remotePeer
)
{
AbstractTracingSpan
exitSpan
;
AbstractTracingSpan
parentSpan
=
peek
();
if
(
parentSpan
!=
null
&&
parentSpan
.
isExit
())
{
return
parentSpan
;
exitSpan
=
parentSpan
;
}
else
{
final
int
parentSpanId
=
parentSpan
==
null
?
-
1
:
parentSpan
.
getSpanId
();
AbstractTracingSpan
s
pan
=
(
AbstractTracingSpan
)
DictionaryManager
.
findApplicationCodeSection
()
exitS
pan
=
(
AbstractTracingSpan
)
DictionaryManager
.
findApplicationCodeSection
()
.
find
(
remotePeer
).
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
...
...
@@ -153,8 +157,10 @@ public class TracingContext implements AbstractTracerContext {
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
,
remotePeer
);
}
});
return
push
(
span
);
exitSpan
.
start
();
push
(
exitSpan
);
}
return
exitSpan
;
}
@Override
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/EntrySpan.java
浏览文件 @
888e0484
package
org.skywalking.apm.agent.core.context.trace
;
import
org.skywalking.apm.agent.core.dictionary.DictionaryUtil
;
import
org.skywalking.apm.network.trace.component.Component
;
/**
* The <code>EntrySpan</code> represents a service provider point, such as Tomcat server entrance.
*
...
...
@@ -46,6 +49,33 @@ public class EntrySpan extends AbstractTracingSpan {
return
this
;
}
@Override
public
AbstractSpan
setLayer
(
SpanLayer
layer
)
{
if
(
stackDepth
==
currentMaxDepth
)
{
return
super
.
setLayer
(
layer
);
}
else
{
return
this
;
}
}
@Override
public
AbstractSpan
setComponent
(
Component
component
)
{
if
(
stackDepth
==
currentMaxDepth
)
{
return
super
.
setComponent
(
component
);
}
else
{
return
this
;
}
}
@Override
public
AbstractSpan
setComponent
(
String
componentName
)
{
if
(
stackDepth
==
currentMaxDepth
)
{
return
super
.
setComponent
(
componentName
);
}
else
{
return
this
;
}
}
@Override
public
boolean
finish
(
TraceSegment
owner
)
{
if
(--
stackDepth
==
0
)
{
...
...
@@ -74,6 +104,9 @@ public class EntrySpan extends AbstractTracingSpan {
}
private
void
clearWhenRestart
()
{
this
.
componentId
=
DictionaryUtil
.
nullValue
();
this
.
componentName
=
null
;
this
.
layer
=
null
;
this
.
logs
=
null
;
this
.
tags
=
null
;
}
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java
浏览文件 @
888e0484
package
org.skywalking.apm.agent.core.context.trace
;
import
org.skywalking.apm.agent.core.dictionary.DictionaryUtil
;
import
org.skywalking.apm.network.trace.component.Component
;
/**
* The <code>ExitSpan</code> represents a service consumer point, such as Feign, Okhttp discovery for a Http service.
...
...
@@ -66,6 +67,33 @@ public class ExitSpan extends AbstractTracingSpan {
}
}
@Override
public
AbstractSpan
setLayer
(
SpanLayer
layer
)
{
if
(
stackDepth
==
1
)
{
return
super
.
setLayer
(
layer
);
}
else
{
return
this
;
}
}
@Override
public
AbstractSpan
setComponent
(
Component
component
)
{
if
(
stackDepth
==
1
)
{
return
super
.
setComponent
(
component
);
}
else
{
return
this
;
}
}
@Override
public
AbstractSpan
setComponent
(
String
componentName
)
{
if
(
stackDepth
==
1
)
{
return
super
.
setComponent
(
componentName
);
}
else
{
return
this
;
}
}
@Override
public
ExitSpan
log
(
Throwable
t
)
{
if
(
stackDepth
==
1
)
{
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentRef.java
浏览文件 @
888e0484
...
...
@@ -31,6 +31,11 @@ public class TraceSegmentRef {
*/
private
List
<
DistributedTraceId
>
distributedTraceIds
;
/**
* Transform a {@link ContextCarrier} to the <code>TraceSegmentRef</code>
*
* @param carrier the valid cross-process propagation format.
*/
public
TraceSegmentRef
(
ContextCarrier
carrier
)
{
this
.
traceSegmentId
=
carrier
.
getTraceSegmentId
();
this
.
spanId
=
carrier
.
getSpanId
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录