in flux/src/main/java/software/amazon/aws/clients/swf/flux/poller/DecisionTaskPoller.java [244:287]
private PollForDecisionTaskResponse fillInEventHistory(MetricRecorder metrics,
PollForDecisionTaskResponse responseWithFirstPage) {
List<HistoryEvent> events = new ArrayList<>(responseWithFirstPage.events());
int historyPageCount = 1;
String nextPageToken = responseWithFirstPage.nextPageToken();
while (nextPageToken != null && !nextPageToken.equals("")) {
log.debug("Retrieving another page of history events for task {}", responseWithFirstPage.taskToken());
PollForDecisionTaskRequest request = PollForDecisionTaskRequest.builder()
.domain(domain)
.taskList(TaskList.builder().name(taskListName).build())
.identity(identity)
.reverseOrder(true)
.nextPageToken(nextPageToken)
.build();
PollForDecisionTaskResponse nextPaginatedResult
= RetryUtils.executeWithInlineBackoff(() -> swf.pollForDecisionTask(request),
20, Duration.ofSeconds(2), metrics,
DECISION_TASK_EVENT_HISTORY_LOOKUP_TIME_METRIC_PREFIX);
if (nextPaginatedResult == null) {
break;
}
if (nextPaginatedResult.events() != null) {
events.addAll(nextPaginatedResult.events());
}
historyPageCount += 1;
nextPageToken = nextPaginatedResult.nextPageToken();
}
metrics.addCount(formatDecisionTaskEventHistoryPageCountMetricName(responseWithFirstPage.workflowType().name()),
historyPageCount);
log.debug("Decision task for workflow {} id {} has {} events.",
responseWithFirstPage.workflowType().name(),
responseWithFirstPage.workflowExecution().runId(),
responseWithFirstPage.events().size()
);
return responseWithFirstPage.toBuilder().nextPageToken(null).events(events).build();
}