Browse Source

Don't write to cache on each deduplication

pull/8729/head
ViacheslavKlimov 3 years ago
parent
commit
93e8770023
  1. 11
      common/queue/src/main/java/org/thingsboard/server/queue/notification/DefaultNotificationDeduplicationService.java

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

@ -69,8 +69,8 @@ public class DefaultNotificationDeduplicationService implements NotificationDedu
} }
boolean alreadyProcessed = false; boolean alreadyProcessed = false;
long deduplicationDuration = getDeduplicationDuration(trigger);
if (lastProcessedTs != null) { if (lastProcessedTs != null) {
long deduplicationDuration = getDeduplicationDuration(trigger);
long passed = System.currentTimeMillis() - lastProcessedTs; long passed = System.currentTimeMillis() - lastProcessedTs;
log.trace("Deduplicating trigger {} by key '{}'. Deduplication duration: {} ms, passed: {} ms", log.trace("Deduplicating trigger {} by key '{}'. Deduplication duration: {} ms, passed: {} ms",
trigger.getType(), deduplicationKey, deduplicationDuration, passed); trigger.getType(), deduplicationKey, deduplicationDuration, passed);
@ -84,9 +84,12 @@ public class DefaultNotificationDeduplicationService implements NotificationDedu
} }
localCache.put(deduplicationKey, lastProcessedTs); localCache.put(deduplicationKey, lastProcessedTs);
if (!onlyLocalCache) { if (!onlyLocalCache) {
Cache externalCache = cacheManager.getCache(CacheConstants.SENT_NOTIFICATIONS_CACHE); if (!alreadyProcessed || deduplicationDuration == 0) {
if (externalCache != null) { // if lastProcessedTs is changed or if deduplicating infinitely (so that cache value not removed by ttl)
externalCache.put(deduplicationKey, lastProcessedTs); Cache externalCache = cacheManager.getCache(CacheConstants.SENT_NOTIFICATIONS_CACHE);
if (externalCache != null) {
externalCache.put(deduplicationKey, lastProcessedTs);
}
} }
} }
return alreadyProcessed; return alreadyProcessed;

Loading…
Cancel
Save