Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
山不在高_有仙则灵
SkyWalking
提交
ec575ce0
S
SkyWalking
项目概览
山不在高_有仙则灵
/
SkyWalking
与 Fork 源项目一致
Fork自
apache / SkyWalking
通知
12
Star
0
Fork
2
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
ec575ce0
编写于
8月 11, 2017
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix bugs and refactor EntrySpan and Exitspan.
上级
ef8b5aaa
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
135 addition
and
63 deletion
+135
-63
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java
...org/skywalking/apm/agent/core/context/TracingContext.java
+19
-5
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
+1
-31
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
+7
-14
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/StackBasedTracingSpan.java
...g/apm/agent/core/context/trace/StackBasedTracingSpan.java
+51
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/AbstractTracingSpanHelper.java
...pm/agent/core/context/util/AbstractTracingSpanHelper.java
+2
-2
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/FieldGetter.java
...g/skywalking/apm/agent/core/context/util/FieldGetter.java
+3
-2
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/SpanHelper.java
...rg/skywalking/apm/agent/core/context/util/SpanHelper.java
+2
-2
apm-sniffer/apm-test-tools/src/main/java/org/skywalking/apm/agent/test/helper/FieldGetter.java
...ava/org/skywalking/apm/agent/test/helper/FieldGetter.java
+8
-0
apm-sniffer/apm-test-tools/src/main/java/org/skywalking/apm/agent/test/helper/SpanHelper.java
...java/org/skywalking/apm/agent/test/helper/SpanHelper.java
+42
-7
未找到文件。
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java
浏览文件 @
ec575ce0
...
...
@@ -3,6 +3,7 @@ package org.skywalking.apm.agent.core.context;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.skywalking.apm.agent.core.conf.RemoteDownstreamConfig
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan
;
import
org.skywalking.apm.agent.core.context.trace.EntrySpan
;
...
...
@@ -290,19 +291,19 @@ public class TracingContext implements AbstractTracerContext {
.
find
(
remotePeer
).
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
final
int
application
Id
)
{
public
Object
doProcess
(
final
int
peer
Id
)
{
return
DictionaryManager
.
findOperationNameCodeSection
()
.
findO
rPrepare4Register
(
applicationId
,
operationName
)
.
findO
nly
(
RemoteDownstreamConfig
.
Agent
.
APPLICATION_ID
,
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
operationId
)
{
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
operationId
,
application
Id
);
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
operationId
,
peer
Id
);
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
,
remotePeer
);
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
,
peerId
);
}
});
}
...
...
@@ -310,7 +311,20 @@ public class TracingContext implements AbstractTracerContext {
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
,
remotePeer
);
return
DictionaryManager
.
findOperationNameCodeSection
()
.
findOnly
(
RemoteDownstreamConfig
.
Agent
.
APPLICATION_ID
,
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
operationId
)
{
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
operationId
,
remotePeer
);
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
,
remotePeer
);
}
});
}
});
push
(
exitSpan
);
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/EntrySpan.java
浏览文件 @
ec575ce0
package
org.skywalking.apm.agent.core.context.trace
;
import
org.skywalking.apm.agent.core.dictionary.DictionaryManager
;
import
org.skywalking.apm.agent.core.dictionary.DictionaryUtil
;
import
org.skywalking.apm.agent.core.dictionary.PossibleFound
;
import
org.skywalking.apm.network.trace.component.Component
;
/**
...
...
@@ -18,19 +16,16 @@ import org.skywalking.apm.network.trace.component.Component;
*
* @author wusheng
*/
public
class
EntrySpan
extends
AbstractTracingSpan
{
private
int
stackDepth
;
public
class
EntrySpan
extends
StackBasedTracingSpan
{
private
int
currentMaxDepth
;
public
EntrySpan
(
int
spanId
,
int
parentSpanId
,
String
operationName
)
{
super
(
spanId
,
parentSpanId
,
operationName
);
this
.
stackDepth
=
0
;
this
.
currentMaxDepth
=
0
;
}
public
EntrySpan
(
int
spanId
,
int
parentSpanId
,
int
operationId
)
{
super
(
spanId
,
parentSpanId
,
operationId
);
this
.
stackDepth
=
0
;
this
.
currentMaxDepth
=
0
;
}
...
...
@@ -81,31 +76,6 @@ public class EntrySpan extends AbstractTracingSpan {
}
}
@Override
public
boolean
finish
(
TraceSegment
owner
)
{
if
(--
stackDepth
==
0
)
{
if
(
this
.
operationId
==
DictionaryUtil
.
nullValue
())
{
this
.
operationId
=
(
Integer
)
DictionaryManager
.
findOperationNameCodeSection
()
.
findOrPrepare4Register
(
owner
.
getApplicationId
(),
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
value
)
{
return
value
;
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
DictionaryUtil
.
nullValue
();
}
}
);
}
return
super
.
finish
(
owner
);
}
else
{
return
false
;
}
}
@Override
public
AbstractTracingSpan
setOperationName
(
String
operationName
)
{
if
(
stackDepth
==
currentMaxDepth
)
{
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java
浏览文件 @
ec575ce0
...
...
@@ -17,32 +17,34 @@ import org.skywalking.apm.network.trace.component.Component;
*
* @author wusheng
*/
public
class
ExitSpan
extends
AbstractTracingSpan
{
private
int
stackDepth
;
public
class
ExitSpan
extends
StackBasedTracingSpan
{
private
String
peer
;
private
int
peerId
;
public
ExitSpan
(
int
spanId
,
int
parentSpanId
,
String
operationName
,
String
peer
)
{
super
(
spanId
,
parentSpanId
,
operationName
);
this
.
stackDepth
=
0
;
this
.
peer
=
peer
;
this
.
peerId
=
DictionaryUtil
.
nullValue
();
}
public
ExitSpan
(
int
spanId
,
int
parentSpanId
,
int
operationId
,
int
peerId
)
{
super
(
spanId
,
parentSpanId
,
operationId
);
this
.
stackDepth
=
0
;
this
.
peer
=
null
;
this
.
peerId
=
peerId
;
}
public
ExitSpan
(
int
spanId
,
int
parentSpanId
,
int
operationId
,
String
peer
)
{
super
(
spanId
,
parentSpanId
,
operationId
);
this
.
stackDepth
=
0
;
this
.
peer
=
peer
;
this
.
peerId
=
DictionaryUtil
.
nullValue
();
}
public
ExitSpan
(
int
spanId
,
int
parentSpanId
,
String
operationName
,
int
peerId
)
{
super
(
spanId
,
parentSpanId
,
operationName
);
this
.
peer
=
null
;
this
.
peerId
=
peerId
;
}
/**
* Set the {@link #startTime}, when the first start, which means the first service provided.
*/
...
...
@@ -62,15 +64,6 @@ public class ExitSpan extends AbstractTracingSpan {
return
this
;
}
@Override
public
boolean
finish
(
TraceSegment
owner
)
{
if
(--
stackDepth
==
0
)
{
return
super
.
finish
(
owner
);
}
else
{
return
false
;
}
}
@Override
public
AbstractTracingSpan
setLayer
(
SpanLayer
layer
)
{
if
(
stackDepth
==
1
)
{
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/StackBasedTracingSpan.java
0 → 100644
浏览文件 @
ec575ce0
package
org.skywalking.apm.agent.core.context.trace
;
import
org.skywalking.apm.agent.core.dictionary.DictionaryManager
;
import
org.skywalking.apm.agent.core.dictionary.DictionaryUtil
;
import
org.skywalking.apm.agent.core.dictionary.PossibleFound
;
/**
* The <code>StackBasedTracingSpan</code> represents a span with an inside stack construction.
*
* This kind of span can start and finish multi times in a stack-like invoke line.
*
* @author wusheng
*/
public
abstract
class
StackBasedTracingSpan
extends
AbstractTracingSpan
{
protected
int
stackDepth
;
protected
StackBasedTracingSpan
(
int
spanId
,
int
parentSpanId
,
String
operationName
)
{
super
(
spanId
,
parentSpanId
,
operationName
);
this
.
stackDepth
=
0
;
}
protected
StackBasedTracingSpan
(
int
spanId
,
int
parentSpanId
,
int
operationId
)
{
super
(
spanId
,
parentSpanId
,
operationId
);
this
.
stackDepth
=
0
;
}
@Override
public
boolean
finish
(
TraceSegment
owner
)
{
if
(--
stackDepth
==
0
)
{
if
(
this
.
operationId
==
DictionaryUtil
.
nullValue
())
{
this
.
operationId
=
(
Integer
)
DictionaryManager
.
findOperationNameCodeSection
()
.
findOrPrepare4Register
(
owner
.
getApplicationId
(),
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
value
)
{
return
value
;
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
DictionaryUtil
.
nullValue
();
}
}
);
}
return
super
.
finish
(
owner
);
}
else
{
return
false
;
}
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/AbstractTracingSpanHelper.java
浏览文件 @
ec575ce0
...
...
@@ -8,7 +8,7 @@ import org.skywalking.apm.agent.core.context.trace.LogDataEntity;
public
class
AbstractTracingSpanHelper
{
public
static
int
getParentSpanId
(
AbstractTracingSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"parentSpanId"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"parentSpanId"
);
}
catch
(
Exception
e
)
{
}
...
...
@@ -17,7 +17,7 @@ public class AbstractTracingSpanHelper {
public
static
List
<
LogDataEntity
>
getLogs
(
AbstractTracingSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"logs"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"logs"
);
}
catch
(
Exception
e
)
{
}
...
...
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/FieldGetter.java
浏览文件 @
ec575ce0
...
...
@@ -10,9 +10,10 @@ public class FieldGetter {
return
(
T
)
field
.
get
(
instance
);
}
public
static
<
T
>
T
getParentFieldValue
(
Object
instance
,
public
static
<
T
>
T
get2LevelParentFieldValue
(
Object
instance
,
String
fieldName
)
throws
IllegalAccessException
,
NoSuchFieldException
{
Field
field
=
instance
.
getClass
().
getSuperclass
().
getDeclaredField
(
fieldName
);
Field
field
=
instance
.
getClass
().
getSuperclass
().
get
Superclass
().
get
DeclaredField
(
fieldName
);
field
.
setAccessible
(
true
);
return
(
T
)
field
.
get
(
instance
);
}
...
...
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/SpanHelper.java
浏览文件 @
ec575ce0
...
...
@@ -7,7 +7,7 @@ public class SpanHelper {
public
static
SpanLayer
getLayer
(
AbstractSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"layer"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"layer"
);
}
catch
(
Exception
e
)
{
}
...
...
@@ -16,7 +16,7 @@ public class SpanHelper {
public
static
int
getComponentId
(
AbstractSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"componentId"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"componentId"
);
}
catch
(
Exception
e
)
{
}
...
...
apm-sniffer/apm-test-tools/src/main/java/org/skywalking/apm/agent/test/helper/FieldGetter.java
浏览文件 @
ec575ce0
...
...
@@ -16,4 +16,12 @@ public class FieldGetter {
field
.
setAccessible
(
true
);
return
(
T
)
field
.
get
(
instance
);
}
public
static
<
T
>
T
get2LevelParentFieldValue
(
Object
instance
,
String
fieldName
)
throws
IllegalAccessException
,
NoSuchFieldException
{
Field
field
=
instance
.
getClass
().
getSuperclass
().
getSuperclass
().
getDeclaredField
(
fieldName
);
field
.
setAccessible
(
true
);
return
(
T
)
field
.
get
(
instance
);
}
}
apm-sniffer/apm-test-tools/src/main/java/org/skywalking/apm/agent/test/helper/SpanHelper.java
浏览文件 @
ec575ce0
...
...
@@ -10,8 +10,13 @@ import org.skywalking.apm.agent.core.context.util.KeyValuePair;
public
class
SpanHelper
{
public
static
int
getParentSpanId
(
AbstractSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"parentSpanId"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"parentSpanId"
);
}
catch
(
Exception
e
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"parentSpanId"
);
}
catch
(
Exception
e1
)
{
}
}
return
-
9999
;
...
...
@@ -19,8 +24,13 @@ public class SpanHelper {
public
static
List
<
LogDataEntity
>
getLogs
(
AbstractSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"logs"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"logs"
);
}
catch
(
Exception
e
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"logs"
);
}
catch
(
Exception
e1
)
{
}
}
return
Collections
.
emptyList
();
...
...
@@ -28,8 +38,13 @@ public class SpanHelper {
public
static
List
<
KeyValuePair
>
getTags
(
AbstractSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"tags"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"tags"
);
}
catch
(
Exception
e
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"tags"
);
}
catch
(
Exception
e1
)
{
}
}
return
Collections
.
emptyList
();
...
...
@@ -37,8 +52,13 @@ public class SpanHelper {
public
static
SpanLayer
getLayer
(
AbstractSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"layer"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"layer"
);
}
catch
(
Exception
e
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"layer"
);
}
catch
(
Exception
e1
)
{
}
}
return
null
;
...
...
@@ -46,8 +66,13 @@ public class SpanHelper {
public
static
String
getComponentName
(
AbstractSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"componentName"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"componentName"
);
}
catch
(
Exception
e
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"componentName"
);
}
catch
(
Exception
e1
)
{
}
}
return
null
;
...
...
@@ -55,8 +80,13 @@ public class SpanHelper {
public
static
int
getComponentId
(
AbstractSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"componentId"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"componentId"
);
}
catch
(
Exception
e
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"componentId"
);
}
catch
(
Exception
e1
)
{
}
}
return
-
1
;
...
...
@@ -64,8 +94,13 @@ public class SpanHelper {
public
static
boolean
getErrorOccurred
(
AbstractSpan
tracingSpan
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"errorOccurred"
);
return
FieldGetter
.
get
2Level
ParentFieldValue
(
tracingSpan
,
"errorOccurred"
);
}
catch
(
Exception
e
)
{
try
{
return
FieldGetter
.
getParentFieldValue
(
tracingSpan
,
"errorOccurred"
);
}
catch
(
Exception
e1
)
{
}
}
return
false
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录