diff --git a/beacon-chain/sync/service.go b/beacon-chain/sync/service.go index a56d7cfc29..1ded3d27dc 100644 --- a/beacon-chain/sync/service.go +++ b/beacon-chain/sync/service.go @@ -66,6 +66,7 @@ type RegularSync struct { pendingQueueLock sync.RWMutex chainStarted bool initialSync Checker + validateBlockLock sync.RWMutex } // Start the regular sync service. diff --git a/beacon-chain/sync/validate_beacon_blocks.go b/beacon-chain/sync/validate_beacon_blocks.go index 5c86593f81..242bb5b8ce 100644 --- a/beacon-chain/sync/validate_beacon_blocks.go +++ b/beacon-chain/sync/validate_beacon_blocks.go @@ -19,6 +19,8 @@ var recentlySeenRoots = ccache.New(ccache.Configure().MaxSize(100000)) // Blocks that have already been seen are ignored. If the BLS signature is any valid signature, // this method rebroadcasts the message. func (r *RegularSync) validateBeaconBlockPubSub(ctx context.Context, msg proto.Message, p p2p.Broadcaster, fromSelf bool) bool { + r.validateBlockLock.Lock() + defer r.validateBlockLock.Unlock() m := msg.(*ethpb.BeaconBlock) blockRoot, err := ssz.SigningRoot(m)