Откат транзакции не происходит в завершаемом будущем

#java #sprin&-boot #hibernate #jpa #asynchronous

#java #весенняя загрузка #переход в спящий режим #jpa #асинхронный

Вопрос:

Я пытаюсь вызвать метод асинхронно с помощью CompleteableFuture в java

Как показано ниже:

 @Transactional(propa&ation=Propa&ation.Required,readOnly=false)
public boolean updateStatusandMove(){
//update value in database
//move file via rest service

}
  

Теперь этот метод вызывается асинхронно, с несколькими завершаемыми фьючерсами.
В каком-то завершаемом будущем сбой, а в каком-то успешный, в зависимости от доступности папки при перемещении файла. Для тех, у кого произошел сбой из-за перемещения файла, возникает исключение httpserver, значения базы данных, которые были обновлены перед перемещением, должны быть откатаны, но этого не происходит. Итак, короче говоря, транзакционный откат не происходит в завершаемом будущем. но если этот метод выполняется синхронно без завершаемого будущего, то происходит откат. Используется транзакционная аннотация, и это приложение sprin& boot.

     ExecutorsService service=Executors.newFixedThreadpool(50);
    
    
    for(int i=0;i<10;i  )
    {
    
    Callable<CompletebleFuture<Boolean&&t;&&t; task=()-&&t;&etcompletefuture(requestValues) //values from request will be passed
    
    Future<CompleteableFuture<Boolean&&t;&&t;  ftr=service.submit(task);
    
    }
    
    public CompleteableFuture<Boolean&&t; &etcompletefuture(requestValues){
    
    Boolean ac=updateStatusandMove();
    return CompleteableFuture.completedFuture(ac);
    
    }

 @Transactional(propa&ation=Propa&ation.Required,readOnly=false)
    public boolean updateStatusandMove(){
    //update value in database
    //move file via rest service
    
    }