|
@ -305,6 +305,15 @@ func (cs *State) OnStart() error { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// we need the timeoutRoutine for replay so
|
|
|
|
|
|
// we don't block on the tick chan.
|
|
|
|
|
|
// NOTE: we will get a build up of garbage go routines
|
|
|
|
|
|
// firing on the tockChan until the receiveRoutine is started
|
|
|
|
|
|
// to deal with them (by that point, at most one will be valid)
|
|
|
|
|
|
if err := cs.timeoutTicker.Start(); err != nil { |
|
|
|
|
|
return err |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// We may have lost some votes if the process crashed reload from consensus
|
|
|
// We may have lost some votes if the process crashed reload from consensus
|
|
|
// log to catchup.
|
|
|
// log to catchup.
|
|
|
if cs.doWALCatchup { |
|
|
if cs.doWALCatchup { |
|
@ -361,15 +370,6 @@ func (cs *State) OnStart() error { |
|
|
return err |
|
|
return err |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// we need the timeoutRoutine for replay so
|
|
|
|
|
|
// we don't block on the tick chan.
|
|
|
|
|
|
// NOTE: we will get a build up of garbage go routines
|
|
|
|
|
|
// firing on the tockChan until the receiveRoutine is started
|
|
|
|
|
|
// to deal with them (by that point, at most one will be valid)
|
|
|
|
|
|
if err := cs.timeoutTicker.Start(); err != nil { |
|
|
|
|
|
return err |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Double Signing Risk Reduction
|
|
|
// Double Signing Risk Reduction
|
|
|
if err := cs.checkDoubleSigningRisk(cs.Height); err != nil { |
|
|
if err := cs.checkDoubleSigningRisk(cs.Height); err != nil { |
|
|
return err |
|
|
return err |
|
|