Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* 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.CheckpointStatsStatus;
import org.apache.flink.util.Preconditions;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonCreator;
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import java.util.Objects;
/**
* Task checkpoint statistics which also includes information about the sub task
* checkpoint statistics.
*/
public final class TaskCheckpointStatisticsWithSubtaskDetails extends TaskCheckpointStatistics {
public static final String FIELD_NAME_SUMMARY = "summary";
public static final String FIELD_NAME_SUBTASKS_CHECKPOINT_STATISTICS = "subtasks";
@JsonProperty(FIELD_NAME_SUMMARY)
private final Summary summary;
@JsonProperty(FIELD_NAME_SUBTASKS_CHECKPOINT_STATISTICS)
private final List subtaskCheckpointStatistics;
@JsonCreator
public TaskCheckpointStatisticsWithSubtaskDetails(
@JsonProperty(FIELD_NAME_ID) long checkpointId,
@JsonProperty(FIELD_NAME_CHECKPOINT_STATUS) CheckpointStatsStatus checkpointStatus,
@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,
@JsonProperty(FIELD_NAME_SUMMARY) Summary summary,
@JsonProperty(FIELD_NAME_SUBTASKS_CHECKPOINT_STATISTICS) List subtaskCheckpointStatistics) {
super(
checkpointId,
checkpointStatus,
latestAckTimestamp,
stateSize,
duration,
alignmentBuffered,
numSubtasks,
numAckSubtasks);
this.summary = Preconditions.checkNotNull(summary);
this.subtaskCheckpointStatistics = Preconditions.checkNotNull(subtaskCheckpointStatistics);
}
public Summary getSummary() {
return summary;
}
public List getSubtaskCheckpointStatistics() {
return subtaskCheckpointStatistics;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
if (!super.equals(o)) {
return false;
}
TaskCheckpointStatisticsWithSubtaskDetails that = (TaskCheckpointStatisticsWithSubtaskDetails) o;
return Objects.equals(summary, that.summary) &&
Objects.equals(subtaskCheckpointStatistics, that.subtaskCheckpointStatistics);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), summary, subtaskCheckpointStatistics);
}
// -----------------------------------------------------------------------------------
// Static inner classes
// -----------------------------------------------------------------------------------
/**
* Summary of the checkpoint statistics for a given task.
*/
public static final class Summary {
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_CHECKPOINT_DURATION = "checkpoint_duration";
public static final String FIELD_NAME_ALIGNMENT = "alignment";
@JsonProperty(FIELD_NAME_STATE_SIZE)
private final MinMaxAvgStatistics stateSize;
@JsonProperty(FIELD_NAME_DURATION)
private final MinMaxAvgStatistics duration;
@JsonProperty(FIELD_NAME_CHECKPOINT_DURATION)
private final CheckpointDuration checkpointDuration;
@JsonProperty(FIELD_NAME_ALIGNMENT)
private final CheckpointAlignment checkpointAlignment;
@JsonCreator
public Summary(
@JsonProperty(FIELD_NAME_STATE_SIZE) MinMaxAvgStatistics stateSize,
@JsonProperty(FIELD_NAME_DURATION) MinMaxAvgStatistics duration,
@JsonProperty(FIELD_NAME_CHECKPOINT_DURATION) CheckpointDuration checkpointDuration,
@JsonProperty(FIELD_NAME_ALIGNMENT) CheckpointAlignment checkpointAlignment) {
this.stateSize = Preconditions.checkNotNull(stateSize);
this.duration = Preconditions.checkNotNull(duration);
this.checkpointDuration = Preconditions.checkNotNull(checkpointDuration);
this.checkpointAlignment = Preconditions.checkNotNull(checkpointAlignment);
}
public MinMaxAvgStatistics getStateSize() {
return stateSize;
}
public MinMaxAvgStatistics getDuration() {
return duration;
}
public CheckpointDuration getCheckpointDuration() {
return checkpointDuration;
}
public CheckpointAlignment getCheckpointAlignment() {
return checkpointAlignment;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Summary summary = (Summary) o;
return Objects.equals(stateSize, summary.stateSize) &&
Objects.equals(duration, summary.duration) &&
Objects.equals(checkpointDuration, summary.checkpointDuration) &&
Objects.equals(checkpointAlignment, summary.checkpointAlignment);
}
@Override
public int hashCode() {
return Objects.hash(stateSize, duration, checkpointDuration, checkpointAlignment);
}
}
/**
* Duration of a checkpoint split up into its synchronous and asynchronous part.
*/
public static final class CheckpointDuration {
public static final String FIELD_NAME_SYNCHRONOUS_DURATION = "sync";
public static final String FIELD_NAME_ASYNCHRONOUS_DURATION = "async";
@JsonProperty(FIELD_NAME_SYNCHRONOUS_DURATION)
private final MinMaxAvgStatistics synchronousDuration;
@JsonProperty(FIELD_NAME_ASYNCHRONOUS_DURATION)
private final MinMaxAvgStatistics asynchronousDuration;
@JsonCreator
public CheckpointDuration(
@JsonProperty(FIELD_NAME_SYNCHRONOUS_DURATION) MinMaxAvgStatistics synchronousDuration,
@JsonProperty(FIELD_NAME_ASYNCHRONOUS_DURATION) MinMaxAvgStatistics asynchronousDuration) {
this.synchronousDuration = Preconditions.checkNotNull(synchronousDuration);
this.asynchronousDuration = Preconditions.checkNotNull(asynchronousDuration);
}
public MinMaxAvgStatistics getSynchronousDuration() {
return synchronousDuration;
}
public MinMaxAvgStatistics getAsynchronousDuration() {
return asynchronousDuration;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
CheckpointDuration that = (CheckpointDuration) o;
return Objects.equals(synchronousDuration, that.synchronousDuration) &&
Objects.equals(asynchronousDuration, that.asynchronousDuration);
}
@Override
public int hashCode() {
return Objects.hash(synchronousDuration, asynchronousDuration);
}
}
/**
* Alignment information for a specific checkpoint at a given task.
*/
public static final class CheckpointAlignment {
public static final String FIELD_NAME_BUFFERED_DATA = "buffered";
public static final String FIELD_NAME_DURATION = "duration";
@JsonProperty(FIELD_NAME_BUFFERED_DATA)
private final MinMaxAvgStatistics bufferedData;
@JsonProperty(FIELD_NAME_DURATION)
private final MinMaxAvgStatistics duration;
@JsonCreator
public CheckpointAlignment(
@JsonProperty(FIELD_NAME_BUFFERED_DATA) MinMaxAvgStatistics bufferedData,
@JsonProperty(FIELD_NAME_DURATION) MinMaxAvgStatistics duration) {
this.bufferedData = bufferedData;
this.duration = duration;
}
public MinMaxAvgStatistics getBufferedData() {
return bufferedData;
}
public MinMaxAvgStatistics getDuration() {
return duration;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
CheckpointAlignment alignment = (CheckpointAlignment) o;
return Objects.equals(bufferedData, alignment.bufferedData) &&
Objects.equals(duration, alignment.duration);
}
@Override
public int hashCode() {
return Objects.hash(bufferedData, duration);
}
}
}