Browse Source

Fix notification deduplication service (ConcurrentModificationException for deduplicationDurations map)

pull/10719/head
ViacheslavKlimov 2 years ago
parent
commit
f23061a9ae
  1. 7
      common/queue/src/main/java/org/thingsboard/server/queue/notification/DefaultNotificationDeduplicationService.java

7
common/queue/src/main/java/org/thingsboard/server/queue/notification/DefaultNotificationDeduplicationService.java

@ -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));
});

Loading…
Cancel
Save