Skip to content

Commit 27a3ea4

Browse files
committed
Update AggregatedMetricsResponseBody to extend from ArrayList
1 parent acdfde9 commit 27a3ea4

File tree

4 files changed

+130
-65
lines changed

4 files changed

+130
-65
lines changed

docs/layouts/shortcodes/generated/rest_v1_dispatcher.html

Lines changed: 78 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1518,7 +1518,32 @@
15181518
<details>
15191519
<summary>Response</summary>
15201520
<pre><code>{
1521-
"type" : "any"
1521+
"type" : "array",
1522+
"items" : {
1523+
"type" : "object",
1524+
"id" : "urn:jsonschema:org:apache:flink:runtime:rest:messages:job:metrics:AggregatedMetric",
1525+
"properties" : {
1526+
"avg" : {
1527+
"type" : "number"
1528+
},
1529+
"id" : {
1530+
"type" : "string",
1531+
"required" : true
1532+
},
1533+
"max" : {
1534+
"type" : "number"
1535+
},
1536+
"min" : {
1537+
"type" : "number"
1538+
},
1539+
"skew" : {
1540+
"type" : "number"
1541+
},
1542+
"sum" : {
1543+
"type" : "number"
1544+
}
1545+
}
1546+
}
15221547
}</code></pre>
15231548
</label>
15241549
</td>
@@ -5364,7 +5389,32 @@
53645389
<details>
53655390
<summary>Response</summary>
53665391
<pre><code>{
5367-
"type" : "any"
5392+
"type" : "array",
5393+
"items" : {
5394+
"type" : "object",
5395+
"id" : "urn:jsonschema:org:apache:flink:runtime:rest:messages:job:metrics:AggregatedMetric",
5396+
"properties" : {
5397+
"avg" : {
5398+
"type" : "number"
5399+
},
5400+
"id" : {
5401+
"type" : "string",
5402+
"required" : true
5403+
},
5404+
"max" : {
5405+
"type" : "number"
5406+
},
5407+
"min" : {
5408+
"type" : "number"
5409+
},
5410+
"skew" : {
5411+
"type" : "number"
5412+
},
5413+
"sum" : {
5414+
"type" : "number"
5415+
}
5416+
}
5417+
}
53685418
}</code></pre>
53695419
</label>
53705420
</td>
@@ -6451,7 +6501,32 @@
64516501
<details>
64526502
<summary>Response</summary>
64536503
<pre><code>{
6454-
"type" : "any"
6504+
"type" : "array",
6505+
"items" : {
6506+
"type" : "object",
6507+
"id" : "urn:jsonschema:org:apache:flink:runtime:rest:messages:job:metrics:AggregatedMetric",
6508+
"properties" : {
6509+
"avg" : {
6510+
"type" : "number"
6511+
},
6512+
"id" : {
6513+
"type" : "string",
6514+
"required" : true
6515+
},
6516+
"max" : {
6517+
"type" : "number"
6518+
},
6519+
"min" : {
6520+
"type" : "number"
6521+
},
6522+
"skew" : {
6523+
"type" : "number"
6524+
},
6525+
"sum" : {
6526+
"type" : "number"
6527+
}
6528+
}
6529+
}
64556530
}</code></pre>
64566531
</label>
64576532
</td>

docs/static/generated/rest_v1_dispatcher.yml

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,9 @@ paths:
502502
content:
503503
application/json:
504504
schema:
505-
$ref: "#/components/schemas/AggregatedMetricsResponseBody"
505+
type: array
506+
items:
507+
$ref: "#/components/schemas/AggregatedMetric"
506508
/jobs/overview:
507509
get:
508510
description: Returns an overview over all jobs.
@@ -1440,7 +1442,9 @@ paths:
14401442
content:
14411443
application/json:
14421444
schema:
1443-
$ref: "#/components/schemas/AggregatedMetricsResponseBody"
1445+
type: array
1446+
items:
1447+
$ref: "#/components/schemas/AggregatedMetric"
14441448
/jobs/{jobid}/vertices/{vertexid}/subtasks/{subtaskindex}:
14451449
get:
14461450
description: Returns details of the current or latest execution attempt of a
@@ -1757,7 +1761,9 @@ paths:
17571761
content:
17581762
application/json:
17591763
schema:
1760-
$ref: "#/components/schemas/AggregatedMetricsResponseBody"
1764+
type: array
1765+
items:
1766+
$ref: "#/components/schemas/AggregatedMetric"
17611767
/taskmanagers/{taskmanagerid}:
17621768
get:
17631769
description: Returns details for a task manager.
@@ -1841,8 +1847,32 @@ paths:
18411847
$ref: "#/components/schemas/ThreadDumpInfo"
18421848
components:
18431849
schemas:
1844-
AggregatedMetricsResponseBody:
1850+
AggregatedMetric:
1851+
required:
1852+
- id
18451853
type: object
1854+
properties:
1855+
avg:
1856+
type: number
1857+
format: double
1858+
id:
1859+
type: string
1860+
max:
1861+
type: number
1862+
format: double
1863+
min:
1864+
type: number
1865+
format: double
1866+
skew:
1867+
type: number
1868+
format: double
1869+
sum:
1870+
type: number
1871+
format: double
1872+
AggregatedMetricsResponseBody:
1873+
type: array
1874+
items:
1875+
$ref: "#/components/schemas/AggregatedMetric"
18461876
AggregatedTaskDetailsInfo:
18471877
type: object
18481878
properties:

flink-runtime/src/main/java/org/apache/flink/runtime/rest/messages/job/metrics/AggregatedMetricsResponseBody.java

Lines changed: 15 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,11 @@
2121
import org.apache.flink.runtime.rest.messages.ResponseBody;
2222

2323
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonIgnore;
24-
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonGenerator;
25-
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonParser;
26-
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.type.TypeReference;
27-
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.DeserializationContext;
28-
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.SerializerProvider;
29-
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.annotation.JsonDeserialize;
30-
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.annotation.JsonSerialize;
31-
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.deser.std.StdDeserializer;
32-
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ser.std.StdSerializer;
3324

34-
import java.io.IOException;
25+
import java.util.ArrayList;
3526
import java.util.Collection;
36-
import java.util.List;
27+
28+
import static java.util.Objects.requireNonNull;
3729

3830
/**
3931
* Response type for a collection of aggregated metrics.
@@ -46,62 +38,28 @@
4638
* [{"id": "metricName", "min": "1"}]
4739
* }</pre>
4840
*
49-
* @see AggregatedMetricsResponseBody.Serializer
50-
* @see AggregatedMetricsResponseBody.Deserializer
5141
* @see org.apache.flink.runtime.rest.handler.legacy.metrics.MetricStore
5242
*/
53-
@JsonSerialize(using = AggregatedMetricsResponseBody.Serializer.class)
54-
@JsonDeserialize(using = AggregatedMetricsResponseBody.Deserializer.class)
55-
public class AggregatedMetricsResponseBody implements ResponseBody {
43+
public class AggregatedMetricsResponseBody extends ArrayList<AggregatedMetric>
44+
implements ResponseBody {
5645

57-
private final Collection<AggregatedMetric> metrics;
46+
private static final long serialVersionUID = -1170348873871206965L;
5847

59-
public AggregatedMetricsResponseBody(Collection<AggregatedMetric> metrics) {
48+
// a default constructor is required for collection type marshalling
49+
public AggregatedMetricsResponseBody() {}
6050

61-
this.metrics = metrics;
51+
public AggregatedMetricsResponseBody(Collection<AggregatedMetric> metrics) {
52+
super(requireNonNull(metrics, "metrics must not be null"));
6253
}
6354

6455
@JsonIgnore
6556
public Collection<AggregatedMetric> getMetrics() {
66-
return metrics;
67-
}
68-
69-
/** JSON serializer for {@link AggregatedMetricsResponseBody}. */
70-
public static class Serializer extends StdSerializer<AggregatedMetricsResponseBody> {
71-
72-
private static final long serialVersionUID = 1L;
73-
74-
protected Serializer() {
75-
super(AggregatedMetricsResponseBody.class);
76-
}
77-
78-
@Override
79-
public void serialize(
80-
AggregatedMetricsResponseBody metricCollectionResponseBody,
81-
JsonGenerator jsonGenerator,
82-
SerializerProvider serializerProvider)
83-
throws IOException {
84-
85-
jsonGenerator.writeObject(metricCollectionResponseBody.getMetrics());
86-
}
57+
return this;
8758
}
8859

89-
/** JSON deserializer for {@link AggregatedMetricsResponseBody}. */
90-
public static class Deserializer extends StdDeserializer<AggregatedMetricsResponseBody> {
91-
92-
private static final long serialVersionUID = 1L;
93-
94-
protected Deserializer() {
95-
super(AggregatedMetricsResponseBody.class);
96-
}
97-
98-
@Override
99-
public AggregatedMetricsResponseBody deserialize(
100-
JsonParser jsonParser, DeserializationContext deserializationContext)
101-
throws IOException {
102-
103-
return new AggregatedMetricsResponseBody(
104-
jsonParser.readValueAs(new TypeReference<List<AggregatedMetric>>() {}));
105-
}
60+
@Override
61+
@JsonIgnore
62+
public boolean isEmpty() {
63+
return super.isEmpty();
10664
}
10765
}

flink-runtime/src/main/java/org/apache/flink/runtime/rest/messages/job/metrics/MetricCollectionResponseBody.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,14 @@
3737
* <pre>{@code
3838
* [{"id": "metricName", "value": "1"}]
3939
* }</pre>
40+
*
41+
* @see org.apache.flink.runtime.rest.handler.legacy.metrics.MetricStore
4042
*/
4143
public final class MetricCollectionResponseBody extends ArrayList<Metric> implements ResponseBody {
4244

4345
private static final long serialVersionUID = -1170348873871206965L;
4446

45-
// a default constructor is required for collection type marshaling
47+
// a default constructor is required for collection type marshalling
4648
public MetricCollectionResponseBody() {}
4749

4850
public MetricCollectionResponseBody(Collection<Metric> metrics) {

0 commit comments

Comments
 (0)