diff --git a/dao/src/main/java/org/thingsboard/server/dao/entity/AbstractEntityService.java b/dao/src/main/java/org/thingsboard/server/dao/entity/AbstractEntityService.java index ecca491070..b75196daf2 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/entity/AbstractEntityService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/entity/AbstractEntityService.java @@ -21,6 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.dao.relation.RelationService; +import java.util.concurrent.ExecutionException; + @Slf4j public abstract class AbstractEntityService { @@ -29,7 +31,11 @@ public abstract class AbstractEntityService { protected void deleteEntityRelations(EntityId entityId) { log.trace("Executing deleteEntityRelations [{}]", entityId); - relationService.deleteEntityRelations(entityId); + try { + relationService.deleteEntityRelations(entityId).get(); + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDaoListeningExecutorService.java b/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDaoListeningExecutorService.java index 47df102216..7c34aa1d86 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDaoListeningExecutorService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDaoListeningExecutorService.java @@ -18,8 +18,14 @@ package org.thingsboard.server.dao.sql; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; +import javax.annotation.PreDestroy; import java.util.concurrent.Executors; public abstract class JpaAbstractDaoListeningExecutorService { protected ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); + + @PreDestroy + void onDestroy() { + service.shutdown(); + } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java index 11d8766a7a..c2de254516 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java @@ -49,6 +49,12 @@ public interface RelationRepository List findAllByFromIdAndFromType(String fromId, String fromType); + @Transactional + RelationEntity save(RelationEntity entity); + + @Transactional + void delete(RelationCompositeKey id); + @Transactional void deleteByFromIdAndFromType(String fromId, String fromType); }