Search in sources :

Example 1 with MinMaxAvgStats

use of org.apache.flink.runtime.checkpoint.MinMaxAvgStats in project flink by apache.

the class CheckpointStatsHandlerTest method compareCheckpointStats.

private static void compareCheckpointStats(TestCheckpointStats checkpointStats, JsonNode rootNode) {
    CheckpointStatsCounts counts = checkpointStats.counts;
    JsonNode countNode = rootNode.get("counts");
    assertEquals(counts.getNumberOfRestoredCheckpoints(), countNode.get("restored").asLong());
    assertEquals(counts.getTotalNumberOfCheckpoints(), countNode.get("total").asLong());
    assertEquals(counts.getNumberOfInProgressCheckpoints(), countNode.get("in_progress").asLong());
    assertEquals(counts.getNumberOfCompletedCheckpoints(), countNode.get("completed").asLong());
    assertEquals(counts.getNumberOfFailedCheckpoints(), countNode.get("failed").asLong());
    MinMaxAvgStats stateSizeSummary = checkpointStats.stateSizeSummary;
    JsonNode summaryNode = rootNode.get("summary");
    JsonNode sizeSummaryNode = summaryNode.get("state_size");
    assertEquals(stateSizeSummary.getMinimum(), sizeSummaryNode.get("min").asLong());
    assertEquals(stateSizeSummary.getMaximum(), sizeSummaryNode.get("max").asLong());
    assertEquals(stateSizeSummary.getAverage(), sizeSummaryNode.get("avg").asLong());
    MinMaxAvgStats durationSummary = checkpointStats.durationSummary;
    JsonNode durationSummaryNode = summaryNode.get("end_to_end_duration");
    assertEquals(durationSummary.getMinimum(), durationSummaryNode.get("min").asLong());
    assertEquals(durationSummary.getMaximum(), durationSummaryNode.get("max").asLong());
    assertEquals(durationSummary.getAverage(), durationSummaryNode.get("avg").asLong());
    MinMaxAvgStats alignmentBufferedSummary = checkpointStats.alignmentBufferedSummary;
    JsonNode alignmentBufferedNode = summaryNode.get("alignment_buffered");
    assertEquals(alignmentBufferedSummary.getMinimum(), alignmentBufferedNode.get("min").asLong());
    assertEquals(alignmentBufferedSummary.getMaximum(), alignmentBufferedNode.get("max").asLong());
    assertEquals(alignmentBufferedSummary.getAverage(), alignmentBufferedNode.get("avg").asLong());
    CompletedCheckpointStats latestCompleted = checkpointStats.latestCompleted;
    JsonNode latestNode = rootNode.get("latest");
    JsonNode latestCheckpointNode = latestNode.get("completed");
    assertEquals(latestCompleted.getCheckpointId(), latestCheckpointNode.get("id").asLong());
    assertEquals(latestCompleted.getTriggerTimestamp(), latestCheckpointNode.get("trigger_timestamp").asLong());
    assertEquals(latestCompleted.getLatestAckTimestamp(), latestCheckpointNode.get("latest_ack_timestamp").asLong());
    assertEquals(latestCompleted.getStateSize(), latestCheckpointNode.get("state_size").asLong());
    assertEquals(latestCompleted.getEndToEndDuration(), latestCheckpointNode.get("end_to_end_duration").asLong());
    assertEquals(latestCompleted.getAlignmentBuffered(), latestCheckpointNode.get("alignment_buffered").asLong());
    assertEquals(latestCompleted.getExternalPath(), latestCheckpointNode.get("external_path").asText());
    CompletedCheckpointStats latestSavepoint = checkpointStats.latestSavepoint;
    JsonNode latestSavepointNode = latestNode.get("savepoint");
    assertEquals(latestSavepoint.getCheckpointId(), latestSavepointNode.get("id").asLong());
    assertEquals(latestSavepoint.getTriggerTimestamp(), latestSavepointNode.get("trigger_timestamp").asLong());
    assertEquals(latestSavepoint.getLatestAckTimestamp(), latestSavepointNode.get("latest_ack_timestamp").asLong());
    assertEquals(latestSavepoint.getStateSize(), latestSavepointNode.get("state_size").asLong());
    assertEquals(latestSavepoint.getEndToEndDuration(), latestSavepointNode.get("end_to_end_duration").asLong());
    assertEquals(latestSavepoint.getAlignmentBuffered(), latestSavepointNode.get("alignment_buffered").asLong());
    assertEquals(latestSavepoint.getExternalPath(), latestSavepointNode.get("external_path").asText());
    FailedCheckpointStats latestFailed = checkpointStats.latestFailed;
    JsonNode latestFailedNode = latestNode.get("failed");
    assertEquals(latestFailed.getCheckpointId(), latestFailedNode.get("id").asLong());
    assertEquals(latestFailed.getTriggerTimestamp(), latestFailedNode.get("trigger_timestamp").asLong());
    assertEquals(latestFailed.getLatestAckTimestamp(), latestFailedNode.get("latest_ack_timestamp").asLong());
    assertEquals(latestFailed.getStateSize(), latestFailedNode.get("state_size").asLong());
    assertEquals(latestFailed.getEndToEndDuration(), latestFailedNode.get("end_to_end_duration").asLong());
    assertEquals(latestFailed.getAlignmentBuffered(), latestFailedNode.get("alignment_buffered").asLong());
    assertEquals(latestFailed.getFailureTimestamp(), latestFailedNode.get("failure_timestamp").asLong());
    assertEquals(latestFailed.getFailureMessage(), latestFailedNode.get("failure_message").asText());
    RestoredCheckpointStats latestRestored = checkpointStats.latestRestored;
    JsonNode latestRestoredNode = latestNode.get("restored");
    assertEquals(latestRestored.getCheckpointId(), latestRestoredNode.get("id").asLong());
    assertEquals(latestRestored.getRestoreTimestamp(), latestRestoredNode.get("restore_timestamp").asLong());
    assertEquals(latestRestored.getProperties().isSavepoint(), latestRestoredNode.get("is_savepoint").asBoolean());
    assertEquals(latestRestored.getExternalPath(), latestRestoredNode.get("external_path").asText());
    JsonNode historyNode = rootNode.get("history");
    Iterator<JsonNode> it = historyNode.iterator();
    assertTrue(it.hasNext());
    JsonNode inProgressNode = it.next();
    PendingCheckpointStats inProgress = checkpointStats.inProgress;
    compareInProgressCheckpoint(inProgress, inProgressNode);
    assertTrue(it.hasNext());
    JsonNode completedSavepointNode = it.next();
    CompletedCheckpointStats completedSavepoint = checkpointStats.completedSavepoint;
    compareCompletedSavepoint(completedSavepoint, completedSavepointNode);
    assertTrue(it.hasNext());
    JsonNode failedNode = it.next();
    FailedCheckpointStats failed = checkpointStats.failed;
    compareFailedCheckpoint(failed, failedNode);
    assertFalse(it.hasNext());
}
Also used : PendingCheckpointStats(org.apache.flink.runtime.checkpoint.PendingCheckpointStats) CheckpointStatsCounts(org.apache.flink.runtime.checkpoint.CheckpointStatsCounts) RestoredCheckpointStats(org.apache.flink.runtime.checkpoint.RestoredCheckpointStats) JsonNode(com.fasterxml.jackson.databind.JsonNode) CompletedCheckpointStats(org.apache.flink.runtime.checkpoint.CompletedCheckpointStats) FailedCheckpointStats(org.apache.flink.runtime.checkpoint.FailedCheckpointStats) MinMaxAvgStats(org.apache.flink.runtime.checkpoint.MinMaxAvgStats)

Example 2 with MinMaxAvgStats

use of org.apache.flink.runtime.checkpoint.MinMaxAvgStats in project flink by apache.

the class CheckpointStatsHandlerTest method createTestCheckpointStats.

private static TestCheckpointStats createTestCheckpointStats() {
    // Counts
    CheckpointStatsCounts counts = mock(CheckpointStatsCounts.class);
    when(counts.getNumberOfRestoredCheckpoints()).thenReturn(123123123L);
    when(counts.getTotalNumberOfCheckpoints()).thenReturn(12981231203L);
    when(counts.getNumberOfInProgressCheckpoints()).thenReturn(191919);
    when(counts.getNumberOfCompletedCheckpoints()).thenReturn(882828200L);
    when(counts.getNumberOfFailedCheckpoints()).thenReturn(99171510L);
    // Summary
    CompletedCheckpointStatsSummary summary = mock(CompletedCheckpointStatsSummary.class);
    MinMaxAvgStats stateSizeSummary = mock(MinMaxAvgStats.class);
    when(stateSizeSummary.getMinimum()).thenReturn(81238123L);
    when(stateSizeSummary.getMaximum()).thenReturn(19919191999L);
    when(stateSizeSummary.getAverage()).thenReturn(1133L);
    MinMaxAvgStats durationSummary = mock(MinMaxAvgStats.class);
    when(durationSummary.getMinimum()).thenReturn(1182L);
    when(durationSummary.getMaximum()).thenReturn(88654L);
    when(durationSummary.getAverage()).thenReturn(171L);
    MinMaxAvgStats alignmentBufferedSummary = mock(MinMaxAvgStats.class);
    when(alignmentBufferedSummary.getMinimum()).thenReturn(81818181899L);
    when(alignmentBufferedSummary.getMaximum()).thenReturn(89999911118654L);
    when(alignmentBufferedSummary.getAverage()).thenReturn(11203131L);
    when(summary.getStateSizeStats()).thenReturn(stateSizeSummary);
    when(summary.getEndToEndDurationStats()).thenReturn(durationSummary);
    when(summary.getAlignmentBufferedStats()).thenReturn(alignmentBufferedSummary);
    // Latest
    CompletedCheckpointStats latestCompleted = mock(CompletedCheckpointStats.class);
    when(latestCompleted.getCheckpointId()).thenReturn(1992139L);
    when(latestCompleted.getTriggerTimestamp()).thenReturn(1919191900L);
    when(latestCompleted.getLatestAckTimestamp()).thenReturn(1977791901L);
    when(latestCompleted.getStateSize()).thenReturn(111939272822L);
    when(latestCompleted.getEndToEndDuration()).thenReturn(121191L);
    when(latestCompleted.getAlignmentBuffered()).thenReturn(1L);
    when(latestCompleted.getExternalPath()).thenReturn("latest-completed-external-path");
    CompletedCheckpointStats latestSavepoint = mock(CompletedCheckpointStats.class);
    when(latestSavepoint.getCheckpointId()).thenReturn(1992140L);
    when(latestSavepoint.getTriggerTimestamp()).thenReturn(1919191900L);
    when(latestSavepoint.getLatestAckTimestamp()).thenReturn(1977791901L);
    when(latestSavepoint.getStateSize()).thenReturn(111939272822L);
    when(latestSavepoint.getEndToEndDuration()).thenReturn(121191L);
    when(latestCompleted.getAlignmentBuffered()).thenReturn(182813L);
    when(latestSavepoint.getExternalPath()).thenReturn("savepoint-external-path");
    FailedCheckpointStats latestFailed = mock(FailedCheckpointStats.class);
    when(latestFailed.getCheckpointId()).thenReturn(1112L);
    when(latestFailed.getTriggerTimestamp()).thenReturn(12828L);
    when(latestFailed.getLatestAckTimestamp()).thenReturn(1901L);
    when(latestFailed.getFailureTimestamp()).thenReturn(11999976L);
    when(latestFailed.getStateSize()).thenReturn(111L);
    when(latestFailed.getEndToEndDuration()).thenReturn(12L);
    when(latestFailed.getAlignmentBuffered()).thenReturn(2L);
    when(latestFailed.getFailureMessage()).thenReturn("expected cause");
    RestoredCheckpointStats latestRestored = mock(RestoredCheckpointStats.class);
    when(latestRestored.getCheckpointId()).thenReturn(1199L);
    when(latestRestored.getRestoreTimestamp()).thenReturn(434242L);
    when(latestRestored.getProperties()).thenReturn(CheckpointProperties.forStandardSavepoint());
    when(latestRestored.getExternalPath()).thenReturn("restored savepoint path");
    // History
    CheckpointStatsHistory history = mock(CheckpointStatsHistory.class);
    List<AbstractCheckpointStats> checkpoints = new ArrayList<>();
    PendingCheckpointStats inProgress = mock(PendingCheckpointStats.class);
    when(inProgress.getCheckpointId()).thenReturn(1992141L);
    when(inProgress.getStatus()).thenReturn(CheckpointStatsStatus.IN_PROGRESS);
    when(inProgress.getProperties()).thenReturn(CheckpointProperties.forStandardCheckpoint());
    when(inProgress.getTriggerTimestamp()).thenReturn(1919191900L);
    when(inProgress.getLatestAckTimestamp()).thenReturn(1977791901L);
    when(inProgress.getStateSize()).thenReturn(111939272822L);
    when(inProgress.getEndToEndDuration()).thenReturn(121191L);
    when(inProgress.getAlignmentBuffered()).thenReturn(1L);
    when(inProgress.getNumberOfSubtasks()).thenReturn(501);
    when(inProgress.getNumberOfAcknowledgedSubtasks()).thenReturn(101);
    CompletedCheckpointStats completedSavepoint = mock(CompletedCheckpointStats.class);
    when(completedSavepoint.getCheckpointId()).thenReturn(1322139L);
    when(completedSavepoint.getStatus()).thenReturn(CheckpointStatsStatus.COMPLETED);
    when(completedSavepoint.getProperties()).thenReturn(CheckpointProperties.forStandardSavepoint());
    when(completedSavepoint.getTriggerTimestamp()).thenReturn(191900L);
    when(completedSavepoint.getLatestAckTimestamp()).thenReturn(197791901L);
    when(completedSavepoint.getStateSize()).thenReturn(1119822L);
    when(completedSavepoint.getEndToEndDuration()).thenReturn(12191L);
    when(completedSavepoint.getAlignmentBuffered()).thenReturn(111L);
    when(completedSavepoint.getNumberOfSubtasks()).thenReturn(33501);
    when(completedSavepoint.getNumberOfAcknowledgedSubtasks()).thenReturn(211);
    when(completedSavepoint.isDiscarded()).thenReturn(true);
    when(completedSavepoint.getExternalPath()).thenReturn("completed-external-path");
    FailedCheckpointStats failed = mock(FailedCheckpointStats.class);
    when(failed.getCheckpointId()).thenReturn(110719L);
    when(failed.getStatus()).thenReturn(CheckpointStatsStatus.FAILED);
    when(failed.getProperties()).thenReturn(CheckpointProperties.forStandardCheckpoint());
    when(failed.getTriggerTimestamp()).thenReturn(191900L);
    when(failed.getLatestAckTimestamp()).thenReturn(197791901L);
    when(failed.getStateSize()).thenReturn(1119822L);
    when(failed.getEndToEndDuration()).thenReturn(12191L);
    when(failed.getAlignmentBuffered()).thenReturn(111L);
    when(failed.getNumberOfSubtasks()).thenReturn(33501);
    when(failed.getNumberOfAcknowledgedSubtasks()).thenReturn(1);
    when(failed.getFailureTimestamp()).thenReturn(119230L);
    when(failed.getFailureMessage()).thenReturn("failure message");
    checkpoints.add(inProgress);
    checkpoints.add(completedSavepoint);
    checkpoints.add(failed);
    when(history.getCheckpoints()).thenReturn(checkpoints);
    when(history.getLatestCompletedCheckpoint()).thenReturn(latestCompleted);
    when(history.getLatestSavepoint()).thenReturn(latestSavepoint);
    when(history.getLatestFailedCheckpoint()).thenReturn(latestFailed);
    CheckpointStatsSnapshot snapshot = mock(CheckpointStatsSnapshot.class);
    when(snapshot.getCounts()).thenReturn(counts);
    when(snapshot.getSummaryStats()).thenReturn(summary);
    when(snapshot.getHistory()).thenReturn(history);
    when(snapshot.getLatestRestoredCheckpoint()).thenReturn(latestRestored);
    AccessExecutionGraph graph = mock(AccessExecutionGraph.class);
    when(graph.getCheckpointStatsSnapshot()).thenReturn(snapshot);
    return new TestCheckpointStats(graph, counts, stateSizeSummary, durationSummary, alignmentBufferedSummary, summary, latestCompleted, latestSavepoint, latestFailed, latestRestored, inProgress, completedSavepoint, failed, history, snapshot);
}
Also used : CheckpointStatsCounts(org.apache.flink.runtime.checkpoint.CheckpointStatsCounts) AbstractCheckpointStats(org.apache.flink.runtime.checkpoint.AbstractCheckpointStats) CompletedCheckpointStatsSummary(org.apache.flink.runtime.checkpoint.CompletedCheckpointStatsSummary) ArrayList(java.util.ArrayList) AccessExecutionGraph(org.apache.flink.runtime.executiongraph.AccessExecutionGraph) MinMaxAvgStats(org.apache.flink.runtime.checkpoint.MinMaxAvgStats) PendingCheckpointStats(org.apache.flink.runtime.checkpoint.PendingCheckpointStats) RestoredCheckpointStats(org.apache.flink.runtime.checkpoint.RestoredCheckpointStats) CheckpointStatsHistory(org.apache.flink.runtime.checkpoint.CheckpointStatsHistory) CompletedCheckpointStats(org.apache.flink.runtime.checkpoint.CompletedCheckpointStats) FailedCheckpointStats(org.apache.flink.runtime.checkpoint.FailedCheckpointStats) CheckpointStatsSnapshot(org.apache.flink.runtime.checkpoint.CheckpointStatsSnapshot)

Example 3 with MinMaxAvgStats

use of org.apache.flink.runtime.checkpoint.MinMaxAvgStats in project flink by apache.

the class CheckpointStatsSubtaskDetailsHandlerTest method createMinMaxAvgStats.

private static MinMaxAvgStats createMinMaxAvgStats(ThreadLocalRandom rand) {
    MinMaxAvgStats mma = mock(MinMaxAvgStats.class);
    when(mma.getMinimum()).thenReturn(rand.nextLong(1024));
    when(mma.getMaximum()).thenReturn(rand.nextLong(1024));
    when(mma.getAverage()).thenReturn(rand.nextLong(1024));
    return mma;
}
Also used : MinMaxAvgStats(org.apache.flink.runtime.checkpoint.MinMaxAvgStats)

Example 4 with MinMaxAvgStats

use of org.apache.flink.runtime.checkpoint.MinMaxAvgStats in project flink by apache.

the class CheckpointStatsDetailsSubtasksHandler method createSubtaskCheckpointDetailsJson.

private static String createSubtaskCheckpointDetailsJson(AbstractCheckpointStats checkpoint, TaskStateStats taskStats) throws IOException {
    StringWriter writer = new StringWriter();
    JsonGenerator gen = JsonFactory.jacksonFactory.createGenerator(writer);
    gen.writeStartObject();
    // Overview
    gen.writeNumberField("id", checkpoint.getCheckpointId());
    gen.writeStringField("status", checkpoint.getStatus().toString());
    gen.writeNumberField("latest_ack_timestamp", taskStats.getLatestAckTimestamp());
    gen.writeNumberField("state_size", taskStats.getStateSize());
    gen.writeNumberField("end_to_end_duration", taskStats.getEndToEndDuration(checkpoint.getTriggerTimestamp()));
    gen.writeNumberField("alignment_buffered", taskStats.getAlignmentBuffered());
    gen.writeNumberField("num_subtasks", taskStats.getNumberOfSubtasks());
    gen.writeNumberField("num_acknowledged_subtasks", taskStats.getNumberOfAcknowledgedSubtasks());
    if (taskStats.getNumberOfAcknowledgedSubtasks() > 0) {
        gen.writeObjectFieldStart("summary");
        gen.writeObjectFieldStart("state_size");
        writeMinMaxAvg(gen, taskStats.getSummaryStats().getStateSizeStats());
        gen.writeEndObject();
        gen.writeObjectFieldStart("end_to_end_duration");
        MinMaxAvgStats ackTimestampStats = taskStats.getSummaryStats().getAckTimestampStats();
        gen.writeNumberField("min", Math.max(0, ackTimestampStats.getMinimum() - checkpoint.getTriggerTimestamp()));
        gen.writeNumberField("max", Math.max(0, ackTimestampStats.getMaximum() - checkpoint.getTriggerTimestamp()));
        gen.writeNumberField("avg", Math.max(0, ackTimestampStats.getAverage() - checkpoint.getTriggerTimestamp()));
        gen.writeEndObject();
        gen.writeObjectFieldStart("checkpoint_duration");
        gen.writeObjectFieldStart("sync");
        writeMinMaxAvg(gen, taskStats.getSummaryStats().getSyncCheckpointDurationStats());
        gen.writeEndObject();
        gen.writeObjectFieldStart("async");
        writeMinMaxAvg(gen, taskStats.getSummaryStats().getAsyncCheckpointDurationStats());
        gen.writeEndObject();
        gen.writeEndObject();
        gen.writeObjectFieldStart("alignment");
        gen.writeObjectFieldStart("buffered");
        writeMinMaxAvg(gen, taskStats.getSummaryStats().getAlignmentBufferedStats());
        gen.writeEndObject();
        gen.writeObjectFieldStart("duration");
        writeMinMaxAvg(gen, taskStats.getSummaryStats().getAlignmentDurationStats());
        gen.writeEndObject();
        gen.writeEndObject();
        gen.writeEndObject();
    }
    SubtaskStateStats[] subtasks = taskStats.getSubtaskStats();
    gen.writeArrayFieldStart("subtasks");
    for (int i = 0; i < subtasks.length; i++) {
        SubtaskStateStats subtask = subtasks[i];
        gen.writeStartObject();
        gen.writeNumberField("index", i);
        if (subtask != null) {
            gen.writeStringField("status", "completed");
            gen.writeNumberField("ack_timestamp", subtask.getAckTimestamp());
            gen.writeNumberField("end_to_end_duration", subtask.getEndToEndDuration(checkpoint.getTriggerTimestamp()));
            gen.writeNumberField("state_size", subtask.getStateSize());
            gen.writeObjectFieldStart("checkpoint");
            gen.writeNumberField("sync", subtask.getSyncCheckpointDuration());
            gen.writeNumberField("async", subtask.getAsyncCheckpointDuration());
            gen.writeEndObject();
            gen.writeObjectFieldStart("alignment");
            gen.writeNumberField("buffered", subtask.getAlignmentBuffered());
            gen.writeNumberField("duration", subtask.getAlignmentDuration());
            gen.writeEndObject();
        } else {
            gen.writeStringField("status", "pending_or_failed");
        }
        gen.writeEndObject();
    }
    gen.writeEndArray();
    gen.writeEndObject();
    gen.close();
    return writer.toString();
}
Also used : StringWriter(java.io.StringWriter) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) SubtaskStateStats(org.apache.flink.runtime.checkpoint.SubtaskStateStats) MinMaxAvgStats(org.apache.flink.runtime.checkpoint.MinMaxAvgStats)

Aggregations

MinMaxAvgStats (org.apache.flink.runtime.checkpoint.MinMaxAvgStats)4 CheckpointStatsCounts (org.apache.flink.runtime.checkpoint.CheckpointStatsCounts)2 CompletedCheckpointStats (org.apache.flink.runtime.checkpoint.CompletedCheckpointStats)2 FailedCheckpointStats (org.apache.flink.runtime.checkpoint.FailedCheckpointStats)2 PendingCheckpointStats (org.apache.flink.runtime.checkpoint.PendingCheckpointStats)2 RestoredCheckpointStats (org.apache.flink.runtime.checkpoint.RestoredCheckpointStats)2 JsonGenerator (com.fasterxml.jackson.core.JsonGenerator)1 JsonNode (com.fasterxml.jackson.databind.JsonNode)1 StringWriter (java.io.StringWriter)1 ArrayList (java.util.ArrayList)1 AbstractCheckpointStats (org.apache.flink.runtime.checkpoint.AbstractCheckpointStats)1 CheckpointStatsHistory (org.apache.flink.runtime.checkpoint.CheckpointStatsHistory)1 CheckpointStatsSnapshot (org.apache.flink.runtime.checkpoint.CheckpointStatsSnapshot)1 CompletedCheckpointStatsSummary (org.apache.flink.runtime.checkpoint.CompletedCheckpointStatsSummary)1 SubtaskStateStats (org.apache.flink.runtime.checkpoint.SubtaskStateStats)1 AccessExecutionGraph (org.apache.flink.runtime.executiongraph.AccessExecutionGraph)1