add a state for failed updates

This commit is contained in:
Zlatin Balevsky
2019-07-03 05:12:00 +01:00
parent 20ab55d763
commit ef6b8fe458
3 changed files with 14 additions and 5 deletions

View File

@@ -7,7 +7,7 @@ import com.muwire.core.Persona
import net.i2p.util.ConcurrentHashSet
class RemoteTrustList {
public enum Status { NEW, UPDATING, UPDATED }
public enum Status { NEW, UPDATING, UPDATED, UPDATE_FAILED }
private final Persona persona
private final Set<Persona> good, bad

View File

@@ -94,13 +94,15 @@ class TrustSubscriber {
public void run() {
trustList.status = RemoteTrustList.Status.UPDATING
eventBus.publish(new TrustSubscriptionUpdatedEvent(trustList : trustList))
check(trustList, System.currentTimeMillis())
if (check(trustList, System.currentTimeMillis()))
trustList.status = RemoteTrustList.Status.UPDATED
else
trustList.status = RemoteTrustList.Status.UPDATE_FAILED
eventBus.publish(new TrustSubscriptionUpdatedEvent(trustList : trustList))
}
}
private void check(RemoteTrustList trustList, long now) {
private boolean check(RemoteTrustList trustList, long now) {
log.info("fetching trust list from ${trustList.persona.getHumanReadableName()}")
Endpoint endpoint = null
try {
@@ -118,7 +120,7 @@ class TrustSubscriber {
if (code != 200) {
log.info("couldn't fetch trust list, code $code")
return
return false
}
// swallow any headers
@@ -147,8 +149,10 @@ class TrustSubscriber {
trustList.bad.clear()
trustList.bad.addAll(bad)
return true
} catch (Exception e) {
log.log(Level.WARNING,"exception fetching trust list from ${trustList.persona.getHumanReadableName()}",e)
return false
} finally {
endpoint?.close()
}

View File

@@ -488,6 +488,11 @@ class MainFrameView {
model.updateButtonEnabled = true
model.unsubscribeButtonEnabled = true
break
case RemoteTrustList.Status.UPDATE_FAILED:
model.reviewButtonEnabled = false
model.updateButtonEnabled = true
model.unsubscribeButtonEnabled = true
break
}
})