[
https://issues.apache.org/jira/browse/FLINK-7638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16174508#comment-16174508
]
ASF GitHub Bot commented on FLINK-7638:
---------------------------------------
Github user tzulitai commented on a diff in the pull request:
https://github.com/apache/flink/pull/4688#discussion_r140193252
--- Diff:
flink-runtime/src/main/java/org/apache/flink/runtime/messages/webmonitor/JobDetails.java
---
@@ -145,8 +180,89 @@ public String toString() {
", endTime=" + endTime +
", status=" + status +
", lastUpdateTime=" + lastUpdateTime +
- ", numVerticesPerExecutionState=" +
Arrays.toString(numVerticesPerExecutionState) +
+ ", numVerticesPerExecutionState=" +
Arrays.toString(tasksPerState) +
", numTasks=" + numTasks +
'}';
}
+
+ public static final class JobDetailsSerializer extends
StdSerializer<JobDetails> {
+ private static final long serialVersionUID =
7915913423515194428L;
+
+ public JobDetailsSerializer() {
+ super(JobDetails.class);
+ }
+
+ @Override
+ public void serialize(
+ JobDetails jobDetails,
+ JsonGenerator jsonGenerator,
+ SerializerProvider serializerProvider) throws
IOException {
+ jsonGenerator.writeStartObject();
+
+ jsonGenerator.writeStringField(FIELD_NAME_JOB_ID,
jobDetails.getJobId().toString());
+ jsonGenerator.writeStringField(FIELD_NAME_JOB_NAME,
jobDetails.getJobName());
+ jsonGenerator.writeStringField(FIELD_NAME_STATUS,
jobDetails.getStatus().name());
+
+ jsonGenerator.writeNumberField(FIELD_NAME_START_TIME,
jobDetails.getStartTime());
+ jsonGenerator.writeNumberField(FIELD_NAME_END_TIME,
jobDetails.getEndTime());
+ jsonGenerator.writeNumberField(FIELD_NAME_DURATION,
jobDetails.getDuration());
+
jsonGenerator.writeNumberField(FIELD_NAME_LAST_MODIFICATION,
jobDetails.getLastUpdateTime());
+
+ jsonGenerator.writeObjectFieldStart("tasks");
+
jsonGenerator.writeNumberField(FIELD_NAME_TOTAL_NUMBER_TASKS,
jobDetails.getNumTasks());
+
+ final int[] perState = jobDetails.getTasksPerState();
+
+ for (ExecutionState executionState :
ExecutionState.values()) {
+
jsonGenerator.writeNumberField(executionState.name().toLowerCase(),
perState[executionState.ordinal()]);
+ }
--- End diff --
I guess this is the bit which requires this nasty custom serialization /
deserialization.
I wonder if it is possible to have a proper POJO w/ Jackson annotation for
this. For the `JobDetails` class we would only need an additional constructor
(without `@JsonCreator` annotation) that accepts the "awkward" `int[] perState`
and converts it to a `List<PerExecutionState>`, `PerExecutionState` being a
newly introduced POJO to hold per-state.
If that's possible things would be much cleaner here.
> Port CurrentJobsOverviewHandler to new REST endpoint
> ----------------------------------------------------
>
> Key: FLINK-7638
> URL: https://issues.apache.org/jira/browse/FLINK-7638
> Project: Flink
> Issue Type: Sub-task
> Components: REST, Webfrontend
> Affects Versions: 1.4.0
> Reporter: Till Rohrmann
> Assignee: Till Rohrmann
> Priority: Minor
> Labels: flip-6
>
> Port the existing {{CurrentJobsOverviewHandler}} to the new REST endpoint.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)