Github user tillrohrmann commented on a diff in the pull request:

    https://github.com/apache/flink/pull/4763#discussion_r143499239
  
    --- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/messages/checkpoints/CheckpointStatistics.java
 ---
    @@ -0,0 +1,534 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package org.apache.flink.runtime.rest.messages.checkpoints;
    +
    +import org.apache.flink.runtime.checkpoint.AbstractCheckpointStats;
    +import org.apache.flink.runtime.checkpoint.CheckpointStatsStatus;
    +import org.apache.flink.runtime.checkpoint.CompletedCheckpointStats;
    +import org.apache.flink.runtime.checkpoint.FailedCheckpointStats;
    +import org.apache.flink.runtime.checkpoint.TaskStateStats;
    +import org.apache.flink.runtime.jobgraph.JobVertexID;
    +import org.apache.flink.runtime.rest.messages.ResponseBody;
    +import org.apache.flink.runtime.rest.messages.json.JobVertexIDDeserializer;
    +import org.apache.flink.runtime.rest.messages.json.JobVertexIDSerializer;
    +import org.apache.flink.util.Preconditions;
    +
    +import com.fasterxml.jackson.annotation.JsonCreator;
    +import com.fasterxml.jackson.annotation.JsonInclude;
    +import com.fasterxml.jackson.annotation.JsonProperty;
    +import com.fasterxml.jackson.annotation.JsonSubTypes;
    +import com.fasterxml.jackson.annotation.JsonTypeInfo;
    +import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
    +import com.fasterxml.jackson.databind.annotation.JsonSerialize;
    +
    +import javax.annotation.Nullable;
    +
    +import java.util.Collection;
    +import java.util.HashMap;
    +import java.util.Map;
    +import java.util.Objects;
    +
    +/**
    + * Statistics for a checkpoint.
    + */
    +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = 
JsonTypeInfo.As.PROPERTY, property = "@class")
    +@JsonSubTypes({
    +   @JsonSubTypes.Type(value = 
CheckpointStatistics.CompletedCheckpointStatistics.class, name = "completed"),
    +   @JsonSubTypes.Type(value = 
CheckpointStatistics.FailedCheckpointStatistics.class, name = "failed")})
    +@JsonInclude(JsonInclude.Include.NON_NULL)
    +public class CheckpointStatistics implements ResponseBody {
    +
    +   public static final String FIELD_NAME_ID = "id";
    +
    +   public static final String FIELD_NAME_STATUS = "status";
    +
    +   public static final String FIELD_NAME_IS_SAVEPOINT = "is_savepoint";
    +
    +   public static final String FIELD_NAME_TRIGGER_TIMESTAMP = 
"trigger_timestamp";
    +
    +   public static final String FIELD_NAME_LATEST_ACK_TIMESTAMP = 
"latest_ack_timestamp";
    +
    +   public static final String FIELD_NAME_STATE_SIZE = "state_size";
    +
    +   public static final String FIELD_NAME_DURATION = "end_to_end_duration";
    +
    +   public static final String FIELD_NAME_ALIGNMENT_BUFFERED = 
"alignment_buffered";
    +
    +   public static final String FIELD_NAME_NUM_SUBTASKS = "num_subtasks";
    +
    +   public static final String FIELD_NAME_NUM_ACK_SUBTASKS = 
"num_acknowledged_subtasks";
    +
    +   public static final String FIELD_NAME_TASKS = "tasks";
    +
    +   @JsonProperty(FIELD_NAME_ID)
    +   private final long id;
    +
    +   @JsonProperty(FIELD_NAME_STATUS)
    +   private final CheckpointStatsStatus status;
    +
    +   @JsonProperty(FIELD_NAME_IS_SAVEPOINT)
    +   private final boolean savepoint;
    +
    +   @JsonProperty(FIELD_NAME_TRIGGER_TIMESTAMP)
    +   private final long triggerTimestamp;
    +
    +   @JsonProperty(FIELD_NAME_LATEST_ACK_TIMESTAMP)
    +   private final long latestAckTimestamp;
    +
    +   @JsonProperty(FIELD_NAME_STATE_SIZE)
    +   private final long stateSize;
    +
    +   @JsonProperty(FIELD_NAME_DURATION)
    +   private final long duration;
    +
    +   @JsonProperty(FIELD_NAME_ALIGNMENT_BUFFERED)
    +   private final long alignmentBuffered;
    +
    +   @JsonProperty(FIELD_NAME_NUM_SUBTASKS)
    +   private final int numSubtasks;
    +
    +   @JsonProperty(FIELD_NAME_NUM_ACK_SUBTASKS)
    +   private final int numAckSubtasks;
    +
    +   @JsonProperty(FIELD_NAME_TASKS)
    +   @JsonSerialize(keyUsing = JobVertexIDSerializer.class)
    +   @Nullable
    +   private final Map<JobVertexID, TaskCheckpointStatistics> 
checkpointStatisticsPerTask;
    +
    +   @JsonCreator
    +   private CheckpointStatistics(
    +                   @JsonProperty(FIELD_NAME_ID) long id,
    +                   @JsonProperty(FIELD_NAME_STATUS) CheckpointStatsStatus 
status,
    +                   @JsonProperty(FIELD_NAME_IS_SAVEPOINT) boolean 
savepoint,
    +                   @JsonProperty(FIELD_NAME_TRIGGER_TIMESTAMP) long 
triggerTimestamp,
    +                   @JsonProperty(FIELD_NAME_LATEST_ACK_TIMESTAMP) long 
latestAckTimestamp,
    +                   @JsonProperty(FIELD_NAME_STATE_SIZE) long stateSize,
    +                   @JsonProperty(FIELD_NAME_DURATION) long duration,
    +                   @JsonProperty(FIELD_NAME_ALIGNMENT_BUFFERED) long 
alignmentBuffered,
    +                   @JsonProperty(FIELD_NAME_NUM_SUBTASKS) int numSubtasks,
    +                   @JsonProperty(FIELD_NAME_NUM_ACK_SUBTASKS) int 
numAckSubtasks,
    +                   @JsonDeserialize(keyUsing = 
JobVertexIDDeserializer.class) @JsonProperty(FIELD_NAME_TASKS) @Nullable 
Map<JobVertexID, TaskCheckpointStatistics> checkpointStatisticsPerTask) {
    +           this.id = id;
    --- End diff --
    
    Good catch. Will add the checks.


---

Reply via email to