From a79dab7919a01d6946ccb8cb3933cdca670801ad Mon Sep 17 00:00:00 2001 From: terence tsao Date: Sun, 12 Jan 2020 14:08:25 -0800 Subject: [PATCH] Revert "ReceiveBlock: Only retrieve head block from DB if necessary (#4506)" (#4514) This reverts commit 9a4bf6c1a212000800cbdb111d0c7a9bd820b0bc. --- beacon-chain/blockchain/receive_block.go | 38 +++++++++++++----------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/beacon-chain/blockchain/receive_block.go b/beacon-chain/blockchain/receive_block.go index 2d77410d28e..5b55391d39f 100644 --- a/beacon-chain/blockchain/receive_block.go +++ b/beacon-chain/blockchain/receive_block.go @@ -85,19 +85,16 @@ func (s *Service) ReceiveBlockNoPubsub(ctx context.Context, block *ethpb.SignedB if err != nil { return errors.Wrap(err, "could not get head from fork choice service") } + signedHeadBlock, err := s.beaconDB.Block(ctx, bytesutil.ToBytes32(headRoot)) + if err != nil { + return errors.Wrap(err, "could not compute state from block head") + } + if signedHeadBlock == nil || signedHeadBlock.Block == nil { + return errors.New("nil head block") + } // Only save head if it's different than the current head. if !bytes.Equal(headRoot, s.HeadRoot()) { - signedHeadBlock, err := s.beaconDB.Block(ctx, bytesutil.ToBytes32(headRoot)) - if err != nil { - return errors.Wrap(err, "could not compute state from block head") - } - if signedHeadBlock == nil || signedHeadBlock.Block == nil { - return errors.New("nil head block") - } - - logCompetingBlock(root[:], blockCopy.Block.Slot, headRoot, signedHeadBlock.Block.Slot) - if err := s.saveHead(ctx, signedHeadBlock, bytesutil.ToBytes32(headRoot)); err != nil { return errors.Wrap(err, "could not save head") } @@ -121,6 +118,9 @@ func (s *Service) ReceiveBlockNoPubsub(ctx context.Context, block *ethpb.SignedB // Reports on block and fork choice metrics. s.reportSlotMetrics(blockCopy.Block.Slot) + // Log if block is a competing block. + isCompetingBlock(root[:], blockCopy.Block.Slot, headRoot, signedHeadBlock.Block.Slot) + // Log state transition data. logStateTransitionData(blockCopy.Block) @@ -244,12 +244,14 @@ func (s *Service) ReceiveBlockNoVerify(ctx context.Context, block *ethpb.SignedB } // This checks if the block is from a competing chain, emits warning and updates metrics. -func logCompetingBlock(root []byte, slot uint64, headRoot []byte, headSlot uint64) { - log.WithFields(logrus.Fields{ - "blkSlot": slot, - "blkRoot": hex.EncodeToString(root[:]), - "headSlot": headSlot, - "headRoot": hex.EncodeToString(headRoot), - }).Warn("Calculated head diffs from new block") - competingBlks.Inc() +func isCompetingBlock(root []byte, slot uint64, headRoot []byte, headSlot uint64) { + if !bytes.Equal(root[:], headRoot) { + log.WithFields(logrus.Fields{ + "blkSlot": slot, + "blkRoot": hex.EncodeToString(root[:]), + "headSlot": headSlot, + "headRoot": hex.EncodeToString(headRoot), + }).Warn("Calculated head diffs from new block") + competingBlks.Inc() + } }