Не удается остановить длительный запрос, когда приложение останавливается - PullRequest
0 голосов
/ 02 июля 2019

У меня есть запланированный метод в весенней заявке. В этом методе я пытаюсь удалить сущность с помощью uuid, и эта операция выполняется долго. Когда я пытаюсь перезапустить приложение, я вижу, что запрос все еще выполняется (после того, как приложение остановлено), и когда приложение пытается запустить снова, мои сценарии миграции liquibase (например, создать индекс, если не существует в этой таблице) не могут быть выполнены ( находятся в состоянии зависания). В чем дело? Как я могу остановить выполнение запроса при остановке приложения? Чтобы перезапустить приложение, я перезапускаю сервер postgresql db (это не то, что я хочу).

@Component
public class CleanMyEntitiesJob {

    @Autowired
    private MyEntityService myEntityService;

    @Scheduled(fixedDelay = 10000)
    public void clean() {
        List<String> entitiesToDelete = myEntityService.getEntitiesToDelete();
        if (CollectionUtils.isNotEmpty(entitiesToDelete)) {
            entitiesToDelete.stream().forEach(uuid -> {   
                    cameraService.delete(uuid);
            });
        }
    }
}

@Service
public class MyEntityServiceImpl implements MyEntityService {

    @Autowired
    private MyEntityRepository myEntityRepository;

    @Override
    public void delete(String uuid) {
        myEntityRepository.delete(uuid);
    }

    @Override
    public void getEntitiesToDelete(String uuid) {
        ....
    }
}

@Service
public class MyEntityRepository implements extends JpaRepository<MyEntity, String> {

    @Modifying
    @Query("DELETE FROM MyEntity WHERE uuid = ?1")
    void clean(String uuid);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...