Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
7cf00e57
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7cf00e57
编写于
6月 02, 2013
作者:
Y
yong.you
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add problem info to dependency
上级
7443ce46
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
250 addition
and
127 deletion
+250
-127
cat-home/src/main/java/com/dianping/cat/report/page/dependency/Handler.java
...java/com/dianping/cat/report/page/dependency/Handler.java
+182
-111
cat-home/src/main/java/com/dianping/cat/report/page/dependency/ProblemReportVistor.java
...nping/cat/report/page/dependency/ProblemReportVistor.java
+38
-0
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphBuilder.java
...at/report/page/dependency/graph/TopologyGraphBuilder.java
+3
-1
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java
...at/report/page/dependency/graph/TopologyGraphManager.java
+21
-10
cat-home/src/main/resources/META-INF/plexus/components.xml
cat-home/src/main/resources/META-INF/plexus/components.xml
+6
-5
未找到文件。
cat-home/src/main/java/com/dianping/cat/report/page/dependency/Handler.java
浏览文件 @
7cf00e57
package
com.dianping.cat.report.page.dependency
;
import
java.io.IOException
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
...
...
@@ -23,14 +24,17 @@ import com.dianping.cat.consumer.dependency.model.entity.Dependency;
import
com.dianping.cat.consumer.dependency.model.entity.DependencyReport
;
import
com.dianping.cat.consumer.dependency.model.entity.Index
;
import
com.dianping.cat.consumer.dependency.model.entity.Segment
;
import
com.dianping.cat.consumer.problem.model.entity.ProblemReport
;
import
com.dianping.cat.helper.TimeUtil
;
import
com.dianping.cat.home.dal.report.Event
;
import
com.dianping.cat.home.dependency.graph.entity.Node
;
import
com.dianping.cat.home.dependency.graph.entity.TopologyGraph
;
import
com.dianping.cat.home.dependency.graph.transform.DefaultJsonBuilder
;
import
com.dianping.cat.report.ReportPage
;
import
com.dianping.cat.report.page.LineChart
;
import
com.dianping.cat.report.page.PayloadNormalizer
;
import
com.dianping.cat.report.page.dependency.graph.LineGraphBuilder
;
import
com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder
;
import
com.dianping.cat.report.page.dependency.graph.TopologyGraphManager
;
import
com.dianping.cat.report.page.externalError.EventCollectManager
;
import
com.dianping.cat.report.page.model.dependency.DependencyReportMerger
;
...
...
@@ -46,7 +50,7 @@ public class Handler implements PageHandler<Context> {
private
EventCollectManager
m_manager
;
@Inject
(
type
=
ModelService
.
class
,
value
=
"dependency"
)
private
ModelService
<
DependencyReport
>
m_
s
ervice
;
private
ModelService
<
DependencyReport
>
m_
dependencyS
ervice
;
@Inject
private
PayloadNormalizer
m_normalizePayload
;
...
...
@@ -54,55 +58,82 @@ public class Handler implements PageHandler<Context> {
@Inject
private
TopologyGraphManager
m_graphManager
;
private
DependencyReport
getReport
(
Payload
payload
)
{
String
domain
=
payload
.
getDomain
();
String
date
=
String
.
valueOf
(
payload
.
getDate
());
ModelRequest
request
=
new
ModelRequest
(
domain
,
payload
.
getPeriod
())
//
.
setProperty
(
"date"
,
date
);
@Inject
(
type
=
ModelService
.
class
,
value
=
"problem"
)
private
ModelService
<
ProblemReport
>
m_problemservice
;
if
(
m_service
.
isEligable
(
request
))
{
ModelResponse
<
DependencyReport
>
response
=
m_service
.
invoke
(
request
);
DependencyReport
report
=
response
.
getModel
();
private
SimpleDateFormat
m_sdf
=
new
SimpleDateFormat
(
"HH:mm"
);
Date
start
=
report
.
getStartTime
();
if
(
start
==
null
)
{
report
.
setStartTime
(
new
Date
(
payload
.
getDate
()));
report
.
setStartTime
(
new
Date
(
payload
.
getDate
()+
TimeUtil
.
ONE_HOUR
));
private
SimpleDateFormat
m_dateFormat
=
new
SimpleDateFormat
(
"yyyyMMddHH"
);
private
Segment
buildAllSegment
(
DependencyReport
report
)
{
Segment
result
=
new
Segment
();
Map
<
Integer
,
Segment
>
segments
=
report
.
getSegments
();
DependencyReportMerger
merger
=
new
DependencyReportMerger
(
null
);
for
(
Segment
segment
:
segments
.
values
())
{
Map
<
String
,
Dependency
>
dependencies
=
segment
.
getDependencies
();
Map
<
String
,
Index
>
indexs
=
segment
.
getIndexs
();
for
(
Index
index
:
indexs
.
values
())
{
Index
temp
=
result
.
findOrCreateIndex
(
index
.
getName
());
merger
.
mergeIndex
(
temp
,
index
);
}
for
(
Dependency
dependency
:
dependencies
.
values
())
{
Dependency
temp
=
result
.
findOrCreateDependency
(
dependency
.
getKey
());
merger
.
mergeDependency
(
temp
,
dependency
);
}
return
report
;
}
else
{
throw
new
RuntimeException
(
"Internal error: no eligable dependency service registered for "
+
request
+
"!"
);
}
return
result
;
}
@Override
@PayloadMeta
(
Payload
.
class
)
@InboundActionMeta
(
name
=
"dependency"
)
public
void
handleInbound
(
Context
ctx
)
throws
ServletException
,
IOException
{
private
void
buildGraphByEvent
(
TopologyGraph
graph
,
Map
<
String
,
List
<
Event
>>
events
)
{
for
(
Entry
<
String
,
List
<
Event
>>
entry
:
events
.
entrySet
())
{
List
<
Event
>
eventList
=
entry
.
getValue
();
for
(
Event
event
:
eventList
)
{
Node
node
=
graph
.
findNode
(
event
.
getDomain
());
if
(
node
!=
null
)
{
String
des
=
node
.
getDes
();
des
=
"</br>"
+
m_sdf
.
format
(
event
.
getDate
())
+
" "
+
event
.
getSubject
();
node
.
setDes
(
des
);
}
}
}
}
@Override
@OutboundActionMeta
(
name
=
"dependency"
)
public
void
handleOutbound
(
Context
ctx
)
throws
ServletException
,
IOException
{
Model
model
=
new
Model
(
ctx
);
Payload
payload
=
ctx
.
getPayload
();
private
void
buildGraphExtraInfo
(
Payload
payload
,
TopologyGraph
graph
)
{
for
(
Node
node
:
graph
.
getNodes
().
values
())
{
if
(
node
.
getType
().
equals
(
TopologyGraphItemBuilder
.
PROJECT
))
{
node
.
setLink
(
buildLink
(
payload
,
node
.
getId
()));
normalize
(
model
,
payload
);
if
(
node
.
getStatus
()
!=
TopologyGraphItemBuilder
.
OK
)
{
String
problemInfo
=
buildProblemInfo
(
node
.
getId
(),
payload
);
Action
action
=
payload
.
getAction
();
node
.
setDes
(
node
.
getDes
()
+
problemInfo
);
}
}
}
}
DependencyReport
report
=
getReport
(
payload
);
switch
(
action
)
{
case
GRAPH:
buildHourlyReport
(
report
,
model
,
payload
);
buildHourlyTopologyGraph
(
model
,
payload
);
break
;
case
VIEW:
buildHourlyReport
(
report
,
model
,
payload
);
buildHourlyLineGraph
(
report
,
model
);
break
;
private
List
<
String
>
buildGraphList
(
List
<
LineChart
>
charts
)
{
List
<
String
>
result
=
new
ArrayList
<
String
>();
for
(
LineChart
temp
:
charts
)
{
result
.
add
(
temp
.
getJsonString
());
}
m_jspViewer
.
view
(
ctx
,
model
);
return
result
;
}
private
Map
<
String
,
List
<
String
>>
buildGraphMap
(
Map
<
String
,
List
<
LineChart
>>
charts
)
{
Map
<
String
,
List
<
String
>>
result
=
new
HashMap
<
String
,
List
<
String
>>();
for
(
Entry
<
String
,
List
<
LineChart
>>
temp
:
charts
.
entrySet
())
{
result
.
put
(
temp
.
getKey
(),
buildGraphList
(
temp
.
getValue
()));
}
return
result
;
}
private
void
buildHourlyLineGraph
(
DependencyReport
report
,
Model
model
)
{
...
...
@@ -117,31 +148,38 @@ public class Handler implements PageHandler<Context> {
model
.
setDependencyGraph
(
buildGraphMap
(
dependencys
));
}
private
Map
<
String
,
List
<
String
>>
buildGraphMap
(
Map
<
String
,
List
<
LineChart
>>
charts
)
{
Map
<
String
,
List
<
String
>>
result
=
new
HashMap
<
String
,
List
<
String
>>();
for
(
Entry
<
String
,
List
<
LineChart
>>
temp
:
charts
.
entrySet
())
{
result
.
put
(
temp
.
getKey
(),
buildGraphList
(
temp
.
getValue
()));
}
return
result
;
}
private
void
buildHourlyReport
(
DependencyReport
report
,
Model
model
,
Payload
payload
)
{
Date
reportTime
=
new
Date
(
payload
.
getDate
()
+
TimeUtil
.
ONE_MINUTE
*
model
.
getMinute
());
Segment
segment
=
report
.
findSegment
(
model
.
getMinute
());
private
List
<
String
>
buildGraphList
(
List
<
LineChart
>
charts
)
{
List
<
String
>
result
=
new
ArrayList
<
String
>(
);
model
.
setReport
(
report
);
model
.
setSegment
(
segment
);
for
(
LineChart
temp
:
charts
)
{
result
.
add
(
temp
.
getJsonString
(
));
if
(
payload
.
isAll
()
)
{
model
.
setSegment
(
buildAllSegment
(
report
));
}
return
result
;
model
.
setEvents
(
queryDependencyEvent
(
segment
,
payload
.
getDomain
(),
reportTime
))
;
}
private
void
buildHourlyTopologyGraph
(
Model
model
,
Payload
payload
)
{
private
TopologyGraph
buildHourlyTopologyGraph
(
Model
model
,
Payload
payload
)
{
long
time
=
payload
.
getDate
()
+
TimeUtil
.
ONE_MINUTE
*
computeMinute
(
payload
);
String
domain
=
payload
.
getDomain
();
TopologyGraph
graph
=
m_graphManager
.
buildGraphByDomainTime
(
domain
,
time
);
String
json
=
new
DefaultJsonBuilder
().
buildJson
(
graph
);
return
m_graphManager
.
buildGraphByDomainTime
(
domain
,
time
);
}
model
.
setTopologyGraph
(
json
);
private
String
buildLink
(
Payload
payload
,
String
domain
)
{
return
String
.
format
(
"?op=graph&minute=%s&domain=%s&date=%s"
,
payload
.
getMinute
(),
domain
,
m_dateFormat
.
format
(
new
Date
(
payload
.
getDate
())));
}
private
String
buildProblemInfo
(
String
domain
,
Payload
payload
)
{
ProblemReport
report
=
queryProblemReport
(
payload
,
domain
);
ProblemReportVistor
visitor
=
new
ProblemReportVistor
();
visitor
.
visitProblemReport
(
report
);
String
result
=
visitor
.
buildResult
();
System
.
out
.
println
(
result
);
return
result
;
}
private
int
computeMinute
(
Payload
payload
)
{
...
...
@@ -158,39 +196,82 @@ public class Handler implements PageHandler<Context> {
return
minute
;
}
private
void
buildHourlyReport
(
DependencyReport
report
,
Model
model
,
Payload
payload
)
{
Date
reportTime
=
new
Date
(
payload
.
getDate
()
+
TimeUtil
.
ONE_MINUTE
*
model
.
getMinute
());
Segment
segment
=
report
.
findSegment
(
model
.
getMinute
());
@Override
@PayloadMeta
(
Payload
.
class
)
@InboundActionMeta
(
name
=
"dependency"
)
public
void
handleInbound
(
Context
ctx
)
throws
ServletException
,
IOException
{
}
model
.
setReport
(
report
);
model
.
setSegment
(
segment
);
@Override
@OutboundActionMeta
(
name
=
"dependency"
)
public
void
handleOutbound
(
Context
ctx
)
throws
ServletException
,
IOException
{
Model
model
=
new
Model
(
ctx
);
Payload
payload
=
ctx
.
getPayload
();
if
(
payload
.
isAll
())
{
model
.
setSegment
(
buildAllSegment
(
report
));
normalize
(
model
,
payload
);
Action
action
=
payload
.
getAction
();
DependencyReport
report
=
queryDependencyReport
(
payload
);
switch
(
action
)
{
case
GRAPH:
buildHourlyReport
(
report
,
model
,
payload
);
TopologyGraph
graph
=
buildHourlyTopologyGraph
(
model
,
payload
);
buildGraphByEvent
(
graph
,
model
.
getEvents
());
buildGraphExtraInfo
(
payload
,
graph
);
model
.
setTopologyGraph
(
new
DefaultJsonBuilder
().
buildJson
(
graph
));
break
;
case
VIEW:
buildHourlyReport
(
report
,
model
,
payload
);
buildHourlyLineGraph
(
report
,
model
);
break
;
}
m
odel
.
setEvents
(
queryDependencyEvent
(
segment
,
payload
.
getDomain
(),
reportTime
)
);
m
_jspViewer
.
view
(
ctx
,
model
);
}
private
Segment
buildAllSegment
(
DependencyReport
report
)
{
Segment
result
=
new
Segment
();
Map
<
Integer
,
Segment
>
segments
=
report
.
getSegments
();
DependencyReportMerger
merger
=
new
DependencyReportMerger
(
null
);
private
void
normalize
(
Model
model
,
Payload
payload
)
{
model
.
setPage
(
ReportPage
.
DEPENDENCY
);
model
.
setAction
(
Action
.
VIEW
);
for
(
Segment
segment
:
segments
.
values
())
{
m_normalizePayload
.
normalize
(
model
,
payload
);
Integer
minute
=
computeMinute
(
payload
);
int
maxMinute
=
60
;
List
<
Integer
>
minutes
=
new
ArrayList
<
Integer
>();
if
(
payload
.
getPeriod
().
isCurrent
())
{
long
current
=
System
.
currentTimeMillis
()
/
1000
/
60
;
maxMinute
=
(
int
)
(
current
%
(
60
));
}
for
(
int
i
=
0
;
i
<
60
;
i
++)
{
minutes
.
add
(
i
);
}
model
.
setMinute
(
minute
);
model
.
setMaxMinute
(
maxMinute
);
model
.
setMinutes
(
minutes
);
}
private
Map
<
String
,
List
<
String
>>
parseDependencies
(
Segment
segment
)
{
Map
<
String
,
List
<
String
>>
results
=
new
TreeMap
<
String
,
List
<
String
>>();
if
(
segment
!=
null
)
{
Map
<
String
,
Dependency
>
dependencies
=
segment
.
getDependencies
();
Map
<
String
,
Index
>
indexs
=
segment
.
getIndexs
();
for
(
Index
index
:
indexs
.
values
())
{
Index
temp
=
result
.
findOrCreateIndex
(
index
.
getName
());
merger
.
mergeIndex
(
temp
,
index
);
}
for
(
Dependency
dependency
:
dependencies
.
values
())
{
Dependency
temp
=
result
.
findOrCreateDependency
(
dependency
.
getKey
());
for
(
Dependency
temp
:
dependencies
.
values
())
{
String
type
=
temp
.
getType
();
String
target
=
temp
.
getTarget
();
List
<
String
>
targets
=
results
.
get
(
type
);
merger
.
mergeDependency
(
temp
,
dependency
);
if
(
targets
==
null
)
{
targets
=
new
ArrayList
<
String
>();
results
.
put
(
type
,
targets
);
}
targets
.
add
(
target
);
}
}
return
result
;
return
results
;
}
private
Map
<
String
,
List
<
Event
>>
queryDependencyEvent
(
Segment
segment
,
String
domain
,
Date
date
)
{
...
...
@@ -222,48 +303,38 @@ public class Handler implements PageHandler<Context> {
return
result
;
}
private
Map
<
String
,
List
<
String
>>
parseDependencies
(
Segment
segment
)
{
Map
<
String
,
List
<
String
>>
results
=
new
TreeMap
<
String
,
List
<
String
>>
();
if
(
segment
!=
null
)
{
Map
<
String
,
Dependency
>
dependencies
=
segment
.
getDependencies
(
);
private
DependencyReport
queryDependencyReport
(
Payload
payload
)
{
String
domain
=
payload
.
getDomain
();
String
date
=
String
.
valueOf
(
payload
.
getDate
());
ModelRequest
request
=
new
ModelRequest
(
domain
,
payload
.
getPeriod
())
//
.
setProperty
(
"date"
,
date
);
for
(
Dependency
temp
:
dependencies
.
values
())
{
String
type
=
temp
.
getType
();
String
target
=
temp
.
getTarget
();
List
<
String
>
targets
=
results
.
get
(
type
);
if
(
m_dependencyService
.
isEligable
(
request
))
{
ModelResponse
<
DependencyReport
>
response
=
m_dependencyService
.
invoke
(
request
);
DependencyReport
report
=
response
.
getModel
();
if
(
targets
==
null
)
{
targets
=
new
ArrayList
<
String
>();
results
.
put
(
type
,
targets
);
}
targets
.
add
(
target
);
Date
start
=
report
.
getStartTime
();
if
(
start
==
null
)
{
report
.
setStartTime
(
new
Date
(
payload
.
getDate
()));
report
.
setStartTime
(
new
Date
(
payload
.
getDate
()
+
TimeUtil
.
ONE_HOUR
));
}
return
report
;
}
else
{
throw
new
RuntimeException
(
"Internal error: no eligable dependency service registered for "
+
request
+
"!"
);
}
return
results
;
}
private
void
normalize
(
Model
model
,
Payload
payload
)
{
model
.
setPage
(
ReportPage
.
DEPENDENCY
);
model
.
setAction
(
Action
.
VIEW
);
m_normalizePayload
.
normalize
(
model
,
payload
);
Integer
minute
=
computeMinute
(
payload
);
int
maxMinute
=
60
;
List
<
Integer
>
minutes
=
new
ArrayList
<
Integer
>();
private
ProblemReport
queryProblemReport
(
Payload
payload
,
String
domain
)
{
String
date
=
String
.
valueOf
(
payload
.
getDate
());
ModelRequest
request
=
new
ModelRequest
(
domain
,
payload
.
getPeriod
())
//
.
setProperty
(
"date"
,
date
);
if
(
m_problemservice
.
isEligable
(
request
))
{
ModelResponse
<
ProblemReport
>
response
=
m_problemservice
.
invoke
(
request
);
if
(
payload
.
getPeriod
().
isCurrent
())
{
long
current
=
System
.
currentTimeMillis
()
/
1000
/
60
;
maxMinute
=
(
int
)
(
current
%
(
60
));
}
for
(
int
i
=
0
;
i
<
60
;
i
++)
{
minutes
.
add
(
i
);
return
response
.
getModel
();
}
else
{
throw
new
RuntimeException
(
"Internal error: no eligible problem service registered for "
+
request
+
"!"
);
}
model
.
setMinute
(
minute
);
model
.
setMaxMinute
(
maxMinute
);
model
.
setMinutes
(
minutes
);
}
}
cat-home/src/main/java/com/dianping/cat/report/page/dependency/ProblemReportVistor.java
0 → 100644
浏览文件 @
7cf00e57
package
com.dianping.cat.report.page.dependency
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
com.dianping.cat.consumer.problem.model.entity.Entry
;
import
com.dianping.cat.consumer.problem.model.transform.BaseVisitor
;
public
class
ProblemReportVistor
extends
BaseVisitor
{
private
Map
<
String
,
Integer
>
m_errors
=
new
LinkedHashMap
<
String
,
Integer
>();
@Override
public
void
visitEntry
(
Entry
entry
)
{
String
type
=
entry
.
getType
();
String
state
=
entry
.
getStatus
();
if
(
"error"
.
equals
(
type
))
{
Integer
temp
=
m_errors
.
get
(
state
);
if
(
temp
==
null
)
{
m_errors
.
put
(
state
,
1
);
}
else
{
m_errors
.
put
(
state
,
temp
+
1
);
}
}
}
public
String
buildResult
()
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
java
.
util
.
Map
.
Entry
<
String
,
Integer
>
error
:
m_errors
.
entrySet
())
{
sb
.
append
(
error
.
getKey
()).
append
(
":"
).
append
(
error
.
getValue
()).
append
(
"<br>"
);
}
return
sb
.
toString
();
}
}
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphBuilder.java
浏览文件 @
7cf00e57
...
...
@@ -59,7 +59,9 @@ public class TopologyGraphBuilder extends BaseVisitor {
String
split
=
"\\|"
;
if
(
StringUtil
.
isEmpty
(
old
))
{
return
des
;
}
else
{
}
else
if
(
StringUtil
.
isEmpty
(
des
)){
return
old
;
}
else
{
String
[]
temps
=
old
.
split
(
split
);
for
(
String
temp
:
temps
)
{
if
(
des
.
equals
(
temp
.
trim
()))
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java
浏览文件 @
7cf00e57
...
...
@@ -55,37 +55,48 @@ public class TopologyGraphManager implements Initializable, LogEnabled {
for
(
Edge
edge
:
edges
)
{
String
self
=
edge
.
getSelf
();
String
target
=
edge
.
getTarget
();
Edge
cloneEdge
=
cloneEdge
(
edge
);
if
(
self
.
equals
(
domain
))
{
Node
other
=
graph
.
findNode
(
target
);
if
(
other
!=
null
)
{
result
.
addNode
(
other
);
result
.
addNode
(
cloneNode
(
other
)
);
}
else
{
result
.
addNode
(
m_graphBuilder
.
createNode
(
target
));
}
edge
.
setOpposite
(
false
);
result
.
addEdge
(
e
dge
);
result
.
addEdge
(
cloneE
dge
);
}
else
if
(
target
.
equals
(
domain
))
{
Node
other
=
graph
.
findNode
(
self
);
if
(
other
!=
null
)
{
result
.
addNode
(
other
);
result
.
addNode
(
cloneNode
(
other
)
);
}
else
{
result
.
addNode
(
m_graphBuilder
.
createNode
(
target
));
}
Edge
temp
=
cloneEdge
(
edge
);
temp
.
setTarget
(
edge
.
getSelf
());
temp
.
setSelf
(
edge
.
getTarget
());
temp
.
setOpposite
(
true
);
result
.
addEdge
(
temp
);
cloneEdge
.
setTarget
(
edge
.
getSelf
());
cloneEdge
.
setSelf
(
edge
.
getTarget
());
cloneEdge
.
setOpposite
(
true
);
result
.
addEdge
(
cloneEdge
);
}
}
}
return
result
;
}
public
Node
cloneNode
(
Node
node
)
{
Node
result
=
new
Node
();
result
.
setDes
(
node
.
getDes
());
result
.
setId
(
node
.
getId
());
result
.
setLink
(
node
.
getLink
());
result
.
setStatus
(
node
.
getStatus
());
result
.
setType
(
node
.
getType
());
result
.
setWeight
(
node
.
getWeight
());
return
result
;
}
public
Edge
cloneEdge
(
Edge
edge
)
{
Edge
result
=
new
Edge
();
...
...
cat-home/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
7cf00e57
...
...
@@ -607,10 +607,6 @@
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger
</role>
<implementation>
com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger
</implementation>
</component>
<component>
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
<role-hint>
transaction-local
</role-hint>
...
...
@@ -2531,7 +2527,7 @@
<requirement>
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
<role-hint>
dependency
</role-hint>
<field-name>
m_
s
ervice
</field-name>
<field-name>
m_
dependencyS
ervice
</field-name>
</requirement>
<requirement>
<role>
com.dianping.cat.report.page.PayloadNormalizer
</role>
...
...
@@ -2539,6 +2535,11 @@
<requirement>
<role>
com.dianping.cat.report.page.dependency.graph.TopologyGraphManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.report.page.model.spi.ModelService
</role>
<role-hint>
problem
</role-hint>
<field-name>
m_problemservice
</field-name>
</requirement>
</requirements>
</component>
<component>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录