prevent duplicate updates and zero timestamps

pull/9/head
Zlatin Balevsky 2019-07-02 22:02:15 +01:00
parent 5cd1ca88c1
commit 011a4d5766
2 changed files with 8 additions and 3 deletions

View File

@ -11,7 +11,8 @@ class RemoteTrustList {
private final Persona persona
private final Set<Persona> good, bad
long timestamp
volatile long timestamp
volatile boolean forceUpdate
Status status = Status.NEW
RemoteTrustList(Persona persona) {

View File

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