Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
63efb6f5
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 搜索 >>
提交
63efb6f5
编写于
9月 16, 2017
作者:
P
pengys5
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'fix/417' into fix/419
上级
db909028
204177b8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
39 addition
and
5 deletion
+39
-5
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
...kywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
+39
-5
未找到文件。
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
浏览文件 @
63efb6f5
...
...
@@ -2,6 +2,7 @@ package org.skywalking.apm.collector.ui.dao;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonObject
;
import
java.util.Iterator
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
org.elasticsearch.action.search.SearchRequestBuilder
;
...
...
@@ -14,6 +15,7 @@ import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import
org.elasticsearch.search.aggregations.metrics.sum.Sum
;
import
org.skywalking.apm.collector.core.util.ColumnNameUtils
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.core.util.ObjectUtils
;
import
org.skywalking.apm.collector.core.util.StringUtils
;
import
org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
...
...
@@ -112,13 +114,12 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
Map
<
String
,
JsonObject
>
serviceReferenceMap
=
new
LinkedHashMap
<>();
JsonArray
serviceReferenceArray
=
new
JsonArray
();
SearchResponse
searchResponse
=
searchRequestBuilder
.
get
();
Terms
frontServiceIdTerms
=
searchResponse
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
);
for
(
Terms
.
Bucket
frontServiceBucket
:
frontServiceIdTerms
.
getBuckets
())
{
int
frontServiceId
=
frontServiceBucket
.
getKeyAsNumber
().
intValue
();
if
(
frontServiceId
!=
0
)
{
parseSubAggregate
(
serviceReferenceMap
,
serviceReferenceArray
,
frontServiceBucket
,
frontServiceId
);
parseSubAggregate
(
serviceReferenceMap
,
frontServiceBucket
,
frontServiceId
);
}
}
...
...
@@ -128,15 +129,23 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
if
(
StringUtils
.
isNotEmpty
(
frontServiceName
))
{
String
[]
serviceNames
=
frontServiceName
.
split
(
Const
.
ID_SPLIT
);
int
frontServiceId
=
ServiceIdCache
.
getForUI
(
Integer
.
parseInt
(
serviceNames
[
0
]),
serviceNames
[
1
]);
parseSubAggregate
(
serviceReferenceMap
,
serviceReferenceArray
,
frontServiceBucket
,
frontServiceId
);
parseSubAggregate
(
serviceReferenceMap
,
frontServiceBucket
,
frontServiceId
);
}
}
serviceReferenceMap
.
values
().
forEach
(
serviceReferenceArray:
:
add
);
JsonArray
serviceReferenceArray
=
new
JsonArray
();
JsonObject
rootServiceReference
=
findRoot
(
serviceReferenceMap
);
if
(
ObjectUtils
.
isNotEmpty
(
rootServiceReference
))
{
String
id
=
rootServiceReference
.
get
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
))
+
Const
.
ID_SPLIT
+
rootServiceReference
.
get
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
));
serviceReferenceMap
.
remove
(
id
);
int
rootServiceId
=
rootServiceReference
.
get
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
)).
getAsInt
();
sortAsTree
(
rootServiceId
,
serviceReferenceArray
,
serviceReferenceMap
);
}
return
serviceReferenceArray
;
}
private
void
parseSubAggregate
(
Map
<
String
,
JsonObject
>
serviceReferenceMap
,
JsonArray
serviceReferenceArray
,
private
void
parseSubAggregate
(
Map
<
String
,
JsonObject
>
serviceReferenceMap
,
Terms
.
Bucket
frontServiceBucket
,
int
frontServiceId
)
{
Terms
behindServiceIdTerms
=
frontServiceBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
);
...
...
@@ -232,4 +241,29 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
long
newValue
=
newReference
.
get
(
key
).
getAsLong
();
oldReference
.
addProperty
(
key
,
oldValue
+
newValue
);
}
private
JsonObject
findRoot
(
Map
<
String
,
JsonObject
>
serviceReferenceMap
)
{
for
(
JsonObject
serviceReference
:
serviceReferenceMap
.
values
())
{
int
behindServiceId
=
serviceReference
.
get
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
)).
getAsInt
();
if
(
behindServiceId
==
1
)
{
return
serviceReference
;
}
}
return
null
;
}
private
void
sortAsTree
(
int
serviceId
,
JsonArray
serviceReferenceArray
,
Map
<
String
,
JsonObject
>
serviceReferenceMap
)
{
Iterator
<
JsonObject
>
iterator
=
serviceReferenceMap
.
values
().
iterator
();
while
(
iterator
.
hasNext
())
{
JsonObject
serviceReference
=
iterator
.
next
();
int
frontServiceId
=
serviceReference
.
get
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
)).
getAsInt
();
if
(
serviceId
==
frontServiceId
)
{
serviceReferenceArray
.
add
(
serviceReference
);
int
behindServiceId
=
serviceReference
.
get
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
)).
getAsInt
();
sortAsTree
(
behindServiceId
,
serviceReferenceArray
,
serviceReferenceMap
);
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录