From 95cf5cf70a1398720cf71f85e5a49b12d6b9dffe Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Tue, 12 Dec 2023 13:01:56 +0200 Subject: [PATCH 1/3] Replace users list notification recipient group with current user id --- .../ie/exporting/impl/NotificationTargetExportService.java | 3 +++ .../ie/importing/impl/NotificationTargetImportService.java | 7 ++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/NotificationTargetExportService.java b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/NotificationTargetExportService.java index f0a5da3efc..a5ef322c56 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/NotificationTargetExportService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/ie/exporting/impl/NotificationTargetExportService.java @@ -43,6 +43,9 @@ public class NotificationTargetExportService extends BaseEntityExportService Date: Tue, 12 Dec 2023 15:06:53 +0200 Subject: [PATCH 2/3] Use separate scheduler for scheduled notifications --- .../notification/DefaultNotificationSchedulerService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationSchedulerService.java b/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationSchedulerService.java index 01591003ad..171da618f4 100644 --- a/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationSchedulerService.java +++ b/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationSchedulerService.java @@ -21,6 +21,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; +import org.thingsboard.common.util.ThingsBoardThreadFactory; import org.thingsboard.rule.engine.api.NotificationCenter; import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.NotificationRequestId; @@ -35,7 +36,6 @@ import org.thingsboard.server.common.msg.plugin.ComponentLifecycleMsg; import org.thingsboard.server.common.msg.queue.ServiceType; import org.thingsboard.server.common.msg.queue.TopicPartitionInfo; import org.thingsboard.server.dao.notification.NotificationRequestService; -import org.thingsboard.server.queue.scheduler.SchedulerComponent; import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.service.executors.NotificationExecutorService; import org.thingsboard.server.service.partition.AbstractPartitionBasedService; @@ -48,6 +48,8 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -55,13 +57,12 @@ import java.util.concurrent.TimeUnit; @Service @RequiredArgsConstructor @Slf4j -@SuppressWarnings("UnstableApiUsage") public class DefaultNotificationSchedulerService extends AbstractPartitionBasedService implements NotificationSchedulerService { private final NotificationCenter notificationCenter; private final NotificationRequestService notificationRequestService; - private final SchedulerComponent scheduler; private final NotificationExecutorService notificationExecutor; + private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(ThingsBoardThreadFactory.forName("notification-scheduler")); private final Map scheduledNotificationRequests = new ConcurrentHashMap<>(); From fcea425dbf82f34ae5e306922e02b2ea9bd20a81 Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Mon, 18 Dec 2023 12:51:05 +0200 Subject: [PATCH 3/3] Shutdown notification scheduler in PreDestroy --- .../DefaultNotificationSchedulerService.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationSchedulerService.java b/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationSchedulerService.java index 171da618f4..eeeb1f0a7a 100644 --- a/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationSchedulerService.java +++ b/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationSchedulerService.java @@ -41,6 +41,7 @@ import org.thingsboard.server.service.executors.NotificationExecutorService; import org.thingsboard.server.service.partition.AbstractPartitionBasedService; import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -66,6 +67,7 @@ public class DefaultNotificationSchedulerService extends AbstractPartitionBasedS private final Map scheduledNotificationRequests = new ConcurrentHashMap<>(); + @Override @PostConstruct public void init() { super.init(); @@ -167,6 +169,13 @@ public class DefaultNotificationSchedulerService extends AbstractPartitionBasedS return "notifications-scheduler"; } + @Override + @PreDestroy + public void stop() { + super.stop(); + scheduler.shutdownNow(); + } + @Data private static class ScheduledRequestMetadata { private final TenantId tenantId;