RED-6162 - transactional fixes

This commit is contained in:
Timo Bejan 2023-03-10 10:39:59 +02:00
parent 5f772026b7
commit cabdb5a507
15 changed files with 69 additions and 53 deletions

View File

@ -9,10 +9,11 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.transaction.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.UnexpectedRollbackException;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity;
@ -87,43 +88,16 @@ public class ManualRedactionProviderService {
}
public void hardDeleteManualRedactions(String fileId, String annotationId) {
try {
@Transactional(noRollbackFor = {EmptyResultDataAccessException.class})
public void hardDeleteManualRedactions(String fileId, String annotationId) {
addRedactionPersistenceService.hardDelete(fileId, annotationId);
} catch (EmptyResultDataAccessException e) {
log.info("Ignored silently during deletion: {}", e.getMessage());
}
try {
removeRedactionPersistenceService.hardDelete(fileId, annotationId);
} catch (EmptyResultDataAccessException e) {
log.info("Ignored silently during deletion: {}", e.getMessage());
}
try {
forceRedactionPersistenceService.hardDelete(fileId, annotationId);
} catch (EmptyResultDataAccessException e) {
log.info("Ignored silently during deletion: {}", e.getMessage());
}
try {
recategorizationPersistenceService.hardDelete(fileId, annotationId);
} catch (EmptyResultDataAccessException e) {
log.info("Ignored silently during deletion: {}", e.getMessage());
}
try {
legalBasisChangePersistenceService.hardDelete(fileId, annotationId);
} catch (EmptyResultDataAccessException e) {
log.info("Ignored silently during deletion: {}", e.getMessage());
}
try {
resizeRedactionPersistenceService.hardDelete(fileId, annotationId);
} catch (EmptyResultDataAccessException e) {
log.info("Ignored silently during deletion: {}", e.getMessage());
}
try {
commentPersistenceService.hardDelete(fileId, annotationId);
} catch (EmptyResultDataAccessException e) {
log.info("Ignored silently during deletion: {}", e.getMessage());
}
}
}

View File

@ -14,6 +14,7 @@ import java.util.stream.Collectors;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

View File

@ -6,10 +6,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.transaction.Transactional;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity;
@ -92,7 +91,7 @@ public class AddRedactionPersistenceService {
@Transactional
public void hardDelete(String fileId, String annotationId) {
manualRedactionRepository.deleteById(new AnnotationEntityId(annotationId, fileId));
manualRedactionRepository.hardDelete(new AnnotationEntityId(annotationId, fileId));
}

View File

@ -8,6 +8,7 @@ import java.util.stream.Collectors;
import javax.transaction.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity;
@ -15,7 +16,9 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.NotFo
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.CommentRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RequiredArgsConstructor
public class CommentPersistenceService {
@ -53,7 +56,11 @@ public class CommentPersistenceService {
@Transactional
public void hardDelete(long commentId) {
commentRepository.deleteById(commentId);
try {
commentRepository.deleteById(commentId);
} catch (EmptyResultDataAccessException e) {
log.info("Ignored silently during deletion: {}", e.getMessage());
}
}

View File

@ -5,10 +5,9 @@ import java.time.temporal.ChronoUnit;
import java.util.HashSet;
import java.util.Set;
import javax.transaction.Transactional;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualForceRedactionEntity;
@ -18,7 +17,9 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ForceRedactionRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RequiredArgsConstructor
public class ForceRedactionPersistenceService {
@ -46,7 +47,7 @@ public class ForceRedactionPersistenceService {
@Transactional
public void hardDelete(String fileId, String annotationId) {
forceRedactionRepository.deleteById(new AnnotationEntityId(annotationId, fileId));
forceRedactionRepository.hardDelete(new AnnotationEntityId(annotationId, fileId));
}

View File

@ -4,10 +4,9 @@ import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualImageRecategorizationEntity;
@ -17,7 +16,9 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ImageRecategorizationRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RequiredArgsConstructor
public class ImageRecategorizationPersistenceService {
@ -46,7 +47,7 @@ public class ImageRecategorizationPersistenceService {
@Transactional
public void hardDelete(String fileId, String annotationId) {
imageRecategorizationRepository.deleteById(new AnnotationEntityId(annotationId, fileId));
imageRecategorizationRepository.hardDelete(new AnnotationEntityId(annotationId, fileId));
}

View File

@ -5,10 +5,9 @@ import java.time.temporal.ChronoUnit;
import java.util.Set;
import java.util.stream.Collectors;
import javax.transaction.Transactional;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity;
@ -18,7 +17,9 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.LegalBasisChangeRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RequiredArgsConstructor
public class LegalBasisChangePersistenceService {
@ -45,7 +46,7 @@ public class LegalBasisChangePersistenceService {
@Transactional
public void hardDelete(String fileId, String annotationId) {
legalBasisChangeRepository.deleteById(new AnnotationEntityId(annotationId, fileId));
legalBasisChangeRepository.hardDelete(new AnnotationEntityId(annotationId, fileId));
}

View File

@ -6,10 +6,9 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import javax.transaction.Transactional;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity;
@ -20,7 +19,9 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RequiredArgsConstructor
public class RemoveRedactionPersistenceService {
@ -61,7 +62,7 @@ public class RemoveRedactionPersistenceService {
@Transactional
public void hardDelete(String fileId, String annotationId) {
removeRedactionRepository.deleteById(new AnnotationEntityId(annotationId, fileId));
removeRedactionRepository.hardDelete(new AnnotationEntityId(annotationId, fileId));
}

View File

@ -4,10 +4,9 @@ import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity;
@ -19,7 +18,9 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ResizeRedactionRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RequiredArgsConstructor
public class ResizeRedactionPersistenceService {
@ -62,7 +63,7 @@ public class ResizeRedactionPersistenceService {
@Transactional
public void hardDelete(String fileId, String annotationId) {
resizeRedactionRepository.deleteById(new AnnotationEntityId(annotationId, fileId));
resizeRedactionRepository.hardDelete(new AnnotationEntityId(annotationId, fileId));
}

View File

@ -7,6 +7,7 @@ import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualForceRedactionEntity;
@ -14,7 +15,10 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
public interface ForceRedactionRepository extends JpaRepository<ManualForceRedactionEntity, AnnotationEntityId> {
List<ManualForceRedactionEntity> findByIdFileId(String fileId);
@Transactional
@Modifying(flushAutomatically = true, clearAutomatically = true)
@Query("delete from ManualForceRedactionEntity e where e.id = :id")
void hardDelete(AnnotationEntityId id);
@Modifying(clearAutomatically = true)

View File

@ -7,6 +7,7 @@ import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualImageRecategorizationEntity;
@ -14,7 +15,10 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
public interface ImageRecategorizationRepository extends JpaRepository<ManualImageRecategorizationEntity, AnnotationEntityId> {
List<ManualImageRecategorizationEntity> findByIdFileId(String fileId);
@Transactional
@Modifying(flushAutomatically = true, clearAutomatically = true)
@Query("delete from ManualImageRecategorizationEntity e where e.id = :id")
void hardDelete(AnnotationEntityId id);
@Modifying(clearAutomatically = true)

View File

@ -7,6 +7,7 @@ import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity;
@ -14,6 +15,12 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
public interface LegalBasisChangeRepository extends JpaRepository<ManualLegalBasisChangeEntity, AnnotationEntityId> {
@Transactional
@Modifying(flushAutomatically = true, clearAutomatically = true)
@Query("delete from ManualLegalBasisChangeEntity e where e.id = :id")
void hardDelete(AnnotationEntityId id);
@Modifying(clearAutomatically = true)
@Query("update ManualLegalBasisChangeEntity mlbc set mlbc.status = :annotationStatus, mlbc.processedDate = :processedDate " + "where mlbc.id = :annotationEntityId")
void updateStatus(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate);

View File

@ -8,6 +8,7 @@ import java.util.Set;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity;
@ -15,7 +16,10 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
public interface ManualRedactionRepository extends JpaRepository<ManualRedactionEntryEntity, AnnotationEntityId> {
List<ManualRedactionEntryEntity> findByIdFileId(String fileId);
@Transactional
@Modifying(flushAutomatically = true, clearAutomatically = true)
@Query("delete from ManualForceRedactionEntity e where e.id = :id")
void hardDelete(AnnotationEntityId id);
@Modifying

View File

@ -7,6 +7,7 @@ import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity;
@ -14,6 +15,12 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
public interface RemoveRedactionRepository extends JpaRepository<IdRemovalEntity, AnnotationEntityId> {
@Transactional
@Modifying(flushAutomatically = true, clearAutomatically = true)
@Query("delete from IdRemovalEntity e where e.id = :id")
void hardDelete(AnnotationEntityId id);
@Modifying
@Query("update IdRemovalEntity idr set idr.softDeletedTime = :softDeletedTime where idr.id = :annotationEntityId")
void updateSoftDelete(AnnotationEntityId annotationEntityId, OffsetDateTime softDeletedTime);

View File

@ -7,6 +7,7 @@ import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity;
@ -14,7 +15,10 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations
public interface ResizeRedactionRepository extends JpaRepository<ManualResizeRedactionEntity, AnnotationEntityId> {
List<ManualResizeRedactionEntity> findByIdFileId(String fileId);
@Transactional
@Modifying(flushAutomatically = true, clearAutomatically = true)
@Query("delete from ManualResizeRedactionEntity e where e.id = :id")
void hardDelete(AnnotationEntityId id);
@Modifying(clearAutomatically = true)