From 011a4d57662708ab92a34413a2b772fcf923e1c5 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Tue, 2 Jul 2019 22:02:15 +0100 Subject: [PATCH] prevent duplicate updates and zero timestamps --- .../groovy/com/muwire/core/trust/RemoteTrustList.groovy | 3 ++- .../groovy/com/muwire/core/trust/TrustSubscriber.groovy | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/src/main/groovy/com/muwire/core/trust/RemoteTrustList.groovy b/core/src/main/groovy/com/muwire/core/trust/RemoteTrustList.groovy index b9c31611..d2a2c369 100644 --- a/core/src/main/groovy/com/muwire/core/trust/RemoteTrustList.groovy +++ b/core/src/main/groovy/com/muwire/core/trust/RemoteTrustList.groovy @@ -11,7 +11,8 @@ class RemoteTrustList { private final Persona persona private final Set good, bad - long timestamp + volatile long timestamp + volatile boolean forceUpdate Status status = Status.NEW RemoteTrustList(Persona persona) { diff --git a/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy b/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy index 2f948e4f..385bd6e0 100644 --- a/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy +++ b/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy @@ -53,7 +53,7 @@ class TrustSubscriber { remoteTrustLists.remove(e.persona.destination) } else { RemoteTrustList trustList = remoteTrustLists.putIfAbsent(e.persona.destination, new RemoteTrustList(e.persona)) - trustList?.timestamp = 0 + trustList?.forceUpdate = true synchronized(waitLock) { waitLock.notify() } @@ -68,8 +68,12 @@ class TrustSubscriber { } final long now = System.currentTimeMillis() remoteTrustLists.values().each { trustList -> - if (now - trustList.timestamp < settings.trustListInterval * 60 * 60 * 1000) + if (trustList.status == RemoteTrustList.Status.UPDATING) return + if (!trustList.forceUpdate && + now - trustList.timestamp < settings.trustListInterval * 60 * 60 * 1000) + return + trustList.forceUpdate = false updateThreads.submit(new UpdateJob(trustList)) } }