This is an automated email from the ASF dual-hosted git repository.

nicknezis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git


The following commit(s) were added to refs/heads/master by this push:
     new 7db7c24733b Support legacy API of HealthManger (#3818)
7db7c24733b is described below

commit 7db7c24733bd7e66ecfe704ea65f864d1fff4adc
Author: choi se <[email protected]>
AuthorDate: Fri Apr 15 04:44:58 2022 +0900

    Support legacy API of HealthManger (#3818)
    
    Co-authored-by: Nicholas Nezis <[email protected]>
---
 .../sensors/MetricsCacheMetricsProvider.java       |  5 +++--
 .../healthmgr/sensors/TrackerMetricsProvider.java  |  5 +++--
 heron/tools/tracker/src/python/metricstimeline.py  |  1 +
 heron/tools/tracker/src/python/routers/metrics.py  | 23 ++++++++++++++++------
 .../topology-development-topology-api-python.md    |  2 +-
 .../topology-development-topology-api-python.md    |  2 +-
 .../topology-development-topology-api-python.md    |  2 +-
 7 files changed, 27 insertions(+), 13 deletions(-)

diff --git 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/sensors/MetricsCacheMetricsProvider.java
 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/sensors/MetricsCacheMetricsProvider.java
index c70c7b10e53..c4a1e25e3f1 100644
--- 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/sensors/MetricsCacheMetricsProvider.java
+++ 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/sensors/MetricsCacheMetricsProvider.java
@@ -45,6 +45,7 @@ import 
org.apache.heron.proto.tmanager.TopologyManager.MetricsCacheLocation;
 import org.apache.heron.spi.statemgr.SchedulerStateManagerAdaptor;
 import org.apache.heron.spi.utils.NetworkUtils;
 
+import static org.apache.heron.common.basics.TypeUtils.getDouble;
 import static org.apache.heron.healthmgr.HealthPolicyConfig.CONF_TOPOLOGY_NAME;
 
 public class MetricsCacheMetricsProvider implements MetricsProvider {
@@ -117,7 +118,7 @@ public class MetricsCacheMetricsProvider implements 
MetricsProvider {
               instanceId,
               metricName,
               Instant.ofEpochSecond(mi.getStart()),
-              Double.parseDouble(value));
+              getDouble(value));
           metricsData.add(measurement);
         }
         // case 2
@@ -127,7 +128,7 @@ public class MetricsCacheMetricsProvider implements 
MetricsProvider {
               instanceId,
               metricName,
               startTime,
-              Double.parseDouble(im.getValue()));
+              getDouble(im.getValue()));
           metricsData.add(measurement);
         }
       }
diff --git 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/sensors/TrackerMetricsProvider.java
 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/sensors/TrackerMetricsProvider.java
index e2cb9af3fe2..54defaf48f1 100644
--- 
a/heron/healthmgr/src/java/org/apache/heron/healthmgr/sensors/TrackerMetricsProvider.java
+++ 
b/heron/healthmgr/src/java/org/apache/heron/healthmgr/sensors/TrackerMetricsProvider.java
@@ -43,6 +43,7 @@ import com.microsoft.dhalion.core.Measurement;
 
 import net.minidev.json.JSONArray;
 
+import static org.apache.heron.common.basics.TypeUtils.getDouble;
 import static 
org.apache.heron.healthmgr.HealthPolicyConfig.CONF_METRICS_SOURCE_URL;
 import static org.apache.heron.healthmgr.HealthPolicyConfig.CONF_TOPOLOGY_NAME;
 
@@ -105,14 +106,14 @@ public class TrackerMetricsProvider implements 
MetricsProvider {
     }
 
     for (String instanceName : metricsMap.keySet()) {
-      Map<String, String> tmpValues = (Map<String, String>) 
metricsMap.get(instanceName);
+      Map<String, Object> tmpValues = (Map<String, Object>) 
metricsMap.get(instanceName);
       for (String timeStamp : tmpValues.keySet()) {
         Measurement measurement = new Measurement(
             component,
             instanceName,
             metric,
             Instant.ofEpochSecond(Long.parseLong(timeStamp)),
-            Double.parseDouble(tmpValues.get(timeStamp)));
+            getDouble(tmpValues.get(timeStamp)));
         metricsData.add(measurement);
       }
     }
diff --git a/heron/tools/tracker/src/python/metricstimeline.py 
b/heron/tools/tracker/src/python/metricstimeline.py
index 04aa01f23ce..5bfb0e9d519 100644
--- a/heron/tools/tracker/src/python/metricstimeline.py
+++ b/heron/tools/tracker/src/python/metricstimeline.py
@@ -73,6 +73,7 @@ async def get_metrics_timeline(
 
   # Form and send the http request.
   url = f"http://{tmanager.host}:{tmanager.stats_port}/stats";
+  Log.debug(f"Making HTTP call to fetch metrics: {url}")
   async with httpx.AsyncClient() as client:
     result = await client.post(url, 
data=request_parameters.SerializeToString())
 
diff --git a/heron/tools/tracker/src/python/routers/metrics.py 
b/heron/tools/tracker/src/python/routers/metrics.py
index 644cc64e3ee..5e50c4bd1d6 100644
--- a/heron/tools/tracker/src/python/routers/metrics.py
+++ b/heron/tools/tracker/src/python/routers/metrics.py
@@ -119,22 +119,28 @@ async def get_metrics( # pylint: 
disable=too-many-arguments
   )
 
 
[email protected]("/metricstimeline", response_model=metricstimeline.MetricsTimeline,
+    deprecated=True)
 @router.get("/metrics/timeline", 
response_model=metricstimeline.MetricsTimeline)
 async def get_metrics_timeline( # pylint: disable=too-many-arguments
     cluster: str,
     environ: str,
     component: str,
-    start_time: int,
-    end_time: int,
+    start_time: int = Query(..., alias="starttime"),
+    end_time: int = Query(..., alias="endtime"),
     role: Optional[str] = None,
     topology_name: str = Query(..., alias="topology"),
     metric_names: Optional[List[str]] = Query(None, alias="metricname"),
     instances: Optional[List[str]] = Query(None, alias="instance"),
 ):
-  """Return metrics over the given interval."""
+  """
+  '/metricstimeline' 0.20.5 below.
+  '/metrics/timeline' 0.20.5 above.
+  Return metrics over the given interval.
+  """
   if start_time > end_time:
     raise BadRequest("start_time > end_time")
-  topology = state.tracker.get_toplogy(cluster, role, environ, topology_name)
+  topology = state.tracker.get_topology(cluster, role, environ, topology_name)
   return await metricstimeline.get_metrics_timeline(
       topology.tmanager, component, metric_names, instances, start_time, 
end_time
   )
@@ -157,7 +163,8 @@ class MetricsQueryResponse(BaseModel): # pylint: 
disable=too-few-public-methods
       ..., description="list of timeline point objects",
   )
 
-
[email protected]("/metricsquery", response_model=MetricsQueryResponse,
+    deprecated=True)
 @router.get("/metrics/query", response_model=MetricsQueryResponse)
 async def get_metrics_query( # pylint: disable=too-many-arguments
     cluster: str,
@@ -168,7 +175,11 @@ async def get_metrics_query( # pylint: 
disable=too-many-arguments
     end_time: int = Query(..., alias="endtime"),
     topology_name: str = Query(..., alias="topology"),
 ) -> MetricsQueryResponse:
-  """Run a metrics query against a particular toplogy."""
+  """
+  '/metricsquery' 0.20.5 below.
+  '/metrics/query' 0.20.5 above.
+  Run a metrics query against a particular topology.
+  """
   topology = state.tracker.get_topology(cluster, role, environ, topology_name)
   metrics = await TManagerQuery(state.tracker).execute_query(
       topology.tmanager, query, start_time, end_time
diff --git a/website2/docs/topology-development-topology-api-python.md 
b/website2/docs/topology-development-topology-api-python.md
index 77da3b6409b..4af56e1d194 100644
--- a/website2/docs/topology-development-topology-api-python.md
+++ b/website2/docs/topology-development-topology-api-python.md
@@ -139,7 +139,7 @@ if __name__ == "__main__":
     # piece together the topology
     word_spout = builder.add_spout("word_spout", WordSpout, par=2)
     count_bolt = builder.add_bolt("count_bolt", CountBolt, par=2, 
inputs={word_spout: Grouping.fields("word")})
-    # submit the toplogy
+    # submit the topology
     builder.build_and_submit()
 ```
 
diff --git 
a/website2/website/versioned_docs/version-0.20.0-incubating/topology-development-topology-api-python.md
 
b/website2/website/versioned_docs/version-0.20.0-incubating/topology-development-topology-api-python.md
index ab297567df6..999adac6350 100644
--- 
a/website2/website/versioned_docs/version-0.20.0-incubating/topology-development-topology-api-python.md
+++ 
b/website2/website/versioned_docs/version-0.20.0-incubating/topology-development-topology-api-python.md
@@ -140,7 +140,7 @@ if __name__ == "__main__":
     # piece together the topology
     word_spout = builder.add_spout("word_spout", WordSpout, par=2)
     count_bolt = builder.add_bolt("count_bolt", CountBolt, par=2, 
inputs={word_spout: Grouping.fields("word")})
-    # submit the toplogy
+    # submit the topology
     builder.build_and_submit()
 ```
 
diff --git 
a/website2/website/versioned_docs/version-0.20.2-incubating/topology-development-topology-api-python.md
 
b/website2/website/versioned_docs/version-0.20.2-incubating/topology-development-topology-api-python.md
index d6c7bdb285d..db26f1d6f4a 100644
--- 
a/website2/website/versioned_docs/version-0.20.2-incubating/topology-development-topology-api-python.md
+++ 
b/website2/website/versioned_docs/version-0.20.2-incubating/topology-development-topology-api-python.md
@@ -140,7 +140,7 @@ if __name__ == "__main__":
     # piece together the topology
     word_spout = builder.add_spout("word_spout", WordSpout, par=2)
     count_bolt = builder.add_bolt("count_bolt", CountBolt, par=2, 
inputs={word_spout: Grouping.fields("word")})
-    # submit the toplogy
+    # submit the topology
     builder.build_and_submit()
 ```
 

Reply via email to