private PollForDecisionTaskResponse fillInEventHistory()

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();

    }