Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
9a6484af
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 搜索 >>
提交
9a6484af
编写于
7月 02, 2017
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor create span methods
上级
18fed69e
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
86 addition
and
98 deletion
+86
-98
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/AbstractTracerContext.java
...walking/apm/agent/core/context/AbstractTracerContext.java
+4
-3
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java
...org/skywalking/apm/agent/core/context/ContextManager.java
+9
-10
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/IgnoredTracerContext.java
...ywalking/apm/agent/core/context/IgnoredTracerContext.java
+10
-4
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java
...org/skywalking/apm/agent/core/context/TracingContext.java
+63
-71
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SpanType.java
...org/skywalking/apm/agent/core/context/trace/SpanType.java
+0
-10
未找到文件。
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/AbstractTracerContext.java
浏览文件 @
9a6484af
package
org.skywalking.apm.agent.core.context
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.skywalking.apm.agent.core.context.trace.SpanType
;
/**
* The <code>AbstractTracerContext</code> represents the tracer context manager.
...
...
@@ -15,9 +14,11 @@ public interface AbstractTracerContext {
String
getGlobalTraceId
();
AbstractSpan
create
Span
(
String
operationName
,
SpanType
spanTyp
e
);
AbstractSpan
create
EntrySpan
(
String
operationNam
e
);
AbstractSpan
createSpan
(
String
operationName
,
SpanType
spanType
,
Injectable
injectable
);
AbstractSpan
createLocalSpan
(
String
operationName
);
AbstractSpan
createExitSpan
(
String
operationName
,
String
remotePeer
);
AbstractSpan
activeSpan
();
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/ContextManager.java
浏览文件 @
9a6484af
...
...
@@ -5,7 +5,6 @@ import org.skywalking.apm.agent.core.boot.ServiceManager;
import
org.skywalking.apm.agent.core.conf.Config
;
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.SpanType
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
import
org.skywalking.apm.agent.core.dictionary.DictionaryUtil
;
import
org.skywalking.apm.agent.core.sampling.SamplingService
;
...
...
@@ -77,7 +76,7 @@ public class ContextManager implements TracingContextListener, BootService, Igno
}
}
public
static
AbstractSpan
createSpan
(
String
operationName
,
ContextCarrier
carrier
)
{
public
static
AbstractSpan
create
Entry
Span
(
String
operationName
,
ContextCarrier
carrier
)
{
if
(
carrier
==
null
)
{
throw
new
IllegalArgumentException
(
"ContextCarrier can't be null."
);
}
...
...
@@ -90,21 +89,21 @@ public class ContextManager implements TracingContextListener, BootService, Igno
}
else
{
context
=
getOrCreate
(
operationName
,
false
);
}
return
context
.
create
Span
(
operationName
,
SpanType
.
ENTRY
);
return
context
.
create
EntrySpan
(
operationName
);
}
public
static
AbstractSpan
createSpan
(
String
operationName
)
{
public
static
AbstractSpan
create
Local
Span
(
String
operationName
)
{
AbstractTracerContext
context
=
getOrCreate
(
operationName
,
false
);
return
context
.
create
Span
(
operationName
,
SpanType
.
LOCAL
);
return
context
.
create
LocalSpan
(
operationName
);
}
public
static
AbstractSpan
create
Span
(
String
operationName
,
Injectable
injectable
)
{
if
(
injectable
==
null
)
{
throw
new
IllegalArgumentException
(
"
Injectable
can't be null."
);
public
static
AbstractSpan
create
ExitSpan
(
String
operationName
,
ContextCarrier
carrier
,
String
remotePeer
)
{
if
(
carrier
==
null
)
{
throw
new
IllegalArgumentException
(
"
ContextCarrier
can't be null."
);
}
AbstractTracerContext
context
=
getOrCreate
(
operationName
,
false
);
AbstractSpan
span
=
context
.
create
Span
(
operationName
,
SpanType
.
EXIT
);
context
.
inject
(
injectable
.
getCarrier
()
);
AbstractSpan
span
=
context
.
create
ExitSpan
(
operationName
,
remotePeer
);
context
.
inject
(
carrier
);
return
span
;
}
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/IgnoredTracerContext.java
浏览文件 @
9a6484af
...
...
@@ -4,7 +4,6 @@ import java.util.LinkedList;
import
java.util.List
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.skywalking.apm.agent.core.context.trace.NoopSpan
;
import
org.skywalking.apm.agent.core.context.trace.SpanType
;
/**
* The <code>IgnoredTracerContext</code> represent a context should be ignored.
...
...
@@ -38,12 +37,19 @@ public class IgnoredTracerContext implements AbstractTracerContext {
}
@Override
public
AbstractSpan
createSpan
(
String
operationName
,
SpanType
spanType
)
{
return
createSpan
(
operationName
,
spanType
,
null
);
public
AbstractSpan
createEntrySpan
(
String
operationName
)
{
stackDepth
++;
return
NOOP_SPAN
;
}
@Override
public
AbstractSpan
createLocalSpan
(
String
operationName
)
{
stackDepth
++;
return
NOOP_SPAN
;
}
@Override
public
AbstractSpan
create
Span
(
String
operationName
,
SpanType
spanType
,
Injectable
injectable
)
{
public
AbstractSpan
create
ExitSpan
(
String
operationName
,
String
remotePeer
)
{
stackDepth
++;
return
NOOP_SPAN
;
}
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java
浏览文件 @
9a6484af
...
...
@@ -8,7 +8,6 @@ import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan;
import
org.skywalking.apm.agent.core.context.trace.EntrySpan
;
import
org.skywalking.apm.agent.core.context.trace.ExitSpan
;
import
org.skywalking.apm.agent.core.context.trace.LocalSpan
;
import
org.skywalking.apm.agent.core.context.trace.SpanType
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegmentRef
;
import
org.skywalking.apm.agent.core.dictionary.DictionaryManager
;
...
...
@@ -77,88 +76,81 @@ public class TracingContext implements AbstractTracerContext {
}
@Override
public
AbstractSpan
createSpan
(
String
operationName
,
SpanType
spanType
)
{
return
createSpan
(
operationName
,
spanType
,
null
);
public
AbstractSpan
createEntrySpan
(
final
String
operationName
)
{
AbstractTracingSpan
parentSpan
=
peek
();
final
int
parentSpanId
=
parentSpan
==
null
?
-
1
:
parentSpan
.
getSpanId
();
if
(
parentSpan
==
null
)
{
return
(
AbstractTracingSpan
)
DictionaryManager
.
findOperationNameCodeSection
()
.
find
(
segment
.
getApplicationId
(),
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
operationId
)
{
return
new
EntrySpan
(
spanIdGenerator
++,
parentSpanId
,
operationId
);
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
EntrySpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
);
}
});
}
else
if
(
parentSpan
.
isEntry
())
{
return
parentSpan
;
}
else
{
throw
new
IllegalStateException
(
"The Entry Span can't be the child of Non-Entry Span"
);
}
}
@Override
public
AbstractSpan
create
Span
(
String
operationName
,
SpanType
spanType
,
Injectable
injectabl
e
)
{
public
AbstractSpan
create
LocalSpan
(
final
String
operationNam
e
)
{
AbstractTracingSpan
parentSpan
=
peek
();
AbstractTracingSpan
span
=
createByType
(
spanIdGenerator
++,
-
1
,
operationName
,
spanType
,
injectable
.
getPeer
(),
parentSpan
);
return
span
.
start
();
final
int
parentSpanId
=
parentSpan
==
null
?
-
1
:
parentSpan
.
getSpanId
();
return
(
AbstractTracingSpan
)
DictionaryManager
.
findOperationNameCodeSection
()
.
find
(
segment
.
getApplicationId
(),
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
operationId
)
{
return
new
LocalSpan
(
spanIdGenerator
++,
parentSpanId
,
operationId
);
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
LocalSpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
);
}
});
}
private
AbstractTracingSpan
createByType
(
final
int
spanId
,
final
int
parentSpanId
,
final
String
operationName
,
SpanType
spanType
,
final
String
peerHost
,
AbstractTracingSpan
parentSpan
)
{
switch
(
spanType
)
{
case
LOCAL:
return
(
AbstractTracingSpan
)
DictionaryManager
.
findOperationNameCodeSection
()
.
find
(
segment
.
getApplicationId
(),
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
AbstractSpan
createExitSpan
(
final
String
operationName
,
final
String
remotePeer
)
{
AbstractTracingSpan
parentSpan
=
peek
();
if
(
parentSpan
!=
null
&&
parentSpan
.
isExit
())
{
return
parentSpan
;
}
else
{
final
int
parentSpanId
=
parentSpan
==
null
?
-
1
:
parentSpan
.
getSpanId
();
return
(
AbstractTracingSpan
)
DictionaryManager
.
findApplicationCodeSection
()
.
find
(
remotePeer
).
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
operationId
)
{
return
new
LocalSpan
(
spanId
,
parentSpanId
,
operationId
);
public
Object
doProcess
(
final
int
applicationId
)
{
return
DictionaryManager
.
findOperationNameCodeSection
()
.
find
(
applicationId
,
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
peerId
)
{
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
applicationId
,
peerId
);
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
applicationId
,
remotePeer
);
}
});
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
LocalSpan
(
spanId
,
parentSpanId
,
operationName
);
return
new
ExitSpan
(
spanIdGenerator
++,
parentSpanId
,
operationName
,
remotePeer
);
}
});
case
EXIT:
if
(
parentSpan
!=
null
&&
parentSpan
.
isExit
())
{
return
parentSpan
;
}
else
{
return
(
AbstractTracingSpan
)
DictionaryManager
.
findApplicationCodeSection
()
.
find
(
peerHost
).
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
final
int
applicationId
)
{
return
DictionaryManager
.
findOperationNameCodeSection
()
.
find
(
applicationId
,
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
peerId
)
{
return
new
ExitSpan
(
spanId
,
parentSpanId
,
applicationId
,
peerId
);
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
ExitSpan
(
spanId
,
parentSpanId
,
applicationId
,
peerHost
);
}
});
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
ExitSpan
(
spanId
,
parentSpanId
,
operationName
,
peerHost
);
}
});
}
case
ENTRY:
if
(
parentSpan
.
isEntry
())
{
return
parentSpan
;
}
else
if
(
parentSpan
==
null
)
{
return
(
AbstractTracingSpan
)
DictionaryManager
.
findOperationNameCodeSection
()
.
find
(
segment
.
getApplicationId
(),
operationName
)
.
doInCondition
(
new
PossibleFound
.
FoundAndObtain
()
{
@Override
public
Object
doProcess
(
int
operationId
)
{
return
new
EntrySpan
(
spanId
,
parentSpanId
,
operationId
);
}
},
new
PossibleFound
.
NotFoundAndObtain
()
{
@Override
public
Object
doProcess
()
{
return
new
EntrySpan
(
spanId
,
parentSpanId
,
operationName
);
}
});
}
else
{
throw
new
IllegalStateException
(
"The Entry Span can't be the child of Non-Entry Span"
);
}
default
:
throw
new
IllegalStateException
(
"Unsupported Span type:"
+
spanType
);
}
}
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/SpanType.java
已删除
100644 → 0
浏览文件 @
18fed69e
package
org.skywalking.apm.agent.core.context.trace
;
/**
* @author wusheng
*/
public
enum
SpanType
{
ENTRY
,
EXIT
,
LOCAL
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录