From dfb40ecbe053796e6844e318ff0fef3f432bac48 Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Mon, 18 Mar 2024 12:35:29 +0200 Subject: [PATCH] Skipped entity types list for cleaning up related data --- .../server/dao/housekeeper/CleanUpService.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dao/src/main/java/org/thingsboard/server/dao/housekeeper/CleanUpService.java b/dao/src/main/java/org/thingsboard/server/dao/housekeeper/CleanUpService.java index 24cfe7c8f6..48531aab90 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/housekeeper/CleanUpService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/housekeeper/CleanUpService.java @@ -30,6 +30,9 @@ import org.thingsboard.server.common.msg.housekeeper.HousekeeperClient; import org.thingsboard.server.dao.eventsourcing.DeleteEntityEvent; import org.thingsboard.server.dao.relation.RelationService; +import java.util.EnumSet; +import java.util.Set; + @Component @RequiredArgsConstructor @Slf4j @@ -38,6 +41,12 @@ public class CleanUpService { private final HousekeeperClient housekeeperClient; private final RelationService relationService; + private final Set skippedEntities = EnumSet.of( + EntityType.ALARM, EntityType.QUEUE, EntityType.TB_RESOURCE, EntityType.OTA_PACKAGE, + EntityType.NOTIFICATION_REQUEST, EntityType.NOTIFICATION_TEMPLATE, + EntityType.NOTIFICATION_TARGET, EntityType.NOTIFICATION_RULE + ); + @TransactionalEventListener(fallbackExecution = true) // after transaction commit @Transactional(propagation = Propagation.NOT_SUPPORTED) public void handleEntityDeletionEvent(DeleteEntityEvent event) { @@ -46,7 +55,9 @@ public class CleanUpService { EntityType entityType = entityId.getEntityType(); try { log.trace("[{}][{}][{}] Handling entity deletion event", tenantId, entityType, entityId.getId()); - cleanUpRelatedData(tenantId, entityId); + if (!skippedEntities.contains(entityType)) { + cleanUpRelatedData(tenantId, entityId); + } if (entityType == EntityType.USER) { housekeeperClient.submitTask(HousekeeperTask.unassignAlarms((User) event.getEntity())); } @@ -57,7 +68,6 @@ public class CleanUpService { public void cleanUpRelatedData(TenantId tenantId, EntityId entityId) { log.debug("[{}][{}][{}] Cleaning up related data", tenantId, entityId.getEntityType(), entityId.getId()); - // todo: skipped entities list relationService.deleteEntityRelations(tenantId, entityId); housekeeperClient.submitTask(HousekeeperTask.deleteAttributes(tenantId, entityId)); housekeeperClient.submitTask(HousekeeperTask.deleteTelemetry(tenantId, entityId));