use of org.apache.flink.runtime.executiongraph.AccessExecutionGraph in project flink by apache.
the class ExecutionGraphHolder method getExecutionGraph.
/**
* Retrieves the execution graph with {@link JobID} jid or null if it cannot be found.
*
* @param jid jobID of the execution graph to be retrieved
* @return the retrieved execution graph or null if it is not retrievable
*/
public AccessExecutionGraph getExecutionGraph(JobID jid, ActorGateway jobManager) {
AccessExecutionGraph cached = cache.get(jid);
if (cached != null) {
return cached;
}
try {
if (jobManager != null) {
Future<Object> future = jobManager.ask(new JobManagerMessages.RequestJob(jid), timeout);
Object result = Await.result(future, timeout);
if (result instanceof JobManagerMessages.JobNotFound) {
return null;
} else if (result instanceof JobManagerMessages.JobFound) {
AccessExecutionGraph eg = ((JobManagerMessages.JobFound) result).executionGraph();
cache.put(jid, eg);
return eg;
} else {
throw new RuntimeException("Unknown response from JobManager / Archive: " + result);
}
} else {
LOG.warn("No connection to the leading JobManager.");
return null;
}
} catch (Exception e) {
throw new RuntimeException("Error requesting execution graph", e);
}
}
use of org.apache.flink.runtime.executiongraph.AccessExecutionGraph in project flink by apache.
the class AbstractExecutionGraphRequestHandler method handleJsonRequest.
@Override
public String handleJsonRequest(Map<String, String> pathParams, Map<String, String> queryParams, ActorGateway jobManager) throws Exception {
String jidString = pathParams.get("jobid");
if (jidString == null) {
throw new RuntimeException("JobId parameter missing");
}
JobID jid;
try {
jid = JobID.fromHexString(jidString);
} catch (Exception e) {
throw new RuntimeException("Invalid JobID string '" + jidString + "': " + e.getMessage());
}
AccessExecutionGraph eg = executionGraphHolder.getExecutionGraph(jid, jobManager);
if (eg == null) {
throw new NotFoundException("Could not find job with id " + jid);
}
return handleRequest(eg, pathParams);
}
use of org.apache.flink.runtime.executiongraph.AccessExecutionGraph in project flink by apache.
the class CheckpointStatsDetailsHandlerTest method testCheckpointNotFound.
/**
* Test lookup of not existing checkpoint in history.
*/
@Test
public void testCheckpointNotFound() throws Exception {
CheckpointStatsHistory history = mock(CheckpointStatsHistory.class);
// not found
when(history.getCheckpointById(anyLong())).thenReturn(null);
CheckpointStatsSnapshot snapshot = mock(CheckpointStatsSnapshot.class);
when(snapshot.getHistory()).thenReturn(history);
AccessExecutionGraph graph = mock(AccessExecutionGraph.class);
when(graph.getCheckpointStatsSnapshot()).thenReturn(snapshot);
CheckpointStatsDetailsHandler handler = new CheckpointStatsDetailsHandler(mock(ExecutionGraphHolder.class), new CheckpointStatsCache(0));
Map<String, String> params = new HashMap<>();
params.put("checkpointid", "123");
String json = handler.handleRequest(graph, params);
assertEquals("{}", json);
verify(history, times(1)).getCheckpointById(anyLong());
}
use of org.apache.flink.runtime.executiongraph.AccessExecutionGraph in project flink by apache.
the class CheckpointStatsDetailsHandlerTest method testNoCheckpointIdParam.
/**
* Tests request with missing checkpoint ID param.
*/
@Test
public void testNoCheckpointIdParam() throws Exception {
AccessExecutionGraph graph = mock(AccessExecutionGraph.class);
CheckpointStatsDetailsHandler handler = new CheckpointStatsDetailsHandler(mock(ExecutionGraphHolder.class), new CheckpointStatsCache(0));
String json = handler.handleRequest(graph, Collections.<String, String>emptyMap());
assertEquals("{}", json);
}
use of org.apache.flink.runtime.executiongraph.AccessExecutionGraph 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);
}
Aggregations