From a07e604eeacc9dd95705318fd92a1c7b5a2a1b42 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Mon, 2 Mar 2020 18:51:26 +0100 Subject: [PATCH] Better logs for forking (#4966) * Move `updateHead` to ReceiveAttestationNoPubsub and better forking mesasges * Typo * Import * f Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> --- beacon-chain/blockchain/process_attestation.go | 8 -------- beacon-chain/blockchain/receive_attestation.go | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/beacon-chain/blockchain/process_attestation.go b/beacon-chain/blockchain/process_attestation.go index e024e1805..f2e792d90 100644 --- a/beacon-chain/blockchain/process_attestation.go +++ b/beacon-chain/blockchain/process_attestation.go @@ -11,7 +11,6 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/flags" stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/shared/bytesutil" - "github.com/prysmaticlabs/prysm/shared/featureconfig" "go.opencensus.io/trace" ) @@ -129,12 +128,5 @@ func (s *Service) onAttestation(ctx context.Context, a *ethpb.Attestation) ([]ui // Update forkchoice store with the new attestation for updating weight. s.forkChoiceStore.ProcessAttestation(ctx, indexedAtt.AttestingIndices, bytesutil.ToBytes32(a.Data.BeaconBlockRoot), a.Data.Target.Epoch) - if !featureconfig.Get().DisableUpdateHeadPerAttestation { - // Update fork choice head after updating weight. - if err := s.updateHead(ctx, baseState.Balances()); err != nil { - return nil, err - } - } - return indexedAtt.AttestingIndices, nil } diff --git a/beacon-chain/blockchain/receive_attestation.go b/beacon-chain/blockchain/receive_attestation.go index e41f732ca..89c57cc86 100644 --- a/beacon-chain/blockchain/receive_attestation.go +++ b/beacon-chain/blockchain/receive_attestation.go @@ -11,6 +11,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core/feed" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" "github.com/prysmaticlabs/prysm/shared/bytesutil" + "github.com/prysmaticlabs/prysm/shared/featureconfig" "github.com/prysmaticlabs/prysm/shared/params" "github.com/prysmaticlabs/prysm/shared/slotutil" "github.com/sirupsen/logrus" @@ -37,6 +38,21 @@ func (s *Service) ReceiveAttestationNoPubsub(ctx context.Context, att *ethpb.Att return errors.Wrap(err, "could not process attestation") } + if !featureconfig.Get().DisableUpdateHeadPerAttestation { + baseState, err := s.getAttPreState(ctx, att.Data.Target) + if err != nil { + return err + } + + // This updates fork choice head, if a new head could not be updated due to + // long range or intermediate forking. It simply logs a warning and returns nil + // as that's more appropriate than returning errors. + if err := s.updateHead(ctx, baseState.Balances()); err != nil { + log.Warnf("Resolving fork due to new attestation: %v", err) + return nil + } + } + return nil }