Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
skywalking-cli
提交
8d67d80e
S
skywalking-cli
项目概览
apache
/
skywalking-cli
通知
19
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skywalking-cli
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
8d67d80e
编写于
9月 02, 2020
作者:
H
huawei
提交者:
GitHub
9月 02, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update code style (#61)
上级
1ccc486f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
59 addition
and
4 deletion
+59
-4
display/graph/tree/adapter.go
display/graph/tree/adapter.go
+59
-4
未找到文件。
display/graph/tree/adapter.go
浏览文件 @
8d67d80e
...
...
@@ -28,13 +28,16 @@ import (
func
Adapt
(
trace
schema
.
Trace
)
(
roots
[]
*
Node
,
serviceNames
[]
string
)
{
all
:=
make
(
map
[
string
]
*
Node
)
set
:=
make
(
map
[
string
]
bool
)
var
traceID
string
for
_
,
span
:=
range
trace
.
Spans
{
if
!
set
[
span
.
ServiceCode
]
{
serviceNames
=
append
(
serviceNames
,
span
.
ServiceCode
)
set
[
span
.
ServiceCode
]
=
true
}
all
[
id
(
span
)]
=
node
(
span
)
if
traceID
==
""
{
traceID
=
span
.
TraceID
}
}
seen
:=
make
(
map
[
string
]
bool
)
...
...
@@ -44,8 +47,33 @@ func Adapt(trace schema.Trace) (roots []*Node, serviceNames []string) {
roots
=
append
(
roots
,
all
[
id
(
span
)])
seen
[
id
(
span
)]
=
true
}
for
_
,
ref
:=
range
span
.
Refs
{
if
all
[
id0
(
ref
)]
==
nil
{
for
i
:=
0
;
i
<=
ref
.
ParentSpanID
;
i
++
{
if
traceID
!=
ref
.
TraceID
{
continue
}
virtualSpan
:=
virtualSpan
(
i
,
*
ref
)
if
all
[
id
(
virtualSpan
)]
!=
nil
{
continue
}
all
[
id
(
virtualSpan
)]
=
node
(
virtualSpan
)
if
i
==
0
{
roots
=
append
(
roots
,
all
[
id
(
virtualSpan
)])
seen
[
id
(
virtualSpan
)]
=
true
}
else
if
all
[
id1
(
ref
)]
!=
nil
{
all
[
id1
(
ref
)]
.
Children
=
append
(
all
[
id1
(
ref
)]
.
Children
,
all
[
id
(
virtualSpan
)])
seen
[
id
(
virtualSpan
)]
=
true
}
}
}
}
}
buildTree
(
all
,
seen
,
trace
)
return
roots
,
serviceNames
}
func
buildTree
(
all
map
[
string
]
*
Node
,
seen
map
[
string
]
bool
,
trace
schema
.
Trace
)
{
for
len
(
seen
)
<
len
(
trace
.
Spans
)
{
for
_
,
span
:=
range
trace
.
Spans
{
if
seen
[
id
(
span
)]
{
...
...
@@ -58,15 +86,38 @@ func Adapt(trace schema.Trace) (roots []*Node, serviceNames []string) {
}
for
_
,
ref
:=
range
span
.
Refs
{
if
all
[
id0
(
ref
)]
!=
nil
{
all
[
id0
(
ref
)]
.
Children
=
append
(
all
[
id0
(
ref
)]
.
Children
,
all
[
id
(
span
)])
refData
:=
all
[
id0
(
ref
)]
if
refData
!=
nil
{
refData
.
Children
=
append
(
refData
.
Children
,
all
[
id
(
span
)])
seen
[
id
(
span
)]
=
true
}
}
}
}
}
return
roots
,
serviceNames
func
virtualSpan
(
spanID
int
,
ref
schema
.
Ref
)
*
schema
.
Span
{
endpointName
:=
fmt
.
Sprintf
(
"VNode: %s"
,
ref
.
ParentSegmentID
)
component
:=
fmt
.
Sprintf
(
"VirtualNode: #%d"
,
spanID
)
peer
:=
"No Peer"
fail
:=
true
layer
:=
"Broken"
span
:=
schema
.
Span
{
TraceID
:
ref
.
TraceID
,
SegmentID
:
ref
.
ParentSegmentID
,
SpanID
:
spanID
,
ParentSpanID
:
spanID
-
1
,
EndpointName
:
&
endpointName
,
ServiceCode
:
"VirtualNode"
,
Type
:
fmt
.
Sprintf
(
"[Broken] %s"
,
ref
.
Type
),
Peer
:
&
peer
,
Component
:
&
component
,
IsError
:
&
fail
,
Layer
:
&
layer
,
Tags
:
nil
,
Logs
:
nil
,
}
return
&
span
}
func
isRoot
(
span
*
schema
.
Span
)
bool
{
...
...
@@ -85,6 +136,10 @@ func id0(ref *schema.Ref) string {
return
fmt
.
Sprintf
(
"%s:%s:%d"
,
ref
.
TraceID
,
ref
.
ParentSegmentID
,
ref
.
ParentSpanID
)
}
func
id1
(
ref
*
schema
.
Ref
)
string
{
return
fmt
.
Sprintf
(
"%s:%s:%d"
,
ref
.
TraceID
,
ref
.
ParentSegmentID
,
ref
.
ParentSpanID
-
1
)
}
func
node
(
span
*
schema
.
Span
)
*
Node
{
return
&
Node
{
Children
:
[]
*
Node
{},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录