From b682aa15d6e685c9c3e71ca22298673fe173bccb Mon Sep 17 00:00:00 2001 From: Giulio rebuffo Date: Fri, 22 Mar 2024 04:42:20 +0100 Subject: [PATCH] Caplin: Fixed not calling FCU due to faulty blob handling (#9779) This is kind of a low priority issue. We need blobs corresponding to each blocks, but before we were not checking if we received all of them, now we ask until the request returns the desired amount. --- cl/phase1/stages/clstages.go | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/cl/phase1/stages/clstages.go b/cl/phase1/stages/clstages.go index 131e4da2b16..0261e0ec270 100644 --- a/cl/phase1/stages/clstages.go +++ b/cl/phase1/stages/clstages.go @@ -564,14 +564,23 @@ func ConsensusClStages(ctx context.Context, errCh <- err return } - blobs, err := network2.RequestBlobsFrantically(ctx, cfg.rpc, ids) - if err != nil { - errCh <- err - return - } - if _, _, err = blob_storage.VerifyAgainstIdentifiersAndInsertIntoTheBlobStore(ctx, cfg.blobStore, ids, blobs.Responses, forkchoice.VerifyHeaderSignatureAgainstForkChoiceStoreFunction(cfg.forkChoice, cfg.beaconCfg, cfg.genesisCfg.GenesisValidatorRoot)); err != nil { - errCh <- err - return + var inserted uint64 + + for inserted != uint64(ids.Len()) { + select { + case <-ctx.Done(): + return + default: + } + blobs, err := network2.RequestBlobsFrantically(ctx, cfg.rpc, ids) + if err != nil { + errCh <- err + return + } + if _, inserted, err = blob_storage.VerifyAgainstIdentifiersAndInsertIntoTheBlobStore(ctx, cfg.blobStore, ids, blobs.Responses, forkchoice.VerifyHeaderSignatureAgainstForkChoiceStoreFunction(cfg.forkChoice, cfg.beaconCfg, cfg.genesisCfg.GenesisValidatorRoot)); err != nil { + errCh <- err + return + } } select {