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()
```