retry publishing IPNS records every 5 minutes on failure
This way, if we *happen* to be offline while attempting a publish, we don't wait the full interval. License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
Steven Allen committed
Nov 29, 2017 at 15:27 UTC
40b3a72498b458fe9feaeb075b0ff6ffdf28a903
1 file changed
+6
-5
namesys/republisher/repub.go
+6
-5
@@ -28,6 +28,7 @@ var log = logging.Logger("ipns-repub")
28
29
var DefaultRebroadcastInterval = time.Hour * 4
30
var InitialRebroadcastDelay = time.Minute * 1
31
+var FailureRetryInterval = time.Minute * 5
32
33
const DefaultRecordLifetime = time.Hour * 24
34
@@ -56,17 +57,17 @@ func NewRepublisher(r routing.ValueStore, ds ds.Datastore, self ic.PrivKey, ks k
57
}
58
59
func (rp *Republisher) Run(proc goprocess.Process) {
59
- tick := time.NewTicker(rp.Interval)
60
- defer tick.Stop()
61
- delayCh := time.After(InitialRebroadcastDelay)
60
+ timer := time.NewTimer(InitialRebroadcastDelay)
61
+ defer timer.Stop()
62
63
for {
64
select {
65
- case <-delayCh:
66
- delayCh = tick.C
65
+ case <-timer.C:
66
+ timer.Reset(rp.Interval)
67
err := rp.republishEntries(proc)
68
if err != nil {
69
log.Error("Republisher failed to republish: ", err)
70
+ timer.Reset(FailureRetryInterval)
71
}
72
case <-proc.Closing():
73
return