diff --git a/beacon/light/committee_chain.go b/beacon/light/committee_chain.go index 4fa87785c0..7fc735d893 100644 --- a/beacon/light/committee_chain.go +++ b/beacon/light/committee_chain.go @@ -182,6 +182,12 @@ func (s *CommitteeChain) Reset() { s.chainmu.Lock() defer s.chainmu.Unlock() + s.resetLocked() +} + +// ResetLocked resets the committee chain without locking. The caller should hold +// the chainmu lock. +func (s *CommitteeChain) resetLocked() { if err := s.rollback(0); err != nil { log.Error("Error writing batch into chain database", "error", err) } @@ -201,22 +207,22 @@ func (s *CommitteeChain) CheckpointInit(bootstrap types.BootstrapData) error { } period := bootstrap.Header.SyncPeriod() if err := s.deleteFixedCommitteeRootsFrom(period + 2); err != nil { - s.Reset() + s.resetLocked() return err } if s.addFixedCommitteeRoot(period, bootstrap.CommitteeRoot) != nil { - s.Reset() + s.resetLocked() if err := s.addFixedCommitteeRoot(period, bootstrap.CommitteeRoot); err != nil { - s.Reset() + s.resetLocked() return err } } if err := s.addFixedCommitteeRoot(period+1, common.Hash(bootstrap.CommitteeBranch[0])); err != nil { - s.Reset() + s.resetLocked() return err } if err := s.addCommittee(period, bootstrap.Committee); err != nil { - s.Reset() + s.resetLocked() return err } s.changeCounter++