[feat](profile) Add a new rest api to query instance host and ip information for query profile action in branch master(#18668) (#19643)
This commit is contained in:
@ -193,19 +193,20 @@ public class ProfileTreeBuilder {
|
||||
// 1. Get max active time of instances in this fragment
|
||||
List<Triple<String, String, Long>> instanceIdAndActiveTimeList = Lists.newArrayList();
|
||||
List<String> instances = Lists.newArrayList();
|
||||
Map<String, String> instanceIdToTime = Maps.newHashMap();
|
||||
Map<String, Instance> instanceIdToInstance = Maps.newHashMap();
|
||||
long maxActiveTimeNs = 0;
|
||||
for (Pair<RuntimeProfile, Boolean> pair : fragmentChildren) {
|
||||
Triple<String, String, Long> instanceIdAndActiveTime = getInstanceIdHostAndActiveTime(pair.first);
|
||||
instanceIdToTime.put(instanceIdAndActiveTime.getLeft(),
|
||||
RuntimeProfile.printCounter(instanceIdAndActiveTime.getRight(), TUnit.TIME_NS));
|
||||
instanceIdToInstance.put(instanceIdAndActiveTime.getLeft(),
|
||||
new Instance(instanceIdAndActiveTime.getMiddle(),
|
||||
RuntimeProfile.printCounter(instanceIdAndActiveTime.getRight(), TUnit.TIME_NS)));
|
||||
maxActiveTimeNs = Math.max(instanceIdAndActiveTime.getRight(), maxActiveTimeNs);
|
||||
instanceIdAndActiveTimeList.add(instanceIdAndActiveTime);
|
||||
instances.add(instanceIdAndActiveTime.getLeft());
|
||||
}
|
||||
instanceActiveTimeMap.put(fragmentId, instanceIdAndActiveTimeList);
|
||||
fragmentsInstances.add(new FragmentInstances(fragmentId,
|
||||
RuntimeProfile.printCounter(maxActiveTimeNs, TUnit.TIME_NS), instanceIdToTime));
|
||||
RuntimeProfile.printCounter(maxActiveTimeNs, TUnit.TIME_NS), instanceIdToInstance));
|
||||
|
||||
// 2. Build tree for all fragments
|
||||
// All instance in a fragment are same, so use first instance to build the fragment tree
|
||||
@ -430,12 +431,27 @@ public class ProfileTreeBuilder {
|
||||
@JsonProperty("time")
|
||||
private String maxActiveTimeNs;
|
||||
@JsonProperty("instance_id")
|
||||
private Map<String, String> instanceIdToTime;
|
||||
private Map<String, Instance> instanceIdToInstance;
|
||||
|
||||
public FragmentInstances(String fragmentId, String maxActiveTimeNs, Map<String, String> instanceIdToTime) {
|
||||
public FragmentInstances(String fragmentId, String maxActiveTimeNs,
|
||||
Map<String, Instance> instanceIdToInstance) {
|
||||
this.fragmentId = fragmentId;
|
||||
this.maxActiveTimeNs = maxActiveTimeNs;
|
||||
this.instanceIdToTime = instanceIdToTime;
|
||||
this.instanceIdToInstance = instanceIdToInstance;
|
||||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public static class Instance {
|
||||
@JsonProperty("host")
|
||||
private String host;
|
||||
@JsonProperty("active_time")
|
||||
private String activeTime;
|
||||
|
||||
public Instance(String host, String activeTime) {
|
||||
this.host = host;
|
||||
this.activeTime = activeTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user