Merge pull request #10719 from thingsboard/fix/notification-deduplication-concurrent

Fix for notification deduplication service
This commit is contained in:
Viacheslav Klimov 2024-05-06 14:31:00 +03:00 committed by GitHub
commit dd9d9a8a54
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -29,9 +29,8 @@ import org.thingsboard.server.common.data.notification.rule.trigger.Notification
import org.thingsboard.server.common.data.notification.rule.trigger.config.NotificationRuleTriggerType;
import org.thingsboard.server.queue.util.PropertyUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import static org.springframework.util.ConcurrentReferenceHashMap.ReferenceType.SOFT;
@ -41,7 +40,7 @@ import static org.springframework.util.ConcurrentReferenceHashMap.ReferenceType.
@Slf4j
public class DefaultNotificationDeduplicationService implements NotificationDeduplicationService {
private Map<NotificationRuleTriggerType, Long> deduplicationDurations;
private ConcurrentMap<NotificationRuleTriggerType, Long> deduplicationDurations;
@Autowired(required = false)
private CacheManager cacheManager;
@ -116,7 +115,7 @@ public class DefaultNotificationDeduplicationService implements NotificationDedu
@Autowired
public void setDeduplicationDurations(@Value("${notification_system.rules.deduplication_durations:}")
String deduplicationDurationsStr) {
this.deduplicationDurations = new HashMap<>();
this.deduplicationDurations = new ConcurrentHashMap<>();
PropertyUtils.getProps(deduplicationDurationsStr).forEach((triggerType, duration) -> {
this.deduplicationDurations.put(NotificationRuleTriggerType.valueOf(triggerType), Long.parseLong(duration));
});