Метод конечной точки пружинного контроллера выполняется дважды - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть следующий метод контроллера:

@Transactional
@PostMapping(path = "/add")
@Secured({Constants.ADMIN, Constants.DATAMANAGER})
public DeferredResult<ResponseEntity> addNewCitizens(
        @RequestBody List<Citizen> citizens) {

    // Time out in 30 minutes
    DeferredResult<ResponseEntity> output = new DeferredResult<>((long) (1000 * 60 * 30));

    ForkJoinPool.commonPool().submit(() -> {

        // Long operation...
        output.setResult(new ResponseEntity(HttpStatus.OK));

    }

    return output;
}

Метод обычно получает много данных и использует их для обновления моей базы данных. Для данных, с которыми я сейчас тестирую, это занимает 3-4 минуты.

По какой-то причине, когда для обработки запроса требуется некоторое время, он запускается заново, когда он завершается один раз, как если бы он получил другой запрос. Приложение Angular, от которого я отправил запрос, никогда не получает ответ в этом случае. Для быстрых запросов это работает отлично. Кроме того, я проверил вкладку сети в Chrome и вижу только один запрос, отправляемый на конечную точку.

Что может быть причиной, и что я могу сделать, чтобы это исправить? Спасибо!

Дополнительная информация: это происходит только при развертывании службы на удаленном сервере, а не при тестировании на локальном компьютере ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...