private void retrieveWorkload(long timeInMs, long windowInMs, Map<String, Integer> topicsPartitions)
throws IOException {
long current = System.currentTimeMillis();
Map<String, TopicWorkload> topicWorkloads = C3QueryUtils.retrieveTopicInRate(timeInMs, windowInMs,
_helixMirrorMakerManager.getControllerConf().getC3Host(),
_helixMirrorMakerManager.getControllerConf().getC3Port(), _srcKafkaCluster,
new ArrayList<>(topicsPartitions.keySet()));
synchronized (_topicWorkloadMap) {
for (Map.Entry<String, TopicWorkload> entry : topicWorkloads.entrySet()) {
String topic = entry.getKey();
TopicWorkload workload = entry.getValue();
Integer partitions = topicsPartitions.get(topic);
if (partitions != null) {
workload.setParitions(partitions);
LinkedList<TopicWorkload> tws = _topicWorkloadMap.get(topic);
if (tws == null) {
tws = new LinkedList<>();
_topicWorkloadMap.put(topic, tws);
}
if (tws.isEmpty() || tws.getLast().getLastUpdate() < workload.getLastUpdate()) {
tws.add(workload);
}
while (!tws.isEmpty() && (current - tws.getFirst().getLastUpdate() > _maxValidTimeMillis)) {
tws.removeFirst();
}
}
}
}
}