Skip to content

Commit 52278a8

Browse files
Kubuxumasih
andauthored
fix: loop initial delay until EC is ready (#1011)
* fix: loop initial delay until EC is ready Signed-off-by: Jakub Sztandera <[email protected]> * fixes Signed-off-by: Jakub Sztandera <[email protected]> * Update f3.go Co-authored-by: Masih H. Derkani <[email protected]> --------- Signed-off-by: Jakub Sztandera <[email protected]> Co-authored-by: Masih H. Derkani <[email protected]>
1 parent fed535d commit 52278a8

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

f3.go

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,18 +164,33 @@ func (m *F3) Start(startCtx context.Context) (_err error) {
164164
}
165165

166166
log.Infow("F3 is scheduled to start with initial delay", "initialDelay", initialDelay,
167-
"NetworkName", m.mfst.NetworkName, "BootstrapEpoch", m.mfst.BootstrapEpoch, "Finality", m.mfst.EC.Finality,
167+
"NetworkName", m.mfst.NetworkName, "BootstrapEpoch", m.mfst.BootstrapEpoch, "ECPeriod", m.mfst.EC.Period, "Finality", m.mfst.EC.Finality,
168168
"InitialPowerTable", m.mfst.InitialPowerTable, "CommitteeLookback", m.mfst.CommitteeLookback)
169169

170170
go func() {
171171
startTimer := m.clock.Timer(initialDelay)
172172
defer startTimer.Stop()
173-
select {
174-
case <-m.runningCtx.Done():
175-
log.Debugw("F3 start disrupted", "cause", m.runningCtx.Err())
176-
case startTime := <-startTimer.C:
177-
if err := m.startInternal(m.runningCtx); err != nil {
178-
log.Errorw("Failed to start F3 after initial delay", "scheduledStartTime", startTime, "err", err)
173+
for m.runningCtx.Err() == nil {
174+
select {
175+
case <-m.runningCtx.Done():
176+
log.Debugw("F3 start disrupted", "cause", m.runningCtx.Err())
177+
return
178+
case startTime := <-startTimer.C:
179+
delay, err := m.computeBootstrapDelay()
180+
if err != nil {
181+
log.Errorw("failed to compute bootstrap delay", "err", err)
182+
return
183+
}
184+
if delay > 0 {
185+
log.Infow("waiting for bootstrap epoch", "duration", delay.String())
186+
startTimer.Reset(delay)
187+
} else {
188+
err = m.startInternal(m.runningCtx)
189+
if err != nil {
190+
log.Errorw("failed to start F3 after initial delay", "scheduledStartTime", startTime, "err", err)
191+
}
192+
return
193+
}
179194
}
180195
}
181196
}()

0 commit comments

Comments
 (0)