public Representation get()

in uReplicator-Controller/src/main/java/com/uber/stream/kafka/mirrormaker/controller/rest/resources/MirrorMakerManagerRestletResource.java [37:82]


  public Representation get() {
    final String instanceName = (String) getRequest().getAttributes().get("instanceName");
    try {
      JSONObject responseJson = new JSONObject();

      PriorityQueue<InstanceTopicPartitionHolder> currentServingInstance = _helixMirrorMakerManager
          .getCurrentServingInstance();
      WorkloadInfoRetriever workloadRetriever = _helixMirrorMakerManager.getWorkloadInfoRetriever();
      Iterator<InstanceTopicPartitionHolder> iter = currentServingInstance.iterator();
      JSONObject instanceMapJson = new JSONObject();
      while (iter.hasNext()) {
        InstanceTopicPartitionHolder instance = iter.next();
        String name = instance.getInstanceName();
        if (instanceName == null || instanceName.equals(name)) {
          if (!instanceMapJson.containsKey(name)) {
            instanceMapJson.put(name, new JSONArray());
          }
          double totalWorkload = 0;
          for (TopicPartition tp : instance.getServingTopicPartitionSet()) {
            double tpw = workloadRetriever.topicWorkload(tp.getTopic()).getBytesPerSecondPerPartition();
            totalWorkload += tpw;
            instanceMapJson.getJSONArray(name).add(tp.getTopic() + "." + tp.getPartition() + ":" + Math.round(tpw));
          }
          instanceMapJson.getJSONArray(name).add("TOTALWORKLOAD." + instance.getServingTopicPartitionSet().size()
              + ":" + Math.round(totalWorkload));
        }
      }
      responseJson.put("instances", instanceMapJson);

      JSONArray blacklistedArray = new JSONArray();
      blacklistedArray.addAll(_helixMirrorMakerManager.getBlacklistedInstances());
      responseJson.put("blacklisted", blacklistedArray);

      JSONArray allInstances = new JSONArray();
      allInstances.addAll(_helixMirrorMakerManager.getCurrentLiveInstanceNames());
      responseJson.put("allInstances", allInstances);

      return new StringRepresentation(responseJson.toJSONString());
    } catch (Exception e) {
      LOGGER.error("Got error during processing Get request", e);
      getResponse().setStatus(Status.SERVER_ERROR_INTERNAL);
      return new StringRepresentation(String
          .format("Failed to get serving topics for %s, with exception: %s",
              instanceName == null ? "all instances" : instanceName, e));
    }
  }