WIP: prep for 1.0 #1
@ -62,6 +62,10 @@ func New(options ...func(i *Instance)) *Instance {
|
|||||||
opt(i)
|
opt(i)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if i.InitialFSMState == "FETCHING" {
|
||||||
|
i.InitialFSMState = "READY_FOR_TOOTFETCH"
|
||||||
|
}
|
||||||
|
|
||||||
i.FSM = fsm.NewFSM(
|
i.FSM = fsm.NewFSM(
|
||||||
i.InitialFSMState,
|
i.InitialFSMState,
|
||||||
fsm.Events{
|
fsm.Events{
|
||||||
@ -75,11 +79,13 @@ func New(options ...func(i *Instance)) *Instance {
|
|||||||
{Name: "EARLY_FETCH_ERROR", Src: []string{"FETCHING_NODEINFO_URL", "PRE_NODEINFO_FETCH", "FETCHING_NODEINFO"}, Dst: "EARLY_ERROR"},
|
{Name: "EARLY_FETCH_ERROR", Src: []string{"FETCHING_NODEINFO_URL", "PRE_NODEINFO_FETCH", "FETCHING_NODEINFO"}, Dst: "EARLY_ERROR"},
|
||||||
{Name: "TOOT_FETCH_ERROR", Src: []string{"FETCHING"}, Dst: "TOOT_FETCH_ERROR"},
|
{Name: "TOOT_FETCH_ERROR", Src: []string{"FETCHING"}, Dst: "TOOT_FETCH_ERROR"},
|
||||||
{Name: "TOOTS_FETCHED", Src: []string{"FETCHING"}, Dst: "READY_FOR_TOOTFETCH"},
|
{Name: "TOOTS_FETCHED", Src: []string{"FETCHING"}, Dst: "READY_FOR_TOOTFETCH"},
|
||||||
|
{Name: "DISABLEMENT", Src: []string{"WEIRD_NODE", "EARLY_ERROR", "TOOT_FETCH_ERROR"}, Dst: "DISABLED"},
|
||||||
},
|
},
|
||||||
fsm.Callbacks{
|
fsm.Callbacks{
|
||||||
"enter_state": func(e *fsm.Event) { i.fsmEnterState(e) },
|
"enter_state": func(e *fsm.Event) { i.fsmEnterState(e) },
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,8 +131,18 @@ func (i *Instance) Unlock() {
|
|||||||
func (i *Instance) bumpFetchError() {
|
func (i *Instance) bumpFetchError() {
|
||||||
i.Lock()
|
i.Lock()
|
||||||
probablyDead := i.ConsecutiveErrorCount > 3
|
probablyDead := i.ConsecutiveErrorCount > 3
|
||||||
|
shouldDisable := i.ConsecutiveErrorCount > 6
|
||||||
i.Unlock()
|
i.Unlock()
|
||||||
|
|
||||||
|
if shouldDisable {
|
||||||
|
// auf wiedersehen, felicia
|
||||||
|
i.Lock()
|
||||||
|
i.Disabled = true
|
||||||
|
i.Unlock()
|
||||||
|
i.Event("DISABLEMENT")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if probablyDead {
|
if probablyDead {
|
||||||
// if three consecutive fetch errors happen, only try once per day:
|
// if three consecutive fetch errors happen, only try once per day:
|
||||||
i.setNextFetchAfter(instancePersistentErrorInterval)
|
i.setNextFetchAfter(instancePersistentErrorInterval)
|
||||||
|
Loading…
Reference in New Issue
Block a user