From 633e222da9de94ca754c198652fc2423dc14e904 Mon Sep 17 00:00:00 2001 From: EclesioMeloJunior Date: Wed, 8 Jun 2022 10:11:11 -0400 Subject: [PATCH 1/2] fix: skip block number 0 while persisting next epoch data --- dot/state/epoch.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dot/state/epoch.go b/dot/state/epoch.go index 2862e622df..5b7c7200d2 100644 --- a/dot/state/epoch.go +++ b/dot/state/epoch.go @@ -543,6 +543,10 @@ func (s *EpochState) StoreBABENextConfigData(epoch uint64, hash common.Hash, nex // check if the header is in the database then it's been finalized and // thus we can also set the corresponding EpochData in the database func (s *EpochState) FinalizeBABENextEpochData(finalizedHeader *types.Header) error { + if finalizedHeader.Number == 0 { + return nil + } + s.nextEpochDataLock.Lock() defer s.nextEpochDataLock.Unlock() @@ -597,6 +601,10 @@ func (s *EpochState) FinalizeBABENextEpochData(finalizedHeader *types.Header) er // check if the header is in the database then it's been finalized and // thus we can also set the corresponding NextConfigData in the database func (s *EpochState) FinalizeBABENextConfigData(finalizedHeader *types.Header) error { + if finalizedHeader.Number == 0 { + return nil + } + s.nextConfigDataLock.Lock() defer s.nextConfigDataLock.Unlock() From a0fbc5f7d5d8079d3308f6ae9cf1065bf1f10e0b Mon Sep 17 00:00:00 2001 From: EclesioMeloJunior Date: Thu, 9 Jun 2022 12:51:11 -0400 Subject: [PATCH 2/2] chore: consider block number 0 --- dot/state/epoch.go | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/dot/state/epoch.go b/dot/state/epoch.go index 5b7c7200d2..c53ed7f799 100644 --- a/dot/state/epoch.go +++ b/dot/state/epoch.go @@ -543,20 +543,19 @@ func (s *EpochState) StoreBABENextConfigData(epoch uint64, hash common.Hash, nex // check if the header is in the database then it's been finalized and // thus we can also set the corresponding EpochData in the database func (s *EpochState) FinalizeBABENextEpochData(finalizedHeader *types.Header) error { - if finalizedHeader.Number == 0 { - return nil - } - s.nextEpochDataLock.Lock() defer s.nextEpochDataLock.Unlock() - finalizedBlockEpoch, err := s.GetEpochForBlock(finalizedHeader) - if err != nil { - return fmt.Errorf("cannot get epoch for block %d (%s): %w", - finalizedHeader.Number, finalizedHeader.Hash(), err) - } + var nextEpoch uint64 = 1 + if finalizedHeader.Number != 0 { + finalizedBlockEpoch, err := s.GetEpochForBlock(finalizedHeader) + if err != nil { + return fmt.Errorf("cannot get epoch for block %d (%s): %w", + finalizedHeader.Number, finalizedHeader.Hash(), err) + } - nextEpoch := finalizedBlockEpoch + 1 + nextEpoch = finalizedBlockEpoch + 1 + } epochInDatabase, err := s.getEpochDataFromDatabase(nextEpoch) @@ -601,20 +600,19 @@ func (s *EpochState) FinalizeBABENextEpochData(finalizedHeader *types.Header) er // check if the header is in the database then it's been finalized and // thus we can also set the corresponding NextConfigData in the database func (s *EpochState) FinalizeBABENextConfigData(finalizedHeader *types.Header) error { - if finalizedHeader.Number == 0 { - return nil - } - s.nextConfigDataLock.Lock() defer s.nextConfigDataLock.Unlock() - finalizedBlockEpoch, err := s.GetEpochForBlock(finalizedHeader) - if err != nil { - return fmt.Errorf("cannot get epoch for block %d (%s): %w", - finalizedHeader.Number, finalizedHeader.Hash(), err) - } + var nextEpoch uint64 = 1 + if finalizedHeader.Number != 0 { + finalizedBlockEpoch, err := s.GetEpochForBlock(finalizedHeader) + if err != nil { + return fmt.Errorf("cannot get epoch for block %d (%s): %w", + finalizedHeader.Number, finalizedHeader.Hash(), err) + } - nextEpoch := finalizedBlockEpoch + 1 + nextEpoch = finalizedBlockEpoch + 1 + } configInDatabase, err := s.getConfigDataFromDatabase(nextEpoch)