diff --git a/beacon-chain/blockchain/chain_info_norace_test.go b/beacon-chain/blockchain/chain_info_norace_test.go index 22ef572973..7a77270539 100644 --- a/beacon-chain/blockchain/chain_info_norace_test.go +++ b/beacon-chain/blockchain/chain_info_norace_test.go @@ -11,7 +11,7 @@ import ( ) func TestHeadSlot_DataRace(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) s := &Service{ beaconDB: db, } @@ -22,11 +22,11 @@ func TestHeadSlot_DataRace(t *testing.T) { } func TestHeadRoot_DataRace(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) s := &Service{ beaconDB: db, head: &head{root: [32]byte{'A'}}, - stateGen: stategen.New(db, sc), + stateGen: stategen.New(db), } go func() { require.NoError(t, s.saveHead(context.Background(), [32]byte{})) @@ -36,11 +36,11 @@ func TestHeadRoot_DataRace(t *testing.T) { } func TestHeadBlock_DataRace(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) s := &Service{ beaconDB: db, head: &head{block: ðpb.SignedBeaconBlock{}}, - stateGen: stategen.New(db, sc), + stateGen: stategen.New(db), } go func() { require.NoError(t, s.saveHead(context.Background(), [32]byte{})) @@ -50,10 +50,10 @@ func TestHeadBlock_DataRace(t *testing.T) { } func TestHeadState_DataRace(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) s := &Service{ beaconDB: db, - stateGen: stategen.New(db, sc), + stateGen: stategen.New(db), } go func() { require.NoError(t, s.saveHead(context.Background(), [32]byte{})) diff --git a/beacon-chain/blockchain/chain_info_test.go b/beacon-chain/blockchain/chain_info_test.go index e495524ac5..5503abc595 100644 --- a/beacon-chain/blockchain/chain_info_test.go +++ b/beacon-chain/blockchain/chain_info_test.go @@ -25,44 +25,44 @@ var _ TimeFetcher = (*Service)(nil) var _ ForkFetcher = (*Service)(nil) func TestFinalizedCheckpt_Nil(t *testing.T) { - db, sc := testDB.SetupDB(t) - c := setupBeaconChain(t, db, sc) + db := testDB.SetupDB(t) + c := setupBeaconChain(t, db) assert.DeepEqual(t, params.BeaconConfig().ZeroHash[:], c.FinalizedCheckpt().Root, "Incorrect pre chain start value") } func TestHeadRoot_Nil(t *testing.T) { - db, sc := testDB.SetupDB(t) - c := setupBeaconChain(t, db, sc) + db := testDB.SetupDB(t) + c := setupBeaconChain(t, db) headRoot, err := c.HeadRoot(context.Background()) require.NoError(t, err) assert.DeepEqual(t, params.BeaconConfig().ZeroHash[:], headRoot, "Incorrect pre chain start value") } func TestFinalizedCheckpt_CanRetrieve(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) cp := ðpb.Checkpoint{Epoch: 5, Root: bytesutil.PadTo([]byte("foo"), 32)} - c := setupBeaconChain(t, db, sc) + c := setupBeaconChain(t, db) c.finalizedCheckpt = cp assert.Equal(t, cp.Epoch, c.FinalizedCheckpt().Epoch, "Unexpected finalized epoch") } func TestFinalizedCheckpt_GenesisRootOk(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) genesisRoot := [32]byte{'A'} cp := ðpb.Checkpoint{Root: genesisRoot[:]} - c := setupBeaconChain(t, db, sc) + c := setupBeaconChain(t, db) c.finalizedCheckpt = cp c.genesisRoot = genesisRoot assert.DeepEqual(t, c.genesisRoot[:], c.FinalizedCheckpt().Root) } func TestCurrentJustifiedCheckpt_CanRetrieve(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) - c := setupBeaconChain(t, db, sc) + c := setupBeaconChain(t, db) assert.Equal(t, params.BeaconConfig().ZeroHash, bytesutil.ToBytes32(c.CurrentJustifiedCheckpt().Root), "Unexpected justified epoch") cp := ðpb.Checkpoint{Epoch: 6, Root: bytesutil.PadTo([]byte("foo"), 32)} c.justifiedCheckpt = cp @@ -70,9 +70,9 @@ func TestCurrentJustifiedCheckpt_CanRetrieve(t *testing.T) { } func TestJustifiedCheckpt_GenesisRootOk(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) - c := setupBeaconChain(t, db, sc) + c := setupBeaconChain(t, db) genesisRoot := [32]byte{'B'} cp := ðpb.Checkpoint{Root: genesisRoot[:]} c.justifiedCheckpt = cp @@ -81,21 +81,21 @@ func TestJustifiedCheckpt_GenesisRootOk(t *testing.T) { } func TestPreviousJustifiedCheckpt_CanRetrieve(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) cp := ðpb.Checkpoint{Epoch: 7, Root: bytesutil.PadTo([]byte("foo"), 32)} - c := setupBeaconChain(t, db, sc) + c := setupBeaconChain(t, db) assert.Equal(t, params.BeaconConfig().ZeroHash, bytesutil.ToBytes32(c.CurrentJustifiedCheckpt().Root), "Unexpected justified epoch") c.prevJustifiedCheckpt = cp assert.Equal(t, cp.Epoch, c.PreviousJustifiedCheckpt().Epoch, "Unexpected previous justified epoch") } func TestPrevJustifiedCheckpt_GenesisRootOk(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) genesisRoot := [32]byte{'C'} cp := ðpb.Checkpoint{Root: genesisRoot[:]} - c := setupBeaconChain(t, db, sc) + c := setupBeaconChain(t, db) c.prevJustifiedCheckpt = cp c.genesisRoot = genesisRoot assert.DeepEqual(t, c.genesisRoot[:], c.PreviousJustifiedCheckpt().Root) @@ -118,7 +118,7 @@ func TestHeadRoot_CanRetrieve(t *testing.T) { } func TestHeadRoot_UseDB(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) c := &Service{beaconDB: db} c.head = &head{root: params.BeaconConfig().ZeroHash} b := testutil.NewBeaconBlock() @@ -195,8 +195,8 @@ func TestGenesisValidatorRoot_CanRetrieve(t *testing.T) { } func TestHeadETH1Data_Nil(t *testing.T) { - db, sc := testDB.SetupDB(t) - c := setupBeaconChain(t, db, sc) + db := testDB.SetupDB(t) + c := setupBeaconChain(t, db) assert.DeepEqual(t, ðpb.Eth1Data{}, c.HeadETH1Data(), "Incorrect pre chain start value") } @@ -213,8 +213,8 @@ func TestHeadETH1Data_CanRetrieve(t *testing.T) { func TestIsCanonical_Ok(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) - c := setupBeaconChain(t, db, sc) + db := testDB.SetupDB(t) + c := setupBeaconChain(t, db) blk := testutil.NewBeaconBlock() blk.Block.Slot = 0 diff --git a/beacon-chain/blockchain/head.go b/beacon-chain/blockchain/head.go index e0359a11c8..24f532fa1c 100644 --- a/beacon-chain/blockchain/head.go +++ b/beacon-chain/blockchain/head.go @@ -93,7 +93,7 @@ func (s *Service) saveHead(ctx context.Context, headRoot [32]byte) error { // If the head state is not available, just return nil. // There's nothing to cache - if !s.stateGen.StateSummaryExists(ctx, headRoot) { + if !s.beaconDB.HasStateSummary(ctx, headRoot) { return nil } diff --git a/beacon-chain/blockchain/head_test.go b/beacon-chain/blockchain/head_test.go index e248f1c23d..7b5fc99fc4 100644 --- a/beacon-chain/blockchain/head_test.go +++ b/beacon-chain/blockchain/head_test.go @@ -15,8 +15,8 @@ import ( ) func TestSaveHead_Same(t *testing.T) { - db, sc := testDB.SetupDB(t) - service := setupBeaconChain(t, db, sc) + db := testDB.SetupDB(t) + service := setupBeaconChain(t, db) r := [32]byte{'A'} service.head = &head{slot: 0, root: r} @@ -28,8 +28,8 @@ func TestSaveHead_Same(t *testing.T) { func TestSaveHead_Different(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) - service := setupBeaconChain(t, db, sc) + db := testDB.SetupDB(t) + service := setupBeaconChain(t, db) oldRoot := [32]byte{'A'} service.head = &head{slot: 0, root: oldRoot} @@ -61,8 +61,8 @@ func TestSaveHead_Different(t *testing.T) { func TestSaveHead_Different_Reorg(t *testing.T) { ctx := context.Background() hook := logTest.NewGlobal() - db, sc := testDB.SetupDB(t) - service := setupBeaconChain(t, db, sc) + db := testDB.SetupDB(t) + service := setupBeaconChain(t, db) oldRoot := [32]byte{'A'} service.head = &head{slot: 0, root: oldRoot} @@ -95,8 +95,8 @@ func TestSaveHead_Different_Reorg(t *testing.T) { } func TestCacheJustifiedStateBalances_CanCache(t *testing.T) { - db, sc := testDB.SetupDB(t) - service := setupBeaconChain(t, db, sc) + db := testDB.SetupDB(t) + service := setupBeaconChain(t, db) state, _ := testutil.DeterministicGenesisState(t, 100) r := [32]byte{'a'} @@ -107,8 +107,8 @@ func TestCacheJustifiedStateBalances_CanCache(t *testing.T) { } func TestUpdateHead_MissingJustifiedRoot(t *testing.T) { - db, sc := testDB.SetupDB(t) - service := setupBeaconChain(t, db, sc) + db := testDB.SetupDB(t) + service := setupBeaconChain(t, db) b := testutil.NewBeaconBlock() require.NoError(t, service.beaconDB.SaveBlock(context.Background(), b)) diff --git a/beacon-chain/blockchain/info_test.go b/beacon-chain/blockchain/info_test.go index cfe63ba650..cab43499b8 100644 --- a/beacon-chain/blockchain/info_test.go +++ b/beacon-chain/blockchain/info_test.go @@ -20,7 +20,7 @@ func TestService_TreeHandler(t *testing.T) { require.NoError(t, err) ctx := context.Background() - db, sCache := testDB.SetupDB(t) + db := testDB.SetupDB(t) headState := testutil.NewBeaconState() require.NoError(t, headState.SetBalances([]uint64{params.BeaconConfig().GweiPerEth})) cfg := &Config{ @@ -30,7 +30,7 @@ func TestService_TreeHandler(t *testing.T) { 0, // finalizedEpoch [32]byte{'a'}, ), - StateGen: stategen.New(db, sCache), + StateGen: stategen.New(db), } s, err := NewService(ctx, cfg) require.NoError(t, err) diff --git a/beacon-chain/blockchain/process_attestation_test.go b/beacon-chain/blockchain/process_attestation_test.go index 6b65f8f8db..7bb9dcf624 100644 --- a/beacon-chain/blockchain/process_attestation_test.go +++ b/beacon-chain/blockchain/process_attestation_test.go @@ -21,12 +21,12 @@ import ( func TestStore_OnAttestation(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{ BeaconDB: db, ForkChoiceStore: protoarray.New(0, 0, [32]byte{}), - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } service, err := NewService(ctx, cfg) require.NoError(t, err) @@ -130,11 +130,11 @@ func TestStore_OnAttestation(t *testing.T) { func TestStore_SaveCheckpointState(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{ BeaconDB: db, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } service, err := NewService(ctx, cfg) require.NoError(t, err) @@ -201,11 +201,11 @@ func TestStore_SaveCheckpointState(t *testing.T) { func TestStore_UpdateCheckpointState(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{ BeaconDB: db, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } service, err := NewService(ctx, cfg) require.NoError(t, err) @@ -242,7 +242,7 @@ func TestStore_UpdateCheckpointState(t *testing.T) { func TestAttEpoch_MatchPrevEpoch(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) @@ -254,7 +254,7 @@ func TestAttEpoch_MatchPrevEpoch(t *testing.T) { func TestAttEpoch_MatchCurrentEpoch(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) @@ -266,7 +266,7 @@ func TestAttEpoch_MatchCurrentEpoch(t *testing.T) { func TestAttEpoch_NotMatch(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) @@ -279,7 +279,7 @@ func TestAttEpoch_NotMatch(t *testing.T) { func TestVerifyBeaconBlock_NoBlock(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) @@ -295,7 +295,7 @@ func TestVerifyBeaconBlock_NoBlock(t *testing.T) { func TestVerifyBeaconBlock_futureBlock(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) @@ -313,7 +313,7 @@ func TestVerifyBeaconBlock_futureBlock(t *testing.T) { func TestVerifyBeaconBlock_OK(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) @@ -331,7 +331,7 @@ func TestVerifyBeaconBlock_OK(t *testing.T) { func TestVerifyLMDFFGConsistent_NotOK(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db, ForkChoiceStore: protoarray.New(0, 0, [32]byte{})} service, err := NewService(ctx, cfg) @@ -355,7 +355,7 @@ func TestVerifyLMDFFGConsistent_NotOK(t *testing.T) { func TestVerifyLMDFFGConsistent_OK(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db, ForkChoiceStore: protoarray.New(0, 0, [32]byte{})} service, err := NewService(ctx, cfg) @@ -379,7 +379,7 @@ func TestVerifyLMDFFGConsistent_OK(t *testing.T) { func TestVerifyFinalizedConsistency_InconsistentRoot(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db, ForkChoiceStore: protoarray.New(0, 0, [32]byte{})} service, err := NewService(ctx, cfg) @@ -406,7 +406,7 @@ func TestVerifyFinalizedConsistency_InconsistentRoot(t *testing.T) { func TestVerifyFinalizedConsistency_OK(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db, ForkChoiceStore: protoarray.New(0, 0, [32]byte{})} service, err := NewService(ctx, cfg) @@ -433,7 +433,7 @@ func TestVerifyFinalizedConsistency_OK(t *testing.T) { func TestVerifyFinalizedConsistency_IsCanonical(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db, ForkChoiceStore: protoarray.New(0, 0, [32]byte{})} service, err := NewService(ctx, cfg) diff --git a/beacon-chain/blockchain/process_block.go b/beacon-chain/blockchain/process_block.go index ef0d18fc72..d64ad9e934 100644 --- a/beacon-chain/blockchain/process_block.go +++ b/beacon-chain/blockchain/process_block.go @@ -9,6 +9,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" "github.com/prysmaticlabs/prysm/beacon-chain/core/state" stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state" + pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" "github.com/prysmaticlabs/prysm/shared/attestationutil" "github.com/prysmaticlabs/prysm/shared/bls" "github.com/prysmaticlabs/prysm/shared/bytesutil" @@ -303,7 +304,12 @@ func (s *Service) handleBlockAfterBatchVerify(ctx context.Context, signed *ethpb if err := s.insertBlockToForkChoiceStore(ctx, b, blockRoot, fCheckpoint, jCheckpoint); err != nil { return err } - s.stateGen.SaveStateSummary(ctx, signed, blockRoot) + if err := s.beaconDB.SaveStateSummary(ctx, &pb.StateSummary{ + Slot: signed.Block.Slot, + Root: blockRoot[:], + }); err != nil { + return err + } // Rate limit how many blocks (2 epochs worth of blocks) a node keeps in the memory. if uint64(len(s.getInitSyncBlocks())) > initialSyncBlockCacheSize { diff --git a/beacon-chain/blockchain/process_block_helpers.go b/beacon-chain/blockchain/process_block_helpers.go index b8b80c9137..e29d207acb 100644 --- a/beacon-chain/blockchain/process_block_helpers.go +++ b/beacon-chain/blockchain/process_block_helpers.go @@ -63,7 +63,7 @@ func (s *Service) verifyBlkPreState(ctx context.Context, b *ethpb.BeaconBlock) e // Loosen the check to HasBlock because state summary gets saved in batches // during initial syncing. There's no risk given a state summary object is just a // a subset of the block object. - if !s.stateGen.StateSummaryExists(ctx, parentRoot) && !s.beaconDB.HasBlock(ctx, parentRoot) { + if !s.beaconDB.HasStateSummary(ctx, parentRoot) && !s.beaconDB.HasBlock(ctx, parentRoot) { return errors.New("could not reconstruct parent state") } diff --git a/beacon-chain/blockchain/process_block_test.go b/beacon-chain/blockchain/process_block_test.go index 485616b674..9bcc2a1f94 100644 --- a/beacon-chain/blockchain/process_block_test.go +++ b/beacon-chain/blockchain/process_block_test.go @@ -8,7 +8,6 @@ import ( "github.com/pkg/errors" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/state" "github.com/prysmaticlabs/prysm/beacon-chain/db" @@ -28,11 +27,11 @@ import ( func TestStore_OnBlock(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{ BeaconDB: db, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), ForkChoiceStore: protoarray.New(0, 0, [32]byte{}), } service, err := NewService(ctx, cfg) @@ -123,11 +122,11 @@ func TestStore_OnBlock(t *testing.T) { func TestStore_OnBlockBatch(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{ BeaconDB: db, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } service, err := NewService(ctx, cfg) require.NoError(t, err) @@ -174,7 +173,7 @@ func TestStore_OnBlockBatch(t *testing.T) { func TestRemoveStateSinceLastFinalized_EmptyStartSlot(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) params.UseMinimalConfig() defer params.UseMainnetConfig() @@ -208,7 +207,7 @@ func TestRemoveStateSinceLastFinalized_EmptyStartSlot(t *testing.T) { func TestShouldUpdateJustified_ReturnFalse(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) params.UseMinimalConfig() defer params.UseMainnetConfig() @@ -237,11 +236,11 @@ func TestShouldUpdateJustified_ReturnFalse(t *testing.T) { func TestCachedPreState_CanGetFromStateSummary(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{ BeaconDB: db, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } service, err := NewService(ctx, cfg) require.NoError(t, err) @@ -270,11 +269,11 @@ func TestCachedPreState_CanGetFromStateSummary(t *testing.T) { func TestCachedPreState_CanGetFromDB(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{ BeaconDB: db, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } service, err := NewService(ctx, cfg) require.NoError(t, err) @@ -307,9 +306,9 @@ func TestCachedPreState_CanGetFromDB(t *testing.T) { func TestUpdateJustified_CouldUpdateBest(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - cfg := &Config{BeaconDB: db, StateGen: stategen.New(db, cache.NewStateSummaryCache())} + cfg := &Config{BeaconDB: db, StateGen: stategen.New(db)} service, err := NewService(ctx, cfg) require.NoError(t, err) @@ -338,7 +337,7 @@ func TestUpdateJustified_CouldUpdateBest(t *testing.T) { func TestFillForkChoiceMissingBlocks_CanSave(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) @@ -375,7 +374,7 @@ func TestFillForkChoiceMissingBlocks_CanSave(t *testing.T) { func TestFillForkChoiceMissingBlocks_RootsMatch(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) @@ -415,7 +414,7 @@ func TestFillForkChoiceMissingBlocks_RootsMatch(t *testing.T) { func TestFillForkChoiceMissingBlocks_FilterFinalized(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) @@ -568,7 +567,7 @@ func TestAncestorByDB_CtxErr(t *testing.T) { func TestAncestor_HandleSkipSlot(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db, ForkChoiceStore: protoarray.New(0, 0, [32]byte{})} service, err := NewService(ctx, cfg) @@ -650,7 +649,7 @@ func TestAncestor_CanUseForkchoice(t *testing.T) { func TestAncestor_CanUseDB(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) cfg := &Config{BeaconDB: db, ForkChoiceStore: protoarray.New(0, 0, [32]byte{})} service, err := NewService(ctx, cfg) @@ -702,7 +701,7 @@ func TestEnsureRootNotZeroHashes(t *testing.T) { } func TestFinalizedImpliesNewJustified(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() type args struct { cachedCheckPoint *ethpb.Checkpoint @@ -743,7 +742,7 @@ func TestFinalizedImpliesNewJustified(t *testing.T) { for _, test := range tests { beaconState := testutil.NewBeaconState() require.NoError(t, beaconState.SetCurrentJustifiedCheckpoint(test.args.stateCheckPoint)) - service, err := NewService(ctx, &Config{BeaconDB: db, StateGen: stategen.New(db, sc), ForkChoiceStore: protoarray.New(0, 0, [32]byte{})}) + service, err := NewService(ctx, &Config{BeaconDB: db, StateGen: stategen.New(db), ForkChoiceStore: protoarray.New(0, 0, [32]byte{})}) require.NoError(t, err) service.justifiedCheckpt = test.args.cachedCheckPoint require.NoError(t, service.beaconDB.SaveStateSummary(ctx, &pb.StateSummary{Root: bytesutil.PadTo(test.want.Root, 32)})) @@ -777,7 +776,7 @@ func TestFinalizedImpliesNewJustified(t *testing.T) { } func TestVerifyBlkDescendant(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() b := testutil.NewBeaconBlock() @@ -834,7 +833,7 @@ func TestVerifyBlkDescendant(t *testing.T) { }, } for _, tt := range tests { - service, err := NewService(ctx, &Config{BeaconDB: db, StateGen: stategen.New(db, sc), ForkChoiceStore: protoarray.New(0, 0, [32]byte{})}) + service, err := NewService(ctx, &Config{BeaconDB: db, StateGen: stategen.New(db), ForkChoiceStore: protoarray.New(0, 0, [32]byte{})}) require.NoError(t, err) service.finalizedCheckpt = ðpb.Checkpoint{ Root: tt.args.finalizedRoot[:], @@ -849,7 +848,7 @@ func TestVerifyBlkDescendant(t *testing.T) { } func TestUpdateJustifiedInitSync(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() cfg := &Config{BeaconDB: db} service, err := NewService(ctx, cfg) diff --git a/beacon-chain/blockchain/receive_attestation.go b/beacon-chain/blockchain/receive_attestation.go index bbcdbb600c..1998f5124f 100644 --- a/beacon-chain/blockchain/receive_attestation.go +++ b/beacon-chain/blockchain/receive_attestation.go @@ -125,7 +125,7 @@ func (s *Service) processAttestation(subscribedToStateEvents chan struct{}) { continue } - hasState := s.stateGen.StateSummaryExists(ctx, bytesutil.ToBytes32(a.Data.BeaconBlockRoot)) + hasState := s.beaconDB.HasStateSummary(ctx, bytesutil.ToBytes32(a.Data.BeaconBlockRoot)) hasBlock := s.hasBlock(ctx, bytesutil.ToBytes32(a.Data.BeaconBlockRoot)) if !(hasState && hasBlock) { continue diff --git a/beacon-chain/blockchain/receive_attestation_test.go b/beacon-chain/blockchain/receive_attestation_test.go index ba4c626301..f0a4ef23a3 100644 --- a/beacon-chain/blockchain/receive_attestation_test.go +++ b/beacon-chain/blockchain/receive_attestation_test.go @@ -14,9 +14,9 @@ import ( func TestAttestationCheckPtState_FarFutureSlot(t *testing.T) { helpers.ClearCache() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) - chainService := setupBeaconChain(t, db, sc) + chainService := setupBeaconChain(t, db) chainService.genesisTime = time.Now() e := helpers.MaxSlotBuffer/params.BeaconConfig().SlotsPerEpoch + 1 diff --git a/beacon-chain/blockchain/receive_block_test.go b/beacon-chain/blockchain/receive_block_test.go index 3e74c52ca4..50c7633351 100644 --- a/beacon-chain/blockchain/receive_block_test.go +++ b/beacon-chain/blockchain/receive_block_test.go @@ -117,7 +117,7 @@ func TestService_ReceiveBlock(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - db, stateSummaryCache := testDB.SetupDB(t) + db := testDB.SetupDB(t) genesisBlockRoot := bytesutil.ToBytes32(nil) require.NoError(t, db.SaveState(ctx, genesis, genesisBlockRoot)) @@ -131,7 +131,7 @@ func TestService_ReceiveBlock(t *testing.T) { AttPool: attestations.NewPool(), ExitPool: voluntaryexits.NewPool(), StateNotifier: &blockchainTesting.MockStateNotifier{RecordEvents: true}, - StateGen: stategen.New(db, stateSummaryCache), + StateGen: stategen.New(db), } s, err := NewService(ctx, cfg) require.NoError(t, err) @@ -159,7 +159,7 @@ func TestService_ReceiveBlockUpdateHead(t *testing.T) { genesis, keys := testutil.DeterministicGenesisState(t, 64) b, err := testutil.GenerateFullBlock(genesis, keys, testutil.DefaultBlockGenConfig(), 1) assert.NoError(t, err) - db, stateSummaryCache := testDB.SetupDB(t) + db := testDB.SetupDB(t) genesisBlockRoot := bytesutil.ToBytes32(nil) require.NoError(t, db.SaveState(ctx, genesis, genesisBlockRoot)) cfg := &Config{ @@ -172,7 +172,7 @@ func TestService_ReceiveBlockUpdateHead(t *testing.T) { AttPool: attestations.NewPool(), ExitPool: voluntaryexits.NewPool(), StateNotifier: &blockchainTesting.MockStateNotifier{RecordEvents: true}, - StateGen: stategen.New(db, stateSummaryCache), + StateGen: stategen.New(db), } s, err := NewService(ctx, cfg) require.NoError(t, err) @@ -242,7 +242,7 @@ func TestService_ReceiveBlockInitialSync(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - db, stateSummaryCache := testDB.SetupDB(t) + db := testDB.SetupDB(t) genesisBlockRoot := bytesutil.ToBytes32(nil) cfg := &Config{ @@ -253,7 +253,7 @@ func TestService_ReceiveBlockInitialSync(t *testing.T) { genesisBlockRoot, ), StateNotifier: &blockchainTesting.MockStateNotifier{RecordEvents: true}, - StateGen: stategen.New(db, stateSummaryCache), + StateGen: stategen.New(db), } s, err := NewService(ctx, cfg) require.NoError(t, err) @@ -323,7 +323,7 @@ func TestService_ReceiveBlockBatch(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - db, stateSummaryCache := testDB.SetupDB(t) + db := testDB.SetupDB(t) genesisBlockRoot, err := genesis.HashTreeRoot(ctx) require.NoError(t, err) cfg := &Config{ @@ -334,7 +334,7 @@ func TestService_ReceiveBlockBatch(t *testing.T) { genesisBlockRoot, ), StateNotifier: &blockchainTesting.MockStateNotifier{RecordEvents: true}, - StateGen: stategen.New(db, stateSummaryCache), + StateGen: stategen.New(db), } s, err := NewService(ctx, cfg) require.NoError(t, err) @@ -375,9 +375,9 @@ func TestService_HasInitSyncBlock(t *testing.T) { } func TestCheckSaveHotStateDB_Enabling(t *testing.T) { - db, stateSummaryCache := testDB.SetupDB(t) + db := testDB.SetupDB(t) hook := logTest.NewGlobal() - s, err := NewService(context.Background(), &Config{StateGen: stategen.New(db, stateSummaryCache)}) + s, err := NewService(context.Background(), &Config{StateGen: stategen.New(db)}) require.NoError(t, err) st := params.BeaconConfig().SlotsPerEpoch * uint64(epochsSinceFinalitySaveHotStateDB) s.genesisTime = time.Now().Add(time.Duration(-1*int64(st)*int64(params.BeaconConfig().SecondsPerSlot)) * time.Second) @@ -388,9 +388,9 @@ func TestCheckSaveHotStateDB_Enabling(t *testing.T) { } func TestCheckSaveHotStateDB_Disabling(t *testing.T) { - db, stateSummaryCache := testDB.SetupDB(t) + db := testDB.SetupDB(t) hook := logTest.NewGlobal() - s, err := NewService(context.Background(), &Config{StateGen: stategen.New(db, stateSummaryCache)}) + s, err := NewService(context.Background(), &Config{StateGen: stategen.New(db)}) require.NoError(t, err) s.finalizedCheckpt = ðpb.Checkpoint{} require.NoError(t, s.checkSaveHotStateDB(context.Background())) @@ -401,9 +401,9 @@ func TestCheckSaveHotStateDB_Disabling(t *testing.T) { } func TestCheckSaveHotStateDB_Overflow(t *testing.T) { - db, stateSummaryCache := testDB.SetupDB(t) + db := testDB.SetupDB(t) hook := logTest.NewGlobal() - s, err := NewService(context.Background(), &Config{StateGen: stategen.New(db, stateSummaryCache)}) + s, err := NewService(context.Background(), &Config{StateGen: stategen.New(db)}) require.NoError(t, err) s.finalizedCheckpt = ðpb.Checkpoint{Epoch: 10000000} s.genesisTime = time.Now() diff --git a/beacon-chain/blockchain/service.go b/beacon-chain/blockchain/service.go index d0f42b71a8..563e86bce5 100644 --- a/beacon-chain/blockchain/service.go +++ b/beacon-chain/blockchain/service.go @@ -342,11 +342,6 @@ func (s *Service) Stop() error { } } - // Save cached state summaries to the DB before stop. - if err := s.stateGen.SaveStateSummariesToDB(s.ctx); err != nil { - return err - } - // Save initial sync cached blocks to the DB before stop. return s.beaconDB.SaveBlocks(s.ctx, s.getInitSyncBlocks()) } diff --git a/beacon-chain/blockchain/service_norace_test.go b/beacon-chain/blockchain/service_norace_test.go index e31e8bc765..60caff0850 100644 --- a/beacon-chain/blockchain/service_norace_test.go +++ b/beacon-chain/blockchain/service_norace_test.go @@ -16,7 +16,7 @@ func init() { } func TestChainService_SaveHead_DataRace(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) s := &Service{ beaconDB: db, } diff --git a/beacon-chain/blockchain/service_test.go b/beacon-chain/blockchain/service_test.go index e6435a17e6..4284c45601 100644 --- a/beacon-chain/blockchain/service_test.go +++ b/beacon-chain/blockchain/service_test.go @@ -10,7 +10,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/gogo/protobuf/proto" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache" b "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" @@ -63,7 +62,7 @@ func (mb *mockBroadcaster) BroadcastAttestation(_ context.Context, _ uint64, _ * var _ p2p.Broadcaster = (*mockBroadcaster)(nil) -func setupBeaconChain(t *testing.T, beaconDB db.Database, sc *cache.StateSummaryCache) *Service { +func setupBeaconChain(t *testing.T, beaconDB db.Database) *Service { endpoint := "http://127.0.0.1" ctx := context.Background() var web3Service *powchain.Service @@ -106,7 +105,7 @@ func setupBeaconChain(t *testing.T, beaconDB db.Database, sc *cache.StateSummary P2p: &mockBroadcaster{}, StateNotifier: &mockBeaconNode{}, AttPool: attestations.NewPool(), - StateGen: stategen.New(beaconDB, sc), + StateGen: stategen.New(beaconDB), ForkChoiceStore: protoarray.New(0, 0, params.BeaconConfig().ZeroHash), OpsService: opsService, } @@ -124,9 +123,9 @@ func setupBeaconChain(t *testing.T, beaconDB db.Database, sc *cache.StateSummary func TestChainStartStop_Initialized(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) - chainService := setupBeaconChain(t, db, sc) + chainService := setupBeaconChain(t, db) genesisBlk := testutil.NewBeaconBlock() blkRoot, err := genesisBlk.Block.HashTreeRoot() @@ -153,9 +152,9 @@ func TestChainStartStop_Initialized(t *testing.T) { func TestChainStartStop_GenesisZeroHashes(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) - chainService := setupBeaconChain(t, db, sc) + chainService := setupBeaconChain(t, db) genesisBlk := testutil.NewBeaconBlock() blkRoot, err := genesisBlk.Block.HashTreeRoot() @@ -178,10 +177,10 @@ func TestChainStartStop_GenesisZeroHashes(t *testing.T) { func TestChainService_InitializeBeaconChain(t *testing.T) { helpers.ClearCache() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() - bc := setupBeaconChain(t, db, sc) + bc := setupBeaconChain(t, db) var err error // Set up 10 deposits pre chain start for validators to register @@ -221,9 +220,9 @@ func TestChainService_InitializeBeaconChain(t *testing.T) { func TestChainService_CorrectGenesisRoots(t *testing.T) { ctx := context.Background() - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) - chainService := setupBeaconChain(t, db, sc) + chainService := setupBeaconChain(t, db) genesisBlk := testutil.NewBeaconBlock() blkRoot, err := genesisBlk.Block.HashTreeRoot() @@ -247,7 +246,7 @@ func TestChainService_CorrectGenesisRoots(t *testing.T) { } func TestChainService_InitializeChainInfo(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() genesis := testutil.NewBeaconBlock() @@ -269,7 +268,7 @@ func TestChainService_InitializeChainInfo(t *testing.T) { require.NoError(t, db.SaveState(ctx, headState, genesisRoot)) require.NoError(t, db.SaveBlock(ctx, headBlock)) require.NoError(t, db.SaveFinalizedCheckpoint(ctx, ðpb.Checkpoint{Epoch: helpers.SlotToEpoch(finalizedSlot), Root: headRoot[:]})) - c := &Service{beaconDB: db, stateGen: stategen.New(db, sc)} + c := &Service{beaconDB: db, stateGen: stategen.New(db)} require.NoError(t, c.initializeChainInfo(ctx)) headBlk, err := c.HeadBlock(ctx) require.NoError(t, err) @@ -287,7 +286,7 @@ func TestChainService_InitializeChainInfo(t *testing.T) { } func TestChainService_InitializeChainInfo_SetHeadAtGenesis(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() genesis := testutil.NewBeaconBlock() @@ -308,7 +307,7 @@ func TestChainService_InitializeChainInfo_SetHeadAtGenesis(t *testing.T) { require.NoError(t, db.SaveState(ctx, headState, headRoot)) require.NoError(t, db.SaveState(ctx, headState, genesisRoot)) require.NoError(t, db.SaveBlock(ctx, headBlock)) - c := &Service{beaconDB: db, stateGen: stategen.New(db, sc)} + c := &Service{beaconDB: db, stateGen: stategen.New(db)} require.NoError(t, c.initializeChainInfo(ctx)) s, err := c.HeadState(ctx) require.NoError(t, err) @@ -328,7 +327,7 @@ func TestChainService_InitializeChainInfo_HeadSync(t *testing.T) { hook := logTest.NewGlobal() finalizedSlot := params.BeaconConfig().SlotsPerEpoch*2 + 1 - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() genesisBlock := testutil.NewBeaconBlock() @@ -364,7 +363,7 @@ func TestChainService_InitializeChainInfo_HeadSync(t *testing.T) { Root: finalizedRoot[:], })) - c := &Service{beaconDB: db, stateGen: stategen.New(db, sc)} + c := &Service{beaconDB: db, stateGen: stategen.New(db)} require.NoError(t, c.initializeChainInfo(ctx)) s, err := c.HeadState(ctx) @@ -399,11 +398,11 @@ func TestChainService_InitializeChainInfo_HeadSync(t *testing.T) { } func TestChainService_SaveHeadNoDB(t *testing.T) { - db, sc := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &Service{ beaconDB: db, - stateGen: stategen.New(db, sc), + stateGen: stategen.New(db), } b := testutil.NewBeaconBlock() b.Block.Slot = 1 @@ -422,7 +421,7 @@ func TestChainService_SaveHeadNoDB(t *testing.T) { func TestHasBlock_ForkChoiceAndDB(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) s := &Service{ forkChoiceStore: protoarray.New(0, 0, [32]byte{}), finalizedCheckpt: ðpb.Checkpoint{Root: make([]byte, 32)}, @@ -440,13 +439,13 @@ func TestHasBlock_ForkChoiceAndDB(t *testing.T) { func TestServiceStop_SaveCachedBlocks(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) s := &Service{ ctx: ctx, cancel: cancel, beaconDB: db, initSyncBlocks: make(map[[32]byte]*ethpb.SignedBeaconBlock), - stateGen: stategen.New(db, cache.NewStateSummaryCache()), + stateGen: stategen.New(db), } b := testutil.NewBeaconBlock() r, err := b.Block.HashTreeRoot() @@ -456,27 +455,8 @@ func TestServiceStop_SaveCachedBlocks(t *testing.T) { require.Equal(t, true, s.beaconDB.HasBlock(ctx, r)) } -func TestServiceStop_SaveCachedStateSummaries(t *testing.T) { - ctx, cancel := context.WithCancel(context.Background()) - db, _ := testDB.SetupDB(t) - c := cache.NewStateSummaryCache() - s := &Service{ - ctx: ctx, - cancel: cancel, - beaconDB: db, - initSyncBlocks: make(map[[32]byte]*ethpb.SignedBeaconBlock), - stateGen: stategen.New(db, c), - } - - r := [32]byte{'a'} - ss := &pb.StateSummary{Root: r[:], Slot: 1} - c.Put(r, ss) - require.NoError(t, s.Stop()) - require.Equal(t, true, s.beaconDB.HasStateSummary(ctx, r)) -} - func BenchmarkHasBlockDB(b *testing.B) { - db, _ := testDB.SetupDB(b) + db := testDB.SetupDB(b) ctx := context.Background() s := &Service{ beaconDB: db, @@ -494,7 +474,7 @@ func BenchmarkHasBlockDB(b *testing.B) { func BenchmarkHasBlockForkChoiceStore(b *testing.B) { ctx := context.Background() - db, _ := testDB.SetupDB(b) + db := testDB.SetupDB(b) s := &Service{ forkChoiceStore: protoarray.New(0, 0, [32]byte{}), finalizedCheckpt: ðpb.Checkpoint{Root: make([]byte, 32)}, diff --git a/beacon-chain/blockchain/weak_subjectivity_checks_test.go b/beacon-chain/blockchain/weak_subjectivity_checks_test.go index d07ea09b1d..310e157047 100644 --- a/beacon-chain/blockchain/weak_subjectivity_checks_test.go +++ b/beacon-chain/blockchain/weak_subjectivity_checks_test.go @@ -11,7 +11,7 @@ import ( ) func TestService_VerifyWeakSubjectivityRoot(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) b := testutil.NewBeaconBlock() b.Block.Slot = 32 diff --git a/beacon-chain/cache/BUILD.bazel b/beacon-chain/cache/BUILD.bazel index 9704a627fc..bd302b15e5 100644 --- a/beacon-chain/cache/BUILD.bazel +++ b/beacon-chain/cache/BUILD.bazel @@ -13,7 +13,6 @@ go_library( "doc.go", "hot_state_cache.go", "skip_slot_cache.go", - "state_summary.go", "subnet_ids.go", "proposer_indices_type.go", ] + select({ diff --git a/beacon-chain/db/db.go b/beacon-chain/db/db.go index 3778dc5f67..98d4db4c1e 100644 --- a/beacon-chain/db/db.go +++ b/beacon-chain/db/db.go @@ -5,11 +5,10 @@ package db import ( "context" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/db/kv" ) // NewDB initializes a new DB. -func NewDB(ctx context.Context, dirPath string, stateSummaryCache *cache.StateSummaryCache) (Database, error) { - return kv.NewKVStore(ctx, dirPath, stateSummaryCache) +func NewDB(ctx context.Context, dirPath string) (Database, error) { + return kv.NewKVStore(ctx, dirPath) } diff --git a/beacon-chain/db/db_kafka_wrapped.go b/beacon-chain/db/db_kafka_wrapped.go index fed4419a24..593fbde525 100644 --- a/beacon-chain/db/db_kafka_wrapped.go +++ b/beacon-chain/db/db_kafka_wrapped.go @@ -3,13 +3,12 @@ package db import ( - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/db/kafka" "github.com/prysmaticlabs/prysm/beacon-chain/db/kv" ) // NewDB initializes a new DB with kafka wrapper. -func NewDB(dirPath string, stateSummaryCache *cache.StateSummaryCache) (Database, error) { +func NewDB(dirPath string, stateSummaryCache *kv.stateSummaryCache) (Database, error) { db, err := kv.NewKVStore(dirPath, stateSummaryCache) if err != nil { return nil, err diff --git a/beacon-chain/db/kv/BUILD.bazel b/beacon-chain/db/kv/BUILD.bazel index 528a99dd1d..75585e1aa0 100644 --- a/beacon-chain/db/kv/BUILD.bazel +++ b/beacon-chain/db/kv/BUILD.bazel @@ -21,12 +21,12 @@ go_library( "slashings.go", "state.go", "state_summary.go", + "state_summary_cache.go", "utils.go", ], importpath = "github.com/prysmaticlabs/prysm/beacon-chain/db/kv", visibility = ["//beacon-chain:__subpackages__"], deps = [ - "//beacon-chain/cache:go_default_library", "//beacon-chain/core/helpers:go_default_library", "//beacon-chain/db/filters:go_default_library", "//beacon-chain/db/iface:go_default_library", @@ -75,7 +75,6 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//beacon-chain/cache:go_default_library", "//beacon-chain/db/filters:go_default_library", "//beacon-chain/state:go_default_library", "//proto/beacon/db:go_default_library", diff --git a/beacon-chain/db/kv/backup_test.go b/beacon-chain/db/kv/backup_test.go index fb4340cc67..a5e9062d79 100644 --- a/beacon-chain/db/kv/backup_test.go +++ b/beacon-chain/db/kv/backup_test.go @@ -12,7 +12,8 @@ import ( ) func TestStore_Backup(t *testing.T) { - db := setupDB(t) + db, err := NewKVStore(context.Background(), t.TempDir()) + require.NoError(t, err, "Failed to instantiate DB") ctx := context.Background() head := testutil.NewBeaconBlock() @@ -39,7 +40,7 @@ func TestStore_Backup(t *testing.T) { // our NewKVStore function expects when opening a database. require.NoError(t, os.Rename(oldFilePath, newFilePath)) - backedDB, err := NewKVStore(ctx, backupsPath, nil) + backedDB, err := NewKVStore(ctx, backupsPath) require.NoError(t, err, "Failed to instantiate DB") t.Cleanup(func() { require.NoError(t, backedDB.Close(), "Failed to close database") diff --git a/beacon-chain/db/kv/blocks.go b/beacon-chain/db/kv/blocks.go index 0596548a6a..140cdeab96 100644 --- a/beacon-chain/db/kv/blocks.go +++ b/beacon-chain/db/kv/blocks.go @@ -240,10 +240,9 @@ func (s *Store) SaveHeadBlockRoot(ctx context.Context, blockRoot [32]byte) error ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveHeadBlockRoot") defer span.End() return s.db.Update(func(tx *bolt.Tx) error { - hasStateSummaryInCache := s.stateSummaryCache.Has(blockRoot) - hasStateSummaryInDB := tx.Bucket(stateSummaryBucket).Get(blockRoot[:]) != nil + hasStateSummaryInDB := s.HasStateSummary(ctx, blockRoot) hasStateInDB := tx.Bucket(stateBucket).Get(blockRoot[:]) != nil - if !(hasStateInDB || hasStateSummaryInDB || hasStateSummaryInCache) { + if !(hasStateInDB || hasStateSummaryInDB) { return errors.New("no state or state summary found with head block root") } diff --git a/beacon-chain/db/kv/checkpoint.go b/beacon-chain/db/kv/checkpoint.go index 8f9c934854..fea19a3dd1 100644 --- a/beacon-chain/db/kv/checkpoint.go +++ b/beacon-chain/db/kv/checkpoint.go @@ -60,10 +60,9 @@ func (s *Store) SaveJustifiedCheckpoint(ctx context.Context, checkpoint *ethpb.C } return s.db.Update(func(tx *bolt.Tx) error { bucket := tx.Bucket(checkpointBucket) - hasStateSummaryInDB := tx.Bucket(stateSummaryBucket).Get(checkpoint.Root) != nil - hasStateSummaryInCache := s.stateSummaryCache.Has(bytesutil.ToBytes32(checkpoint.Root)) + hasStateSummaryInDB := s.HasStateSummary(ctx, bytesutil.ToBytes32(checkpoint.Root)) hasStateInDB := tx.Bucket(stateBucket).Get(checkpoint.Root) != nil - if !(hasStateInDB || hasStateSummaryInDB || hasStateSummaryInCache) { + if !(hasStateInDB || hasStateSummaryInDB) { return errMissingStateForCheckpoint } return bucket.Put(justifiedCheckpointKey, enc) @@ -81,10 +80,9 @@ func (s *Store) SaveFinalizedCheckpoint(ctx context.Context, checkpoint *ethpb.C } return s.db.Update(func(tx *bolt.Tx) error { bucket := tx.Bucket(checkpointBucket) - hasStateSummaryInDB := tx.Bucket(stateSummaryBucket).Get(checkpoint.Root) != nil - hasStateSummaryInCache := s.stateSummaryCache.Has(bytesutil.ToBytes32(checkpoint.Root)) + hasStateSummaryInDB := s.HasStateSummary(ctx, bytesutil.ToBytes32(checkpoint.Root)) hasStateInDB := tx.Bucket(stateBucket).Get(checkpoint.Root) != nil - if !(hasStateInDB || hasStateSummaryInDB || hasStateSummaryInCache) { + if !(hasStateInDB || hasStateSummaryInDB) { return errMissingStateForCheckpoint } if err := bucket.Put(finalizedCheckpointKey, enc); err != nil { diff --git a/beacon-chain/db/kv/kv.go b/beacon-chain/db/kv/kv.go index 0b395ff988..fb91b70a6d 100644 --- a/beacon-chain/db/kv/kv.go +++ b/beacon-chain/db/kv/kv.go @@ -12,7 +12,6 @@ import ( "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" prombolt "github.com/prysmaticlabs/prombbolt" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/db/iface" "github.com/prysmaticlabs/prysm/shared/fileutil" "github.com/prysmaticlabs/prysm/shared/params" @@ -45,14 +44,14 @@ type Store struct { databasePath string blockCache *ristretto.Cache validatorIndexCache *ristretto.Cache - stateSummaryCache *cache.StateSummaryCache + stateSummaryCache *stateSummaryCache ctx context.Context } // NewKVStore initializes a new boltDB key-value store at the directory // path specified, creates the kv-buckets based on the schema, and stores // an open connection db object as a property of the Store struct. -func NewKVStore(ctx context.Context, dirPath string, stateSummaryCache *cache.StateSummaryCache) (*Store, error) { +func NewKVStore(ctx context.Context, dirPath string) (*Store, error) { hasDir, err := fileutil.HasDir(dirPath) if err != nil { return nil, err @@ -94,7 +93,7 @@ func NewKVStore(ctx context.Context, dirPath string, stateSummaryCache *cache.St databasePath: dirPath, blockCache: blockCache, validatorIndexCache: validatorCache, - stateSummaryCache: stateSummaryCache, + stateSummaryCache: newStateSummaryCache(), ctx: ctx, } @@ -150,6 +149,12 @@ func (s *Store) ClearDB() error { // Close closes the underlying BoltDB database. func (s *Store) Close() error { prometheus.Unregister(createBoltCollector(s.db)) + + // Before DB closes, we should dump the cached state summary objects to DB. + if err := s.saveCachedStateSummariesDB(s.ctx); err != nil { + return err + } + return s.db.Close() } diff --git a/beacon-chain/db/kv/kv_test.go b/beacon-chain/db/kv/kv_test.go index ad6273df07..cd90d55708 100644 --- a/beacon-chain/db/kv/kv_test.go +++ b/beacon-chain/db/kv/kv_test.go @@ -4,13 +4,12 @@ import ( "context" "testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/shared/testutil/require" ) // setupDB instantiates and returns a Store instance. func setupDB(t testing.TB) *Store { - db, err := NewKVStore(context.Background(), t.TempDir(), cache.NewStateSummaryCache()) + db, err := NewKVStore(context.Background(), t.TempDir()) require.NoError(t, err, "Failed to instantiate DB") t.Cleanup(func() { require.NoError(t, db.Close(), "Failed to close database") diff --git a/beacon-chain/db/kv/state_summary.go b/beacon-chain/db/kv/state_summary.go index 5cac49c312..9cbbf74610 100644 --- a/beacon-chain/db/kv/state_summary.go +++ b/beacon-chain/db/kv/state_summary.go @@ -4,6 +4,7 @@ import ( "context" pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" + "github.com/prysmaticlabs/prysm/shared/bytesutil" bolt "go.etcd.io/bbolt" "go.opencensus.io/trace" ) @@ -21,25 +22,30 @@ func (s *Store) SaveStateSummaries(ctx context.Context, summaries []*pb.StateSum ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveStateSummaries") defer span.End() - return s.db.Update(func(tx *bolt.Tx) error { - bucket := tx.Bucket(stateSummaryBucket) - for _, summary := range summaries { - enc, err := encode(ctx, summary) - if err != nil { - return err - } - if err := bucket.Put(summary.Root, enc); err != nil { - return err - } + // When we reach the state summary cache prune count, + // dump the cached state summaries to the DB. + if s.stateSummaryCache.len() >= stateSummaryCachePruneCount { + if err := s.saveCachedStateSummariesDB(ctx); err != nil { + return err } - return nil - }) + } + + for _, ss := range summaries { + s.stateSummaryCache.put(bytesutil.ToBytes32(ss.Root), ss) + } + + return nil } // StateSummary returns the state summary object from the db using input block root. func (s *Store) StateSummary(ctx context.Context, blockRoot [32]byte) (*pb.StateSummary, error) { ctx, span := trace.StartSpan(ctx, "BeaconDB.StateSummary") defer span.End() + + if s.stateSummaryCache.has(blockRoot) { + return s.stateSummaryCache.get(blockRoot), nil + } + enc, err := s.stateSummaryBytes(ctx, blockRoot) if err != nil { return nil, err @@ -58,6 +64,11 @@ func (s *Store) StateSummary(ctx context.Context, blockRoot [32]byte) (*pb.State func (s *Store) HasStateSummary(ctx context.Context, blockRoot [32]byte) bool { ctx, span := trace.StartSpan(ctx, "BeaconDB.HasStateSummary") defer span.End() + + if s.stateSummaryCache.has(blockRoot) { + return true + } + enc, err := s.stateSummaryBytes(ctx, blockRoot) if err != nil { panic(err) @@ -78,3 +89,29 @@ func (s *Store) stateSummaryBytes(ctx context.Context, blockRoot [32]byte) ([]by return enc, err } + +// This saves all cached state summary objects to DB, and clears up the cache. +func (s *Store) saveCachedStateSummariesDB(ctx context.Context) error { + summaries := s.stateSummaryCache.getAll() + encs := make([][]byte, len(summaries)) + for i, s := range summaries { + enc, err := encode(ctx, s) + if err != nil { + return err + } + encs[i] = enc + } + if err := s.db.Update(func(tx *bolt.Tx) error { + bucket := tx.Bucket(stateSummaryBucket) + for i, s := range summaries { + if err := bucket.Put(s.Root, encs[i]); err != nil { + return err + } + } + return nil + }); err != nil { + return err + } + s.stateSummaryCache.clear() + return nil +} diff --git a/beacon-chain/cache/state_summary.go b/beacon-chain/db/kv/state_summary_cache.go similarity index 58% rename from beacon-chain/cache/state_summary.go rename to beacon-chain/db/kv/state_summary_cache.go index 580cb73ee8..4e039ff87b 100644 --- a/beacon-chain/cache/state_summary.go +++ b/beacon-chain/db/kv/state_summary_cache.go @@ -1,4 +1,4 @@ -package cache +package kv import ( "sync" @@ -6,47 +6,56 @@ import ( pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" ) -// StateSummaryCache caches state summary object. -type StateSummaryCache struct { +const stateSummaryCachePruneCount = 128 + +// stateSummaryCache caches state summary object. +type stateSummaryCache struct { initSyncStateSummaries map[[32]byte]*pb.StateSummary initSyncStateSummariesLock sync.RWMutex } -// NewStateSummaryCache creates a new state summary cache. -func NewStateSummaryCache() *StateSummaryCache { - return &StateSummaryCache{ +// newStateSummaryCache creates a new state summary cache. +func newStateSummaryCache() *stateSummaryCache { + return &stateSummaryCache{ initSyncStateSummaries: make(map[[32]byte]*pb.StateSummary), } } -// Put saves a state summary to the initial sync state summaries cache. -func (s *StateSummaryCache) Put(r [32]byte, b *pb.StateSummary) { +// put saves a state summary to the initial sync state summaries cache. +func (s *stateSummaryCache) put(r [32]byte, b *pb.StateSummary) { s.initSyncStateSummariesLock.Lock() defer s.initSyncStateSummariesLock.Unlock() s.initSyncStateSummaries[r] = b } -// Has checks if a state summary exists in the initial sync state summaries cache using the root +// has checks if a state summary exists in the initial sync state summaries cache using the root // of the block. -func (s *StateSummaryCache) Has(r [32]byte) bool { +func (s *stateSummaryCache) has(r [32]byte) bool { s.initSyncStateSummariesLock.RLock() defer s.initSyncStateSummariesLock.RUnlock() _, ok := s.initSyncStateSummaries[r] return ok } -// Get retrieves a state summary from the initial sync state summaries cache using the root of +// get retrieves a state summary from the initial sync state summaries cache using the root of // the block. -func (s *StateSummaryCache) Get(r [32]byte) *pb.StateSummary { +func (s *stateSummaryCache) get(r [32]byte) *pb.StateSummary { s.initSyncStateSummariesLock.RLock() defer s.initSyncStateSummariesLock.RUnlock() b := s.initSyncStateSummaries[r] return b } +// len retrieves the state summary count from the state summaries cache. +func (s *stateSummaryCache) len() int { + s.initSyncStateSummariesLock.RLock() + defer s.initSyncStateSummariesLock.RUnlock() + return len(s.initSyncStateSummaries) +} + // GetAll retrieves all the beacon state summaries from the initial sync state summaries cache, the returned // state summaries are unordered. -func (s *StateSummaryCache) GetAll() []*pb.StateSummary { +func (s *stateSummaryCache) getAll() []*pb.StateSummary { s.initSyncStateSummariesLock.RLock() defer s.initSyncStateSummariesLock.RUnlock() @@ -58,7 +67,7 @@ func (s *StateSummaryCache) GetAll() []*pb.StateSummary { } // Clear clears out the initial sync state summaries cache. -func (s *StateSummaryCache) Clear() { +func (s *stateSummaryCache) clear() { s.initSyncStateSummariesLock.Lock() defer s.initSyncStateSummariesLock.Unlock() s.initSyncStateSummaries = make(map[[32]byte]*pb.StateSummary) diff --git a/beacon-chain/db/kv/state_summary_test.go b/beacon-chain/db/kv/state_summary_test.go index 8fdaac7d08..1a80e44285 100644 --- a/beacon-chain/db/kv/state_summary_test.go +++ b/beacon-chain/db/kv/state_summary_test.go @@ -38,3 +38,26 @@ func TestStateSummary_CanSaveRretrieve(t *testing.T) { require.NoError(t, err) assert.DeepEqual(t, s2, saved, "State summary does not equal") } + +func TestStateSummary_CacheToDB(t *testing.T) { + db := setupDB(t) + + summaries := make([]*pb.StateSummary, stateSummaryCachePruneCount-1) + for i := range summaries { + summaries[i] = &pb.StateSummary{Slot: uint64(i), Root: bytesutil.PadTo(bytesutil.Uint64ToBytesLittleEndian(uint64(i)), 32)} + } + + require.NoError(t, db.SaveStateSummaries(context.Background(), summaries)) + require.Equal(t, db.stateSummaryCache.len(), stateSummaryCachePruneCount-1) + + require.NoError(t, db.SaveStateSummary(context.Background(), &pb.StateSummary{Slot: 1000, Root: []byte{'a', 'b'}})) + require.Equal(t, db.stateSummaryCache.len(), stateSummaryCachePruneCount) + + require.NoError(t, db.SaveStateSummary(context.Background(), &pb.StateSummary{Slot: 1001, Root: []byte{'c', 'd'}})) + require.Equal(t, db.stateSummaryCache.len(), 1) + + for i := range summaries { + r := bytesutil.Uint64ToBytesLittleEndian(uint64(i)) + require.Equal(t, true, db.HasStateSummary(context.Background(), bytesutil.ToBytes32(r))) + } +} diff --git a/beacon-chain/db/restore_test.go b/beacon-chain/db/restore_test.go index 34a126e069..d6c728885c 100644 --- a/beacon-chain/db/restore_test.go +++ b/beacon-chain/db/restore_test.go @@ -8,7 +8,6 @@ import ( "path" "testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/db/kv" "github.com/prysmaticlabs/prysm/shared/cmd" "github.com/prysmaticlabs/prysm/shared/testutil" @@ -22,7 +21,7 @@ func TestRestore(t *testing.T) { logHook := logTest.NewGlobal() ctx := context.Background() - backupDb, err := kv.NewKVStore(context.Background(), t.TempDir(), cache.NewStateSummaryCache()) + backupDb, err := kv.NewKVStore(context.Background(), t.TempDir()) defer func() { require.NoError(t, backupDb.Close()) }() @@ -58,7 +57,7 @@ func TestRestore(t *testing.T) { require.NoError(t, err) assert.Equal(t, 1, len(files)) assert.Equal(t, kv.DatabaseFileName, files[0].Name()) - restoredDb, err := kv.NewKVStore(context.Background(), path.Join(restoreDir, kv.BeaconNodeDbDirName), nil) + restoredDb, err := kv.NewKVStore(context.Background(), path.Join(restoreDir, kv.BeaconNodeDbDirName)) defer func() { require.NoError(t, restoredDb.Close()) }() diff --git a/beacon-chain/db/testing/BUILD.bazel b/beacon-chain/db/testing/BUILD.bazel index e966fdcdc0..1c16b5b2ac 100644 --- a/beacon-chain/db/testing/BUILD.bazel +++ b/beacon-chain/db/testing/BUILD.bazel @@ -7,7 +7,6 @@ go_library( importpath = "github.com/prysmaticlabs/prysm/beacon-chain/db/testing", visibility = ["//beacon-chain:__subpackages__"], deps = [ - "//beacon-chain/cache:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/kv:go_default_library", ], diff --git a/beacon-chain/db/testing/setup_db.go b/beacon-chain/db/testing/setup_db.go index 42fc8c71fe..93d8e4b37c 100644 --- a/beacon-chain/db/testing/setup_db.go +++ b/beacon-chain/db/testing/setup_db.go @@ -6,15 +6,13 @@ import ( "context" "testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/db" "github.com/prysmaticlabs/prysm/beacon-chain/db/kv" ) // SetupDB instantiates and returns database backed by key value store. -func SetupDB(t testing.TB) (db.Database, *cache.StateSummaryCache) { - sc := cache.NewStateSummaryCache() - s, err := kv.NewKVStore(context.Background(), t.TempDir(), sc) +func SetupDB(t testing.TB) db.Database { + s, err := kv.NewKVStore(context.Background(), t.TempDir()) if err != nil { t.Fatal(err) } @@ -23,5 +21,5 @@ func SetupDB(t testing.TB) (db.Database, *cache.StateSummaryCache) { t.Fatalf("failed to close database: %v", err) } }) - return s, sc + return s } diff --git a/beacon-chain/node/BUILD.bazel b/beacon-chain/node/BUILD.bazel index a801f9bcd4..d19c50b71f 100644 --- a/beacon-chain/node/BUILD.bazel +++ b/beacon-chain/node/BUILD.bazel @@ -11,7 +11,6 @@ go_library( visibility = ["//beacon-chain:__subpackages__"], deps = [ "//beacon-chain/blockchain:go_default_library", - "//beacon-chain/cache:go_default_library", "//beacon-chain/cache/depositcache:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/kv:go_default_library", diff --git a/beacon-chain/node/node.go b/beacon-chain/node/node.go index a6e1612b65..686edcd4a8 100644 --- a/beacon-chain/node/node.go +++ b/beacon-chain/node/node.go @@ -18,7 +18,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/pkg/errors" "github.com/prysmaticlabs/prysm/beacon-chain/blockchain" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache" "github.com/prysmaticlabs/prysm/beacon-chain/db" "github.com/prysmaticlabs/prysm/beacon-chain/db/kv" @@ -61,22 +60,21 @@ const testSkipPowFlag = "test-skip-pow" // full PoS node. It handles the lifecycle of the entire system and registers // services to a service registry. type BeaconNode struct { - cliCtx *cli.Context - ctx context.Context - services *shared.ServiceRegistry - lock sync.RWMutex - stop chan struct{} // Channel to wait for termination notifications. - db db.Database - stateSummaryCache *cache.StateSummaryCache - attestationPool attestations.Pool - exitPool *voluntaryexits.Pool - slashingsPool *slashings.Pool - depositCache *depositcache.DepositCache - stateFeed *event.Feed - blockFeed *event.Feed - opFeed *event.Feed - forkChoiceStore forkchoice.ForkChoicer - stateGen *stategen.State + cliCtx *cli.Context + ctx context.Context + services *shared.ServiceRegistry + lock sync.RWMutex + stop chan struct{} // Channel to wait for termination notifications. + db db.Database + attestationPool attestations.Pool + exitPool *voluntaryexits.Pool + slashingsPool *slashings.Pool + depositCache *depositcache.DepositCache + stateFeed *event.Feed + blockFeed *event.Feed + opFeed *event.Feed + forkChoiceStore forkchoice.ForkChoicer + stateGen *stategen.State } // NewBeaconNode creates a new node instance, sets up configuration options, and registers @@ -156,17 +154,16 @@ func NewBeaconNode(cliCtx *cli.Context) (*BeaconNode, error) { registry := shared.NewServiceRegistry() beacon := &BeaconNode{ - cliCtx: cliCtx, - ctx: cliCtx.Context, - services: registry, - stop: make(chan struct{}), - stateFeed: new(event.Feed), - blockFeed: new(event.Feed), - opFeed: new(event.Feed), - attestationPool: attestations.NewPool(), - exitPool: voluntaryexits.NewPool(), - slashingsPool: slashings.NewPool(), - stateSummaryCache: cache.NewStateSummaryCache(), + cliCtx: cliCtx, + ctx: cliCtx.Context, + services: registry, + stop: make(chan struct{}), + stateFeed: new(event.Feed), + blockFeed: new(event.Feed), + opFeed: new(event.Feed), + attestationPool: attestations.NewPool(), + exitPool: voluntaryexits.NewPool(), + slashingsPool: slashings.NewPool(), } if err := beacon.startDB(cliCtx); err != nil { @@ -297,7 +294,7 @@ func (b *BeaconNode) startDB(cliCtx *cli.Context) error { log.WithField("database-path", dbPath).Info("Checking DB") - d, err := db.NewDB(b.ctx, dbPath, b.stateSummaryCache) + d, err := db.NewDB(b.ctx, dbPath) if err != nil { return err } @@ -319,7 +316,7 @@ func (b *BeaconNode) startDB(cliCtx *cli.Context) error { if err := d.ClearDB(); err != nil { return errors.Wrap(err, "could not clear database") } - d, err = db.NewDB(b.ctx, dbPath, b.stateSummaryCache) + d, err = db.NewDB(b.ctx, dbPath) if err != nil { return errors.Wrap(err, "could not create new database") } @@ -341,7 +338,7 @@ func (b *BeaconNode) startDB(cliCtx *cli.Context) error { } func (b *BeaconNode) startStateGen() { - b.stateGen = stategen.New(b.db, b.stateSummaryCache) + b.stateGen = stategen.New(b.db) } func readbootNodes(fileName string) ([]string, error) { @@ -548,7 +545,6 @@ func (b *BeaconNode) registerSyncService() error { AttPool: b.attestationPool, ExitPool: b.exitPool, SlashingPool: b.slashingsPool, - StateSummaryCache: b.stateSummaryCache, StateGen: b.stateGen, }) diff --git a/beacon-chain/powchain/block_reader_test.go b/beacon-chain/powchain/block_reader_test.go index b76516cf33..96a346ab18 100644 --- a/beacon-chain/powchain/block_reader_test.go +++ b/beacon-chain/powchain/block_reader_test.go @@ -30,7 +30,7 @@ func TestLatestMainchainInfo_OK(t *testing.T) { testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, DepositContract: testAcc.ContractAddr, @@ -68,7 +68,7 @@ func TestLatestMainchainInfo_OK(t *testing.T) { } func TestBlockHashByHeight_ReturnsHash(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -95,7 +95,7 @@ func TestBlockHashByHeight_ReturnsHash(t *testing.T) { } func TestBlockHashByHeight_ReturnsError_WhenNoEth1Client(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -111,7 +111,7 @@ func TestBlockHashByHeight_ReturnsError_WhenNoEth1Client(t *testing.T) { } func TestBlockExists_ValidHash(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -142,7 +142,7 @@ func TestBlockExists_ValidHash(t *testing.T) { } func TestBlockExists_InvalidHash(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -156,7 +156,7 @@ func TestBlockExists_InvalidHash(t *testing.T) { } func TestBlockExists_UsesCachedBlockInfo(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -179,7 +179,7 @@ func TestBlockExists_UsesCachedBlockInfo(t *testing.T) { } func TestBlockExistsWithCache_UsesCachedHeaderInfo(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -200,7 +200,7 @@ func TestBlockExistsWithCache_UsesCachedHeaderInfo(t *testing.T) { } func TestBlockExistsWithCache_HeaderNotCached(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -214,7 +214,7 @@ func TestBlockExistsWithCache_HeaderNotCached(t *testing.T) { } func TestService_BlockNumberByTimestamp(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ @@ -241,7 +241,7 @@ func TestService_BlockNumberByTimestamp(t *testing.T) { } func TestService_BlockNumberByTimestampLessTargetTime(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ @@ -274,7 +274,7 @@ func TestService_BlockNumberByTimestampLessTargetTime(t *testing.T) { } func TestService_BlockNumberByTimestampMoreTargetTime(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ @@ -307,7 +307,7 @@ func TestService_BlockNumberByTimestampMoreTargetTime(t *testing.T) { } func TestService_BlockTimeByHeight_ReturnsError_WhenNoEth1Client(t *testing.T) { - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, diff --git a/beacon-chain/powchain/deposit_test.go b/beacon-chain/powchain/deposit_test.go index 7d4c878b92..dafd973a08 100644 --- a/beacon-chain/powchain/deposit_test.go +++ b/beacon-chain/powchain/deposit_test.go @@ -21,7 +21,7 @@ import ( const pubKeyErr = "could not convert bytes to public key" func TestProcessDeposit_OK(t *testing.T) { - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -45,7 +45,7 @@ func TestProcessDeposit_OK(t *testing.T) { } func TestProcessDeposit_InvalidMerkleBranch(t *testing.T) { - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -71,7 +71,7 @@ func TestProcessDeposit_InvalidMerkleBranch(t *testing.T) { func TestProcessDeposit_InvalidPublicKey(t *testing.T) { hook := logTest.NewGlobal() - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -107,7 +107,7 @@ func TestProcessDeposit_InvalidPublicKey(t *testing.T) { func TestProcessDeposit_InvalidSignature(t *testing.T) { hook := logTest.NewGlobal() - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -142,7 +142,7 @@ func TestProcessDeposit_InvalidSignature(t *testing.T) { func TestProcessDeposit_UnableToVerify(t *testing.T) { hook := logTest.NewGlobal() - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -175,7 +175,7 @@ func TestProcessDeposit_UnableToVerify(t *testing.T) { } func TestProcessDeposit_IncompleteDeposit(t *testing.T) { - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -236,7 +236,7 @@ func TestProcessDeposit_IncompleteDeposit(t *testing.T) { } func TestProcessDeposit_AllDepositedSuccessfully(t *testing.T) { - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, diff --git a/beacon-chain/powchain/log_processing_test.go b/beacon-chain/powchain/log_processing_test.go index a846d739f1..938292360a 100644 --- a/beacon-chain/powchain/log_processing_test.go +++ b/beacon-chain/powchain/log_processing_test.go @@ -35,7 +35,7 @@ func TestProcessDepositLog_OK(t *testing.T) { testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) depositCache, err := depositcache.New() require.NoError(t, err) @@ -99,7 +99,7 @@ func TestProcessDepositLog_InsertsPendingDeposit(t *testing.T) { hook := logTest.NewGlobal() testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) depositCache, err := depositcache.New() require.NoError(t, err) @@ -159,7 +159,7 @@ func TestProcessDepositLog_InsertsPendingDeposit(t *testing.T) { func TestUnpackDepositLogData_OK(t *testing.T) { testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -207,7 +207,7 @@ func TestProcessETH2GenesisLog_8DuplicatePubkeys(t *testing.T) { hook := logTest.NewGlobal() testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) depositCache, err := depositcache.New() require.NoError(t, err) @@ -278,7 +278,7 @@ func TestProcessETH2GenesisLog(t *testing.T) { hook := logTest.NewGlobal() testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) depositCache, err := depositcache.New() require.NoError(t, err) @@ -365,7 +365,7 @@ func TestProcessETH2GenesisLog_CorrectNumOfDeposits(t *testing.T) { hook := logTest.NewGlobal() testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - kvStore, _ := testDB.SetupDB(t) + kvStore := testDB.SetupDB(t) depositCache, err := depositcache.New() require.NoError(t, err) @@ -458,7 +458,7 @@ func TestProcessETH2GenesisLog_LargePeriodOfNoLogs(t *testing.T) { hook := logTest.NewGlobal() testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - kvStore, _ := testDB.SetupDB(t) + kvStore := testDB.SetupDB(t) depositCache, err := depositcache.New() require.NoError(t, err) @@ -561,7 +561,7 @@ func TestWeb3ServiceProcessDepositLog_RequestMissedDeposits(t *testing.T) { hook := logTest.NewGlobal() testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) depositCache, err := depositcache.New() require.NoError(t, err) @@ -647,7 +647,7 @@ func TestConsistentGenesisState(t *testing.T) { t.Skip("Incorrect test setup") testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) web3Service := newPowchainService(t, testAcc, beaconDB) testAcc.Backend.Commit() @@ -689,7 +689,7 @@ func TestConsistentGenesisState(t *testing.T) { } // New db to prevent registration error. - newBeaconDB, _ := testDB.SetupDB(t) + newBeaconDB := testDB.SetupDB(t) newWeb3Service := newPowchainService(t, testAcc, newBeaconDB) go newWeb3Service.run(ctx.Done()) @@ -707,7 +707,7 @@ func TestCheckForChainstart_NoValidator(t *testing.T) { hook := logTest.NewGlobal() testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := testDB.SetupDB(t) + beaconDB := testDB.SetupDB(t) s := newPowchainService(t, testAcc, beaconDB) s.checkForChainstart([32]byte{}, nil, 0) require.LogsDoNotContain(t, hook, "Could not determine active validator count from pre genesis state") diff --git a/beacon-chain/powchain/service_test.go b/beacon-chain/powchain/service_test.go index d8fabe21cd..55cb95e889 100644 --- a/beacon-chain/powchain/service_test.go +++ b/beacon-chain/powchain/service_test.go @@ -120,7 +120,7 @@ var depositsReqForChainStart = 64 func TestStart_OK(t *testing.T) { hook := logTest.NewGlobal() - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ @@ -149,7 +149,7 @@ func TestStart_OK(t *testing.T) { func TestStart_NoHTTPEndpointDefinedFails_WithoutChainStarted(t *testing.T) { hook := logTest.NewGlobal() - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") s, err := NewService(context.Background(), &Web3ServiceConfig{ @@ -184,7 +184,7 @@ func TestStart_NoHTTPEndpointDefinedFails_WithoutChainStarted(t *testing.T) { func TestStart_NoHTTPEndpointDefinedSucceeds_WithGenesisState(t *testing.T) { hook := logTest.NewGlobal() - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") st, _ := testutil.DeterministicGenesisState(t, 10) @@ -215,7 +215,7 @@ func TestStart_NoHTTPEndpointDefinedSucceeds_WithGenesisState(t *testing.T) { func TestStart_NoHTTPEndpointDefinedSucceeds_WithChainStarted(t *testing.T) { hook := logTest.NewGlobal() - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") @@ -239,7 +239,7 @@ func TestStop_OK(t *testing.T) { hook := logTest.NewGlobal() testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, DepositContract: testAcc.ContractAddr, @@ -264,7 +264,7 @@ func TestStop_OK(t *testing.T) { func TestService_Eth1Synced(t *testing.T) { testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, DepositContract: testAcc.ContractAddr, @@ -285,7 +285,7 @@ func TestService_Eth1Synced(t *testing.T) { func TestFollowBlock_OK(t *testing.T) { testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, DepositContract: testAcc.ContractAddr, @@ -360,7 +360,7 @@ func TestStatus(t *testing.T) { func TestHandlePanic_OK(t *testing.T) { hook := logTest.NewGlobal() - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, BeaconDB: beaconDB, @@ -399,7 +399,7 @@ func TestLogTillGenesis_OK(t *testing.T) { hook := logTest.NewGlobal() testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, DepositContract: testAcc.ContractAddr, @@ -431,7 +431,7 @@ func TestInitDepositCache_OK(t *testing.T) { {Index: 1, Eth1BlockHeight: 4, Deposit: ðpb.Deposit{Proof: [][]byte{[]byte("B")}}}, {Index: 2, Eth1BlockHeight: 6, Deposit: ðpb.Deposit{Proof: [][]byte{[]byte("c")}}}, } - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) s := &Service{ chainStartData: &protodb.ChainStartData{Chainstarted: false}, beaconDB: beaconDB, @@ -456,7 +456,7 @@ func TestInitDepositCache_OK(t *testing.T) { func TestNewService_EarliestVotingBlock(t *testing.T) { testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) web3Service, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, DepositContract: testAcc.ContractAddr, @@ -508,7 +508,7 @@ func TestNewService_EarliestVotingBlock(t *testing.T) { func TestNewService_Eth1HeaderRequLimit(t *testing.T) { testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) s1, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{endpoint}, @@ -534,7 +534,7 @@ func TestServiceFallbackCorrectly(t *testing.T) { testAcc, err := contracts.Setup() require.NoError(t, err, "Unable to set up simulated backend") - beaconDB, _ := dbutil.SetupDB(t) + beaconDB := dbutil.SetupDB(t) s1, err := NewService(context.Background(), &Web3ServiceConfig{ HTTPEndpoints: []string{firstEndpoint}, diff --git a/beacon-chain/rpc/beacon/BUILD.bazel b/beacon-chain/rpc/beacon/BUILD.bazel index d19a06d6d2..7f017fd10b 100644 --- a/beacon-chain/rpc/beacon/BUILD.bazel +++ b/beacon-chain/rpc/beacon/BUILD.bazel @@ -75,7 +75,6 @@ go_test( shard_count = 4, deps = [ "//beacon-chain/blockchain/testing:go_default_library", - "//beacon-chain/cache:go_default_library", "//beacon-chain/core/epoch/precompute:go_default_library", "//beacon-chain/core/feed:go_default_library", "//beacon-chain/core/feed/block:go_default_library", diff --git a/beacon-chain/rpc/beacon/assignments_test.go b/beacon-chain/rpc/beacon/assignments_test.go index 1d1cccbd08..aa7459cef0 100644 --- a/beacon-chain/rpc/beacon/assignments_test.go +++ b/beacon-chain/rpc/beacon/assignments_test.go @@ -22,7 +22,7 @@ import ( func TestServer_ListAssignments_CannotRequestFutureEpoch(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() bs := &Server{ BeaconDB: db, @@ -43,7 +43,7 @@ func TestServer_ListAssignments_CannotRequestFutureEpoch(t *testing.T) { func TestServer_ListAssignments_NoResults(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() st := testutil.NewBeaconState() @@ -57,7 +57,7 @@ func TestServer_ListAssignments_NoResults(t *testing.T) { bs := &Server{ BeaconDB: db, GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } wanted := ðpb.ValidatorAssignments{ Assignments: make([]*ethpb.ValidatorAssignments_CommitteeAssignment, 0), @@ -80,7 +80,7 @@ func TestServer_ListAssignments_NoResults(t *testing.T) { func TestServer_ListAssignments_Pagination_InputOutOfRange(t *testing.T) { helpers.ClearCache() - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := 100 validators := make([]*ethpb.Validator, 0, count) @@ -117,7 +117,7 @@ func TestServer_ListAssignments_Pagination_InputOutOfRange(t *testing.T) { }, }, GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } wanted := fmt.Sprintf("page start %d >= list %d", 500, count) @@ -143,7 +143,7 @@ func TestServer_ListAssignments_Pagination_ExceedsMaxPageSize(t *testing.T) { func TestServer_ListAssignments_Pagination_DefaultPageSize_NoArchive(t *testing.T) { helpers.ClearCache() - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := 500 validators := make([]*ethpb.Validator, 0, count) @@ -191,7 +191,7 @@ func TestServer_ListAssignments_Pagination_DefaultPageSize_NoArchive(t *testing. }, }, GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } res, err := bs.ListValidatorAssignments(context.Background(), ðpb.ListValidatorAssignmentsRequest{ @@ -223,7 +223,7 @@ func TestServer_ListAssignments_Pagination_DefaultPageSize_NoArchive(t *testing. func TestServer_ListAssignments_FilterPubkeysIndices_NoPagination(t *testing.T) { helpers.ClearCache() - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := 100 @@ -256,7 +256,7 @@ func TestServer_ListAssignments_FilterPubkeysIndices_NoPagination(t *testing.T) }, }, GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } pubKey1 := make([]byte, params.BeaconConfig().BLSPubkeyLength) @@ -292,7 +292,7 @@ func TestServer_ListAssignments_FilterPubkeysIndices_NoPagination(t *testing.T) func TestServer_ListAssignments_CanFilterPubkeysIndices_WithPagination(t *testing.T) { helpers.ClearCache() - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := 100 validators := make([]*ethpb.Validator, 0, count) @@ -324,7 +324,7 @@ func TestServer_ListAssignments_CanFilterPubkeysIndices_WithPagination(t *testin }, }, GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } req := ðpb.ListValidatorAssignmentsRequest{Indices: []uint64{1, 2, 3, 4, 5, 6}, PageSize: 2, PageToken: "1"} diff --git a/beacon-chain/rpc/beacon/attestations_test.go b/beacon-chain/rpc/beacon/attestations_test.go index 9f0149d49c..67801db65b 100644 --- a/beacon-chain/rpc/beacon/attestations_test.go +++ b/beacon-chain/rpc/beacon/attestations_test.go @@ -34,7 +34,7 @@ import ( ) func TestServer_ListAttestations_NoResults(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() st, err := stateTrie.InitializeFromProto(&pbp2p.BeaconState{ @@ -62,7 +62,7 @@ func TestServer_ListAttestations_NoResults(t *testing.T) { } func TestServer_ListAttestations_Genesis(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() st, err := stateTrie.InitializeFromProto(&pbp2p.BeaconState{ @@ -112,7 +112,7 @@ func TestServer_ListAttestations_Genesis(t *testing.T) { } func TestServer_ListAttestations_NoPagination(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := uint64(8) @@ -149,7 +149,7 @@ func TestServer_ListAttestations_NoPagination(t *testing.T) { } func TestServer_ListAttestations_FiltersCorrectly(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() someRoot := [32]byte{1, 2, 3} @@ -282,7 +282,7 @@ func TestServer_ListAttestations_FiltersCorrectly(t *testing.T) { } func TestServer_ListAttestations_Pagination_CustomPageParameters(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := params.BeaconConfig().SlotsPerEpoch * 4 @@ -391,7 +391,7 @@ func TestServer_ListAttestations_Pagination_CustomPageParameters(t *testing.T) { } func TestServer_ListAttestations_Pagination_OutOfRange(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() testutil.NewBeaconBlock() count := uint64(1) @@ -456,7 +456,7 @@ func TestServer_ListAttestations_Pagination_ExceedsMaxPageSize(t *testing.T) { } func TestServer_ListAttestations_Pagination_DefaultPageSize(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := uint64(params.BeaconConfig().DefaultPageSize) @@ -529,7 +529,7 @@ func TestServer_mapAttestationToTargetRoot(t *testing.T) { func TestServer_ListIndexedAttestations_GenesisEpoch(t *testing.T) { params.UseMainnetConfig() - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) helpers.ClearCache() ctx := context.Background() targetRoot1 := bytesutil.ToBytes32([]byte("root")) @@ -600,7 +600,7 @@ func TestServer_ListIndexedAttestations_GenesisEpoch(t *testing.T) { BeaconDB: db, GenesisTimeFetcher: &chainMock.ChainService{State: state}, HeadFetcher: &chainMock.ChainService{State: state}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } err := db.SaveStateSummary(ctx, &pbp2p.StateSummary{ Root: targetRoot1[:], @@ -637,7 +637,7 @@ func TestServer_ListIndexedAttestations_GenesisEpoch(t *testing.T) { func TestServer_ListIndexedAttestations_OldEpoch(t *testing.T) { params.SetupTestConfigCleanup(t) params.OverrideBeaconConfig(params.MainnetConfig()) - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) helpers.ClearCache() ctx := context.Background() @@ -700,7 +700,7 @@ func TestServer_ListIndexedAttestations_OldEpoch(t *testing.T) { GenesisTimeFetcher: &chainMock.ChainService{ Genesis: time.Now(), }, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } err = db.SaveStateSummary(ctx, &pbp2p.StateSummary{ Root: blockRoot[:], @@ -884,7 +884,7 @@ func TestServer_StreamIndexedAttestations_ContextCanceled(t *testing.T) { func TestServer_StreamIndexedAttestations_OK(t *testing.T) { params.SetupTestConfigCleanup(t) params.OverrideBeaconConfig(params.MainnetConfig()) - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) exitRoutine := make(chan bool) ctrl := gomock.NewController(t) defer ctrl.Finish() @@ -971,7 +971,7 @@ func TestServer_StreamIndexedAttestations_OK(t *testing.T) { }, AttestationNotifier: chainService.OperationNotifier(), CollectedAttestationsBuffer: make(chan []*ethpb.Attestation, 1), - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } for dataRoot, sameDataAtts := range atts { diff --git a/beacon-chain/rpc/beacon/blocks_test.go b/beacon-chain/rpc/beacon/blocks_test.go index f7fd17f316..91eb891564 100644 --- a/beacon-chain/rpc/beacon/blocks_test.go +++ b/beacon-chain/rpc/beacon/blocks_test.go @@ -11,7 +11,6 @@ import ( "github.com/golang/mock/gomock" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" chainMock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/feed" blockfeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/block" statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state" @@ -30,7 +29,7 @@ import ( ) func TestServer_ListBlocks_NoResults(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() bs := &Server{ @@ -71,7 +70,7 @@ func TestServer_ListBlocks_NoResults(t *testing.T) { } func TestServer_ListBlocks_Genesis(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() bs := &Server{ @@ -116,7 +115,7 @@ func TestServer_ListBlocks_Genesis(t *testing.T) { } func TestServer_ListBlocks_Genesis_MultiBlocks(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() bs := &Server{ @@ -154,7 +153,7 @@ func TestServer_ListBlocks_Genesis_MultiBlocks(t *testing.T) { } func TestServer_ListBlocks_Pagination(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := uint64(100) @@ -288,7 +287,7 @@ func TestServer_ListBlocks_Pagination(t *testing.T) { } func TestServer_ListBlocks_Errors(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() bs := &Server{BeaconDB: db} @@ -330,7 +329,7 @@ func TestServer_ListBlocks_Errors(t *testing.T) { } func TestServer_GetChainHead_NoFinalizedBlock(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) s := testutil.NewBeaconState() require.NoError(t, s.SetSlot(1)) @@ -367,7 +366,7 @@ func TestServer_GetChainHead_NoHeadBlock(t *testing.T) { } func TestServer_GetChainHead(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) genBlock := testutil.NewBeaconBlock() genBlock.Block.ParentRoot = bytesutil.PadTo([]byte{'G'}, 32) @@ -432,7 +431,7 @@ func TestServer_GetChainHead(t *testing.T) { } func TestServer_StreamChainHead_ContextCanceled(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() ctx, cancel := context.WithCancel(ctx) @@ -457,7 +456,7 @@ func TestServer_StreamChainHead_ContextCanceled(t *testing.T) { } func TestServer_StreamChainHead_OnHeadUpdated(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) params.UseMainnetConfig() genBlock := testutil.NewBeaconBlock() genBlock.Block.ParentRoot = bytesutil.PadTo([]byte{'G'}, 32) @@ -553,7 +552,7 @@ func TestServer_StreamChainHead_OnHeadUpdated(t *testing.T) { } func TestServer_StreamBlocks_ContextCanceled(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() chainService := &chainMock.ChainService{} @@ -615,7 +614,7 @@ func TestServer_StreamBlocks_OnHeadUpdated(t *testing.T) { func TestServer_GetWeakSubjectivityCheckpoint(t *testing.T) { params.UseMainnetConfig() - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() beaconState := testutil.NewBeaconState() b := testutil.NewBeaconBlock() @@ -630,7 +629,7 @@ func TestServer_GetWeakSubjectivityCheckpoint(t *testing.T) { BlockNotifier: chainService.BlockNotifier(), HeadFetcher: chainService, BeaconDB: db, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } c, err := server.GetWeakSubjectivityCheckpoint(ctx, &ptypes.Empty{}) diff --git a/beacon-chain/rpc/beacon/committees_test.go b/beacon-chain/rpc/beacon/committees_test.go index e8289c7d41..59edf704a6 100644 --- a/beacon-chain/rpc/beacon/committees_test.go +++ b/beacon-chain/rpc/beacon/committees_test.go @@ -9,7 +9,6 @@ import ( "github.com/gogo/protobuf/proto" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" dbTest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state" @@ -24,7 +23,7 @@ import ( ) func TestServer_ListBeaconCommittees_CurrentEpoch(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) helpers.ClearCache() numValidators := 128 @@ -37,7 +36,7 @@ func TestServer_ListBeaconCommittees_CurrentEpoch(t *testing.T) { bs := &Server{ HeadFetcher: m, GenesisTimeFetcher: m, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } b := testutil.NewBeaconBlock() require.NoError(t, db.SaveBlock(ctx, b)) @@ -71,7 +70,7 @@ func TestServer_ListBeaconCommittees_PreviousEpoch(t *testing.T) { params.UseMainnetConfig() ctx := context.Background() - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) helpers.ClearCache() numValidators := 128 @@ -98,7 +97,7 @@ func TestServer_ListBeaconCommittees_PreviousEpoch(t *testing.T) { bs := &Server{ HeadFetcher: m, GenesisTimeFetcher: m, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } activeIndices, err := helpers.ActiveValidatorIndices(headState, 1) @@ -138,7 +137,7 @@ func TestServer_ListBeaconCommittees_PreviousEpoch(t *testing.T) { func TestRetrieveCommitteesForRoot(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) helpers.ClearCache() ctx := context.Background() @@ -151,7 +150,7 @@ func TestRetrieveCommitteesForRoot(t *testing.T) { bs := &Server{ HeadFetcher: m, GenesisTimeFetcher: m, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } b := testutil.NewBeaconBlock() require.NoError(t, db.SaveBlock(ctx, b)) diff --git a/beacon-chain/rpc/beacon/validators_test.go b/beacon-chain/rpc/beacon/validators_test.go index 29127a8bc6..ee11acc2ec 100644 --- a/beacon-chain/rpc/beacon/validators_test.go +++ b/beacon-chain/rpc/beacon/validators_test.go @@ -14,7 +14,6 @@ import ( ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" "github.com/prysmaticlabs/go-bitfield" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" "github.com/prysmaticlabs/prysm/beacon-chain/db" @@ -33,7 +32,7 @@ import ( ) func TestServer_GetValidatorActiveSetChanges_CannotRequestFutureEpoch(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() st := testutil.NewBeaconState() require.NoError(t, st.SetSlot(0)) @@ -58,7 +57,7 @@ func TestServer_GetValidatorActiveSetChanges_CannotRequestFutureEpoch(t *testing } func TestServer_ListValidatorBalances_CannotRequestFutureEpoch(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() st := testutil.NewBeaconState() @@ -84,14 +83,14 @@ func TestServer_ListValidatorBalances_CannotRequestFutureEpoch(t *testing.T) { } func TestServer_ListValidatorBalances_NoResults(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() st := testutil.NewBeaconState() require.NoError(t, st.SetSlot(0)) bs := &Server{ GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } headState := testutil.NewBeaconState() @@ -122,7 +121,7 @@ func TestServer_ListValidatorBalances_NoResults(t *testing.T) { } func TestServer_ListValidatorBalances_DefaultResponse_NoArchive(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() numItems := 100 @@ -154,7 +153,7 @@ func TestServer_ListValidatorBalances_DefaultResponse_NoArchive(t *testing.T) { require.NoError(t, db.SaveState(ctx, st, gRoot)) bs := &Server{ GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), HeadFetcher: &mock.ChainService{ State: st, }, @@ -170,7 +169,7 @@ func TestServer_ListValidatorBalances_DefaultResponse_NoArchive(t *testing.T) { } func TestServer_ListValidatorBalances_PaginationOutOfRange(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() _, _, headState := setupValidators(t, db, 100) @@ -182,7 +181,7 @@ func TestServer_ListValidatorBalances_PaginationOutOfRange(t *testing.T) { bs := &Server{ GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), HeadFetcher: &mock.ChainService{ State: headState, }, @@ -218,7 +217,7 @@ func pubKey(i uint64) []byte { } func TestServer_ListValidatorBalances_Pagination_Default(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() _, _, headState := setupValidators(t, db, 100) @@ -230,7 +229,7 @@ func TestServer_ListValidatorBalances_Pagination_Default(t *testing.T) { bs := &Server{ GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), HeadFetcher: &mock.ChainService{ State: headState, }, @@ -300,7 +299,7 @@ func TestServer_ListValidatorBalances_Pagination_Default(t *testing.T) { } func TestServer_ListValidatorBalances_Pagination_CustomPageSizes(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := 1000 @@ -313,7 +312,7 @@ func TestServer_ListValidatorBalances_Pagination_CustomPageSizes(t *testing.T) { bs := &Server{ GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), HeadFetcher: &mock.ChainService{ State: headState, }, @@ -368,7 +367,7 @@ func TestServer_ListValidatorBalances_Pagination_CustomPageSizes(t *testing.T) { } func TestServer_ListValidatorBalances_ResponseOutOfBound(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() count := 10 @@ -381,7 +380,7 @@ func TestServer_ListValidatorBalances_ResponseOutOfBound(t *testing.T) { bs := &Server{ GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), HeadFetcher: &mock.ChainService{ State: headState, }, @@ -393,7 +392,7 @@ func TestServer_ListValidatorBalances_ResponseOutOfBound(t *testing.T) { } func TestServer_ListValidatorBalances_OutOfRange(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() _, _, headState := setupValidators(t, db, 1) @@ -405,7 +404,7 @@ func TestServer_ListValidatorBalances_OutOfRange(t *testing.T) { bs := &Server{ GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), HeadFetcher: &mock.ChainService{ State: headState, }, @@ -418,7 +417,7 @@ func TestServer_ListValidatorBalances_OutOfRange(t *testing.T) { } func TestServer_ListValidators_CannotRequestFutureEpoch(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() st := testutil.NewBeaconState() @@ -447,7 +446,7 @@ func TestServer_ListValidators_CannotRequestFutureEpoch(t *testing.T) { } func TestServer_ListValidators_NoResults(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() st := testutil.NewBeaconState() @@ -464,7 +463,7 @@ func TestServer_ListValidators_NoResults(t *testing.T) { HeadFetcher: &mock.ChainService{ State: st, }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } wanted := ðpb.Validators{ ValidatorList: make([]*ethpb.Validators_ValidatorContainer, 0), @@ -487,7 +486,7 @@ func TestServer_ListValidators_NoResults(t *testing.T) { func TestServer_ListValidators_OnlyActiveValidators(t *testing.T) { ctx := context.Background() - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) count := 100 balances := make([]uint64, count) validators := make([]*ethpb.Validator, count) @@ -530,7 +529,7 @@ func TestServer_ListValidators_OnlyActiveValidators(t *testing.T) { // We are in epoch 0. Genesis: time.Now(), }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } b := testutil.NewBeaconBlock() @@ -549,7 +548,7 @@ func TestServer_ListValidators_OnlyActiveValidators(t *testing.T) { func TestServer_ListValidators_InactiveInTheMiddle(t *testing.T) { ctx := context.Background() - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) count := 100 balances := make([]uint64, count) validators := make([]*ethpb.Validator, count) @@ -597,7 +596,7 @@ func TestServer_ListValidators_InactiveInTheMiddle(t *testing.T) { // We are in epoch 0. Genesis: time.Now(), }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } b := testutil.NewBeaconBlock() @@ -617,7 +616,7 @@ func TestServer_ListValidators_InactiveInTheMiddle(t *testing.T) { } func TestServer_ListValidators_NoPagination(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) validators, _, headState := setupValidators(t, db, 100) want := make([]*ethpb.Validators_ValidatorContainer, len(validators)) @@ -641,7 +640,7 @@ func TestServer_ListValidators_NoPagination(t *testing.T) { Epoch: 0, }, }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } received, err := bs.ListValidators(context.Background(), ðpb.ListValidatorsRequest{}) @@ -650,7 +649,7 @@ func TestServer_ListValidators_NoPagination(t *testing.T) { } func TestServer_ListValidators_StategenNotUsed(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) validators, _, headState := setupValidators(t, db, 100) want := make([]*ethpb.Validators_ValidatorContainer, len(validators)) @@ -677,7 +676,7 @@ func TestServer_ListValidators_StategenNotUsed(t *testing.T) { } func TestServer_ListValidators_IndicesPubKeys(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) validators, _, headState := setupValidators(t, db, 100) indicesWanted := []uint64{2, 7, 11, 17} @@ -707,7 +706,7 @@ func TestServer_ListValidators_IndicesPubKeys(t *testing.T) { // We are in epoch 0. Genesis: time.Now(), }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } pubKeysWanted := make([][]byte, len(pubkeyIndicesWanted)) @@ -724,7 +723,7 @@ func TestServer_ListValidators_IndicesPubKeys(t *testing.T) { } func TestServer_ListValidators_Pagination(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) count := 100 _, _, headState := setupValidators(t, db, count) @@ -743,7 +742,7 @@ func TestServer_ListValidators_Pagination(t *testing.T) { // We are in epoch 0. Genesis: time.Now(), }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } tests := []struct { @@ -862,7 +861,7 @@ func TestServer_ListValidators_Pagination(t *testing.T) { } func TestServer_ListValidators_PaginationOutOfRange(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) count := 1 validators, _, headState := setupValidators(t, db, count) @@ -880,7 +879,7 @@ func TestServer_ListValidators_PaginationOutOfRange(t *testing.T) { // We are in epoch 0. Genesis: time.Now(), }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } req := ðpb.ListValidatorsRequest{PageToken: strconv.Itoa(1), PageSize: 100} @@ -900,7 +899,7 @@ func TestServer_ListValidators_ExceedsMaxPageSize(t *testing.T) { } func TestServer_ListValidators_DefaultPageSize(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) validators, _, headState := setupValidators(t, db, 1000) want := make([]*ethpb.Validators_ValidatorContainer, len(validators)) @@ -924,7 +923,7 @@ func TestServer_ListValidators_DefaultPageSize(t *testing.T) { // We are in epoch 0. Genesis: time.Now(), }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } req := ðpb.ListValidatorsRequest{} @@ -937,7 +936,7 @@ func TestServer_ListValidators_DefaultPageSize(t *testing.T) { } func TestServer_ListValidators_FromOldEpoch(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() numEpochs := 30 @@ -975,7 +974,7 @@ func TestServer_ListValidators_FromOldEpoch(t *testing.T) { // We are in epoch 30 Genesis: time.Now().Add(time.Duration(-1*int64(30*secondsPerEpoch)) * time.Second), }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } req := ðpb.ListValidatorsRequest{ @@ -1000,7 +999,7 @@ func TestServer_ListValidators_FromOldEpoch(t *testing.T) { func TestServer_ListValidators_ProcessHeadStateSlots(t *testing.T) { params.UseMinimalConfig() - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() headSlot := uint64(32) @@ -1042,7 +1041,7 @@ func TestServer_ListValidators_ProcessHeadStateSlots(t *testing.T) { GenesisTimeFetcher: &mock.ChainService{ Genesis: time.Now().Add(time.Duration(-1*int64(secondsPerEpoch)) * time.Second), }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } req := ðpb.ListValidatorsRequest{ @@ -1139,7 +1138,7 @@ func TestServer_GetValidator(t *testing.T) { } func TestServer_GetValidatorActiveSetChanges(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() validators := make([]*ethpb.Validator, 8) @@ -1193,7 +1192,7 @@ func TestServer_GetValidatorActiveSetChanges(t *testing.T) { FinalizedCheckPoint: ðpb.Checkpoint{Epoch: 0, Root: make([]byte, 32)}, }, GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } res, err := bs.GetValidatorActiveSetChanges(ctx, ðpb.GetValidatorActiveSetChangesRequest{ QueryFilter: ðpb.GetValidatorActiveSetChangesRequest_Genesis{Genesis: true}, @@ -1384,7 +1383,7 @@ func TestServer_GetValidatorQueue_PendingExit(t *testing.T) { } func TestServer_GetValidatorParticipation_CannotRequestFutureEpoch(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() headState := testutil.NewBeaconState() @@ -1395,7 +1394,7 @@ func TestServer_GetValidatorParticipation_CannotRequestFutureEpoch(t *testing.T) State: headState, }, GenesisTimeFetcher: &mock.ChainService{}, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } wanted := "Cannot retrieve information about an epoch" @@ -1411,7 +1410,7 @@ func TestServer_GetValidatorParticipation_CannotRequestFutureEpoch(t *testing.T) } func TestServer_GetValidatorParticipation_UnknownState(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() headState := testutil.NewBeaconState() @@ -1426,7 +1425,7 @@ func TestServer_GetValidatorParticipation_UnknownState(t *testing.T) { GenesisTimeFetcher: &mock.ChainService{ Genesis: time.Now().Add(time.Duration(-1*int64(slots)) * time.Second), }, - StateGen: stategen.New(db, cache.NewStateSummaryCache()), + StateGen: stategen.New(db), } wanted := "Could not get state: unknown state" @@ -1442,7 +1441,7 @@ func TestServer_GetValidatorParticipation_UnknownState(t *testing.T) { } func TestServer_GetValidatorParticipation_CurrentAndPrevEpoch(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() validatorCount := uint64(100) @@ -1492,7 +1491,7 @@ func TestServer_GetValidatorParticipation_CurrentAndPrevEpoch(t *testing.T) { bs := &Server{ BeaconDB: db, HeadFetcher: m, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), GenesisTimeFetcher: &mock.ChainService{ Genesis: timeutils.Now().Add(time.Duration(-1*int64(params.BeaconConfig().SlotsPerEpoch*params.BeaconConfig().SecondsPerSlot)) * time.Second), }, @@ -1749,7 +1748,7 @@ func TestGetValidatorPerformance_IndicesPubkeys(t *testing.T) { func BenchmarkListValidatorBalances(b *testing.B) { b.StopTimer() - db, _ := dbTest.SetupDB(b) + db := dbTest.SetupDB(b) ctx := context.Background() count := 1000 @@ -1799,7 +1798,7 @@ func TestServer_GetIndividualVotes_ValidatorsDontExist(t *testing.T) { params.UseMinimalConfig() defer params.UseMainnetConfig() - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() validators := uint64(64) @@ -1813,7 +1812,7 @@ func TestServer_GetIndividualVotes_ValidatorsDontExist(t *testing.T) { require.NoError(t, db.SaveBlock(ctx, b)) gRoot, err := b.Block.HashTreeRoot() require.NoError(t, err) - gen := stategen.New(db, sc) + gen := stategen.New(db) require.NoError(t, gen.SaveState(ctx, gRoot, beaconState)) require.NoError(t, db.SaveState(ctx, beaconState, gRoot)) require.NoError(t, db.SaveGenesisBlockRoot(ctx, gRoot)) @@ -1871,7 +1870,7 @@ func TestServer_GetIndividualVotes_Working(t *testing.T) { params.UseMinimalConfig() defer params.UseMainnetConfig() - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() validators := uint64(64) @@ -1908,7 +1907,7 @@ func TestServer_GetIndividualVotes_Working(t *testing.T) { require.NoError(t, db.SaveBlock(ctx, b)) gRoot, err := b.Block.HashTreeRoot() require.NoError(t, err) - gen := stategen.New(db, sc) + gen := stategen.New(db) require.NoError(t, gen.SaveState(ctx, gRoot, beaconState)) require.NoError(t, db.SaveState(ctx, beaconState, gRoot)) require.NoError(t, db.SaveGenesisBlockRoot(ctx, gRoot)) diff --git a/beacon-chain/rpc/beaconv1/blocks_test.go b/beacon-chain/rpc/beaconv1/blocks_test.go index 66b2e2658f..8785005e76 100644 --- a/beacon-chain/rpc/beaconv1/blocks_test.go +++ b/beacon-chain/rpc/beaconv1/blocks_test.go @@ -63,7 +63,7 @@ func fillDBTestBlocks(ctx context.Context, t *testing.T, db db.Database) (*ethpb } func TestServer_GetBlockHeader(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() genBlk, blkContainers := fillDBTestBlocks(ctx, t, db) @@ -160,7 +160,7 @@ func TestServer_GetBlockHeader(t *testing.T) { } func TestServer_ListBlockHeaders(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() _, blkContainers := fillDBTestBlocks(ctx, t, db) @@ -241,7 +241,7 @@ func TestServer_ListBlockHeaders(t *testing.T) { } func TestServer_ProposeBlock_OK(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() params.SetupTestConfigCleanup(t) params.OverrideBeaconConfig(params.MainnetConfig()) @@ -281,7 +281,7 @@ func TestServer_ProposeBlock_OK(t *testing.T) { } func TestServer_GetBlock(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() _, blkContainers := fillDBTestBlocks(ctx, t, db) @@ -394,7 +394,7 @@ func TestServer_GetBlock(t *testing.T) { } func TestServer_GetBlockRoot(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() genBlk, blkContainers := fillDBTestBlocks(ctx, t, db) @@ -497,7 +497,7 @@ func TestServer_GetBlockRoot(t *testing.T) { } func TestServer_ListBlockAttestations(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() _, blkContainers := fillDBTestBlocks(ctx, t, db) diff --git a/beacon-chain/rpc/debug/block_test.go b/beacon-chain/rpc/debug/block_test.go index 1bd4e7eb1a..8ee4b2de71 100644 --- a/beacon-chain/rpc/debug/block_test.go +++ b/beacon-chain/rpc/debug/block_test.go @@ -19,7 +19,7 @@ import ( ) func TestServer_GetBlock(t *testing.T) { - db, _ := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() b := testutil.NewBeaconBlock() @@ -48,11 +48,11 @@ func TestServer_GetBlock(t *testing.T) { } func TestServer_GetAttestationInclusionSlot(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() bs := &Server{ BeaconDB: db, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), GenesisTimeFetcher: &mock.ChainService{Genesis: time.Now().Add(time.Duration(-1*int64( 2*params.BeaconConfig().SlotsPerEpoch*params.BeaconConfig().SecondsPerSlot)) * time.Second)}, } diff --git a/beacon-chain/rpc/debug/state_test.go b/beacon-chain/rpc/debug/state_test.go index d7ff0e2e44..00a4aff8d1 100644 --- a/beacon-chain/rpc/debug/state_test.go +++ b/beacon-chain/rpc/debug/state_test.go @@ -15,7 +15,7 @@ import ( func TestServer_GetBeaconState(t *testing.T) { - db, sc := dbTest.SetupDB(t) + db := dbTest.SetupDB(t) ctx := context.Background() st := testutil.NewBeaconState() slot := uint64(100) @@ -25,7 +25,7 @@ func TestServer_GetBeaconState(t *testing.T) { require.NoError(t, db.SaveBlock(ctx, b)) gRoot, err := b.Block.HashTreeRoot() require.NoError(t, err) - gen := stategen.New(db, sc) + gen := stategen.New(db) require.NoError(t, gen.SaveState(ctx, gRoot, st)) require.NoError(t, db.SaveState(ctx, st, gRoot)) bs := &Server{ diff --git a/beacon-chain/rpc/node/server_test.go b/beacon-chain/rpc/node/server_test.go index f58d66f41d..4c168d0a37 100644 --- a/beacon-chain/rpc/node/server_test.go +++ b/beacon-chain/rpc/node/server_test.go @@ -40,7 +40,7 @@ func TestNodeServer_GetSyncStatus(t *testing.T) { } func TestNodeServer_GetGenesis(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() addr := common.Address{1, 2, 3} require.NoError(t, db.SaveDepositContractAddress(ctx, addr)) diff --git a/beacon-chain/rpc/validator/aggregator_test.go b/beacon-chain/rpc/validator/aggregator_test.go index 9a1bc1a700..d2193f7e22 100644 --- a/beacon-chain/rpc/validator/aggregator_test.go +++ b/beacon-chain/rpc/validator/aggregator_test.go @@ -27,7 +27,7 @@ import ( ) func TestSubmitAggregateAndProof_Syncing(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() s := &beaconstate.BeaconState{} @@ -45,7 +45,7 @@ func TestSubmitAggregateAndProof_Syncing(t *testing.T) { } func TestSubmitAggregateAndProof_CantFindValidatorIndex(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() s, err := beaconstate.InitializeFromProto(&pbp2p.BeaconState{ @@ -69,7 +69,7 @@ func TestSubmitAggregateAndProof_CantFindValidatorIndex(t *testing.T) { } func TestSubmitAggregateAndProof_IsAggregatorAndNoAtts(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() s, err := beaconstate.InitializeFromProto(&pbp2p.BeaconState{ @@ -106,7 +106,7 @@ func TestSubmitAggregateAndProof_UnaggregateOk(t *testing.T) { c.TargetAggregatorsPerCommittee = 16 params.OverrideBeaconConfig(c) - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() beaconState, privKeys := testutil.DeterministicGenesisState(t, 32) @@ -142,7 +142,7 @@ func TestSubmitAggregateAndProof_AggregateOk(t *testing.T) { c.TargetAggregatorsPerCommittee = 16 params.OverrideBeaconConfig(c) - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() beaconState, privKeys := testutil.DeterministicGenesisState(t, 32) @@ -189,7 +189,7 @@ func TestSubmitAggregateAndProof_AggregateNotOk(t *testing.T) { c.TargetAggregatorsPerCommittee = 16 params.OverrideBeaconConfig(c) - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() beaconState, _ := testutil.DeterministicGenesisState(t, 32) @@ -306,7 +306,7 @@ func TestSubmitAggregateAndProof_PreferOwnAttestation(t *testing.T) { c.TargetAggregatorsPerCommittee = 16 params.OverrideBeaconConfig(c) - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() // This test creates 3 attestations. 0 and 2 have the same attestation data and can be @@ -363,7 +363,7 @@ func TestSubmitAggregateAndProof_SelectsMostBitsWhenOwnAttestationNotPresent(t * c.TargetAggregatorsPerCommittee = 16 params.OverrideBeaconConfig(c) - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() // This test creates two distinct attestations, neither of which contain the validator's index, diff --git a/beacon-chain/rpc/validator/assignments_test.go b/beacon-chain/rpc/validator/assignments_test.go index 387e53d869..9ab6e1d024 100644 --- a/beacon-chain/rpc/validator/assignments_test.go +++ b/beacon-chain/rpc/validator/assignments_test.go @@ -31,7 +31,7 @@ func pubKey(i uint64) []byte { } func TestGetDuties_OK(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) genesis := testutil.NewBeaconBlock() depChainStart := params.BeaconConfig().MinGenesisActiveValidatorCount @@ -102,7 +102,7 @@ func TestGetDuties_OK(t *testing.T) { } func TestGetDuties_CurrentEpoch_ShouldNotFail(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) genesis := testutil.NewBeaconBlock() depChainStart := params.BeaconConfig().MinGenesisActiveValidatorCount @@ -145,7 +145,7 @@ func TestGetDuties_CurrentEpoch_ShouldNotFail(t *testing.T) { } func TestGetDuties_MultipleKeys_OK(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) genesis := testutil.NewBeaconBlock() depChainStart := uint64(64) @@ -209,7 +209,7 @@ func TestStreamDuties_SyncNotReady(t *testing.T) { } func TestStreamDuties_OK(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) genesis := testutil.NewBeaconBlock() depChainStart := params.BeaconConfig().MinGenesisActiveValidatorCount @@ -268,7 +268,7 @@ func TestStreamDuties_OK(t *testing.T) { } func TestStreamDuties_OK_ChainReorg(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) genesis := testutil.NewBeaconBlock() depChainStart := params.BeaconConfig().MinGenesisActiveValidatorCount @@ -359,7 +359,7 @@ func TestAssignValidatorToSubnet(t *testing.T) { } func BenchmarkCommitteeAssignment(b *testing.B) { - db, _ := dbutil.SetupDB(b) + db := dbutil.SetupDB(b) genesis := testutil.NewBeaconBlock() depChainStart := uint64(8192 * 2) diff --git a/beacon-chain/rpc/validator/attester_test.go b/beacon-chain/rpc/validator/attester_test.go index c4ec67dfd5..cfb3a09db7 100644 --- a/beacon-chain/rpc/validator/attester_test.go +++ b/beacon-chain/rpc/validator/attester_test.go @@ -29,7 +29,7 @@ import ( ) func TestProposeAttestation_OK(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() attesterServer := &Server{ @@ -79,7 +79,7 @@ func TestProposeAttestation_OK(t *testing.T) { } func TestProposeAttestation_IncorrectSignature(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) attesterServer := &Server{ HeadFetcher: &mock.ChainService{}, @@ -105,7 +105,7 @@ func TestProposeAttestation_IncorrectSignature(t *testing.T) { func TestGetAttestationData_OK(t *testing.T) { ctx := context.Background() - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) block := testutil.NewBeaconBlock() block.Block.Slot = 3*params.BeaconConfig().SlotsPerEpoch + 1 @@ -198,7 +198,7 @@ func TestAttestationDataAtSlot_HandlesFarAwayJustifiedEpoch(t *testing.T) { // // More background: https://github.com/prysmaticlabs/prysm/issues/2153 // This test breaks if it doesnt use mainnet config - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() // Ensure HistoricalRootsLimit matches scenario params.SetupTestConfigCleanup(t) @@ -354,7 +354,7 @@ func TestServer_GetAttestationData_HeadStateSlotGreaterThanRequestSlot(t *testin // attestation is referencing be less than or equal to the attestation data slot. // See: https://github.com/prysmaticlabs/prysm/issues/5164 ctx := context.Background() - db, sc := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) slot := 3*params.BeaconConfig().SlotsPerEpoch + 1 block := testutil.NewBeaconBlock() @@ -411,7 +411,7 @@ func TestServer_GetAttestationData_HeadStateSlotGreaterThanRequestSlot(t *testin FinalizationFetcher: &mock.ChainService{CurrentJustifiedCheckPoint: beaconState.CurrentJustifiedCheckpoint()}, GenesisTimeFetcher: &mock.ChainService{Genesis: time.Now().Add(time.Duration(-1*int64(slot*params.BeaconConfig().SecondsPerSlot)) * time.Second)}, StateNotifier: chainService.StateNotifier(), - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } require.NoError(t, db.SaveState(ctx, beaconState, blockRoot)) require.NoError(t, db.SaveBlock(ctx, block)) @@ -444,7 +444,7 @@ func TestServer_GetAttestationData_HeadStateSlotGreaterThanRequestSlot(t *testin func TestGetAttestationData_SucceedsInFirstEpoch(t *testing.T) { ctx := context.Background() - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) slot := uint64(5) block := testutil.NewBeaconBlock() @@ -519,7 +519,7 @@ func TestGetAttestationData_SucceedsInFirstEpoch(t *testing.T) { } func TestServer_SubscribeCommitteeSubnets_NoSlots(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) attesterServer := &Server{ HeadFetcher: &mock.ChainService{}, @@ -539,7 +539,7 @@ func TestServer_SubscribeCommitteeSubnets_NoSlots(t *testing.T) { } func TestServer_SubscribeCommitteeSubnets_DifferentLengthSlots(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) // fixed seed s := rand.NewSource(10) @@ -576,7 +576,7 @@ func TestServer_SubscribeCommitteeSubnets_DifferentLengthSlots(t *testing.T) { } func TestServer_SubscribeCommitteeSubnets_MultipleSlots(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) // fixed seed s := rand.NewSource(10) randGen := rand.New(s) diff --git a/beacon-chain/rpc/validator/exit_test.go b/beacon-chain/rpc/validator/exit_test.go index 72edcae5a9..c5077b42c6 100644 --- a/beacon-chain/rpc/validator/exit_test.go +++ b/beacon-chain/rpc/validator/exit_test.go @@ -23,7 +23,7 @@ import ( ) func TestProposeExit_Notification(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() testutil.ResetCache() deposits, keys, err := testutil.DeterministicDepositsAndKeys(params.BeaconConfig().MinGenesisActiveValidatorCount) @@ -93,7 +93,7 @@ func TestProposeExit_Notification(t *testing.T) { } func TestProposeExit_NoPanic(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() testutil.ResetCache() deposits, keys, err := testutil.DeterministicDepositsAndKeys(params.BeaconConfig().MinGenesisActiveValidatorCount) diff --git a/beacon-chain/rpc/validator/proposer_test.go b/beacon-chain/rpc/validator/proposer_test.go index 202536910f..7db239ef3f 100644 --- a/beacon-chain/rpc/validator/proposer_test.go +++ b/beacon-chain/rpc/validator/proposer_test.go @@ -38,7 +38,7 @@ import ( ) func TestProposer_GetBlock_OK(t *testing.T) { - db, sc := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() testutil.ResetCache() @@ -69,7 +69,7 @@ func TestProposer_GetBlock_OK(t *testing.T) { AttPool: attestations.NewPool(), SlashingsPool: slashings.NewPool(), ExitPool: voluntaryexits.NewPool(), - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } randaoReveal, err := testutil.RandaoReveal(beaconState, 0, privKeys) @@ -121,7 +121,7 @@ func TestProposer_GetBlock_OK(t *testing.T) { } func TestProposer_GetBlock_AddsUnaggregatedAtts(t *testing.T) { - db, sc := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() params.SetupTestConfigCleanup(t) @@ -151,7 +151,7 @@ func TestProposer_GetBlock_AddsUnaggregatedAtts(t *testing.T) { SlashingsPool: slashings.NewPool(), AttPool: attestations.NewPool(), ExitPool: voluntaryexits.NewPool(), - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } // Generate a bunch of random attestations at slot. These would be considered double votes, but @@ -208,7 +208,7 @@ func TestProposer_GetBlock_AddsUnaggregatedAtts(t *testing.T) { } func TestProposer_ProposeBlock_OK(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() params.SetupTestConfigCleanup(t) params.OverrideBeaconConfig(params.MainnetConfig()) @@ -244,7 +244,7 @@ func TestProposer_ProposeBlock_OK(t *testing.T) { } func TestProposer_ComputeStateRoot_OK(t *testing.T) { - db, sc := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() params.SetupTestConfigCleanup(t) @@ -267,7 +267,7 @@ func TestProposer_ComputeStateRoot_OK(t *testing.T) { ChainStartFetcher: &mockPOW.POWChain{}, Eth1InfoFetcher: &mockPOW.POWChain{}, Eth1BlockFetcher: &mockPOW.POWChain{}, - StateGen: stategen.New(db, sc), + StateGen: stategen.New(db), } req := testutil.NewBeaconBlock() req.Block.ProposerIndex = 21 @@ -1190,7 +1190,7 @@ func TestProposer_Eth1Data_SmallerDepositCount(t *testing.T) { } func TestProposer_Eth1Data_MockEnabled(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) // If a mock eth1 data votes is specified, we use the following for the // eth1data we provide to every proposer based on https://github.com/ethereum/eth2.0-pm/issues/62: // @@ -1790,7 +1790,7 @@ func TestProposer_Eth1Data_MajorityVote(t *testing.T) { } func TestProposer_FilterAttestation(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() params.SetupTestConfigCleanup(t) diff --git a/beacon-chain/rpc/validator/server_test.go b/beacon-chain/rpc/validator/server_test.go index f15b28f0dd..edb8c40dd6 100644 --- a/beacon-chain/rpc/validator/server_test.go +++ b/beacon-chain/rpc/validator/server_test.go @@ -31,7 +31,7 @@ import ( ) func TestValidatorIndex_OK(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() st := testutil.NewBeaconState() require.NoError(t, db.SaveState(ctx, st.Copy(), [32]byte{})) @@ -54,7 +54,7 @@ func TestValidatorIndex_OK(t *testing.T) { } func TestWaitForActivation_ContextClosed(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() beaconState, err := stateTrie.InitializeFromProto(&pbp2p.BeaconState{ @@ -102,7 +102,7 @@ func TestWaitForActivation_ContextClosed(t *testing.T) { } func TestWaitForActivation_ValidatorOriginallyExists(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) // This test breaks if it doesnt use mainnet config params.SetupTestConfigCleanup(t) params.OverrideBeaconConfig(params.MainnetConfig()) @@ -195,7 +195,7 @@ func TestWaitForActivation_ValidatorOriginallyExists(t *testing.T) { } func TestWaitForActivation_MultipleStatuses(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) priv1, err := bls.RandKey() require.NoError(t, err) @@ -285,7 +285,7 @@ func TestWaitForActivation_MultipleStatuses(t *testing.T) { } func TestWaitForChainStart_ContextClosed(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx, cancel := context.WithCancel(context.Background()) chainService := &mockChain.ChainService{} Server := &Server{ @@ -313,7 +313,7 @@ func TestWaitForChainStart_ContextClosed(t *testing.T) { } func TestWaitForChainStart_AlreadyStarted(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() headBlockRoot := [32]byte{0x01, 0x02} trie := testutil.NewBeaconState() @@ -348,7 +348,7 @@ func TestWaitForChainStart_AlreadyStarted(t *testing.T) { } func TestWaitForChainStart_HeadStateDoesNotExist(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) genesisValidatorRoot := params.BeaconConfig().ZeroHash // Set head state to nil @@ -387,7 +387,7 @@ func TestWaitForChainStart_HeadStateDoesNotExist(t *testing.T) { } func TestWaitForChainStart_NotStartedThenLogFired(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) hook := logTest.NewGlobal() genesisValidatorsRoot := bytesutil.ToBytes32([]byte("validators")) diff --git a/beacon-chain/rpc/validator/status_test.go b/beacon-chain/rpc/validator/status_test.go index 2a29fa3d53..e4032ae5f7 100644 --- a/beacon-chain/rpc/validator/status_test.go +++ b/beacon-chain/rpc/validator/status_test.go @@ -24,7 +24,7 @@ import ( ) func TestValidatorStatus_DepositedEth1(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() deposits, _, err := testutil.DeterministicDepositsAndKeys(1) require.NoError(t, err, "Could not generate deposits and keys") @@ -62,7 +62,7 @@ func TestValidatorStatus_DepositedEth1(t *testing.T) { } func TestValidatorStatus_Deposited(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() pubKey1 := pubKey(1) @@ -114,7 +114,7 @@ func TestValidatorStatus_Deposited(t *testing.T) { } func TestValidatorStatus_PartiallyDeposited(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() pubKey1 := pubKey(1) @@ -166,7 +166,7 @@ func TestValidatorStatus_PartiallyDeposited(t *testing.T) { } func TestValidatorStatus_Pending(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() pubKey := pubKey(1) @@ -229,7 +229,7 @@ func TestValidatorStatus_Pending(t *testing.T) { } func TestValidatorStatus_Active(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) // This test breaks if it doesnt use mainnet config params.SetupTestConfigCleanup(t) params.OverrideBeaconConfig(params.MainnetConfig()) @@ -303,7 +303,7 @@ func TestValidatorStatus_Active(t *testing.T) { } func TestValidatorStatus_Exiting(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() pubKey := pubKey(1) @@ -366,7 +366,7 @@ func TestValidatorStatus_Exiting(t *testing.T) { } func TestValidatorStatus_Slashing(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() pubKey := pubKey(1) @@ -426,7 +426,7 @@ func TestValidatorStatus_Slashing(t *testing.T) { } func TestValidatorStatus_Exited(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() pubKey := pubKey(1) @@ -490,7 +490,7 @@ func TestValidatorStatus_Exited(t *testing.T) { } func TestValidatorStatus_UnknownStatus(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) pubKey := pubKey(1) depositCache, err := depositcache.New() require.NoError(t, err) @@ -516,7 +516,7 @@ func TestValidatorStatus_UnknownStatus(t *testing.T) { } func TestActivationStatus_OK(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() deposits, _, err := testutil.DeterministicDepositsAndKeys(4) @@ -606,7 +606,7 @@ func TestActivationStatus_OK(t *testing.T) { } func TestValidatorStatus_CorrectActivationQueue(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() pbKey := pubKey(5) @@ -709,7 +709,7 @@ func TestValidatorStatus_CorrectActivationQueue(t *testing.T) { } func TestMultipleValidatorStatus_Pubkeys(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() deposits, _, err := testutil.DeterministicDepositsAndKeys(6) @@ -820,7 +820,7 @@ func TestMultipleValidatorStatus_Pubkeys(t *testing.T) { } func TestMultipleValidatorStatus_Indices(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) slot := uint64(10000) epoch := helpers.SlotToEpoch(slot) pubKeys := [][]byte{pubKey(1), pubKey(2), pubKey(3), pubKey(4), pubKey(5), pubKey(6), pubKey(7)} @@ -918,7 +918,7 @@ func TestMultipleValidatorStatus_Indices(t *testing.T) { } func TestValidatorStatus_Invalid(t *testing.T) { - db, _ := dbutil.SetupDB(t) + db := dbutil.SetupDB(t) ctx := context.Background() deposits, _, err := testutil.DeterministicDepositsAndKeys(1) require.NoError(t, err, "Could not generate deposits and keys") diff --git a/beacon-chain/state/stategen/BUILD.bazel b/beacon-chain/state/stategen/BUILD.bazel index f02d17d0e8..e364352ab7 100644 --- a/beacon-chain/state/stategen/BUILD.bazel +++ b/beacon-chain/state/stategen/BUILD.bazel @@ -51,7 +51,6 @@ go_test( ], embed = [":go_default_library"], deps = [ - "//beacon-chain/cache:go_default_library", "//beacon-chain/core/blocks:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/testing:go_default_library", diff --git a/beacon-chain/state/stategen/getter.go b/beacon-chain/state/stategen/getter.go index 053372d7c3..09b1fd6094 100644 --- a/beacon-chain/state/stategen/getter.go +++ b/beacon-chain/state/stategen/getter.go @@ -108,28 +108,17 @@ func (s *State) StateBySlot(ctx context.Context, slot uint64) (*state.BeaconStat return s.loadStateBySlot(ctx, slot) } -// StateSummaryExists returns true if the corresponding state summary of the input block root either -// exists in the DB or in the cache. -func (s *State) StateSummaryExists(ctx context.Context, blockRoot [32]byte) bool { - return s.stateSummaryCache.Has(blockRoot) || s.beaconDB.HasStateSummary(ctx, blockRoot) -} - // This returns the state summary object of a given block root, it first checks the cache // then checks the DB. An error is returned if state summary object is nil. func (s *State) stateSummary(ctx context.Context, blockRoot [32]byte) (*pb.StateSummary, error) { var summary *pb.StateSummary var err error - if s.stateSummaryCache == nil { - return nil, errors.New("nil stateSummaryCache") - } - if s.stateSummaryCache.Has(blockRoot) { - summary = s.stateSummaryCache.Get(blockRoot) - } else { - summary, err = s.beaconDB.StateSummary(ctx, blockRoot) - if err != nil { - return nil, err - } + + summary, err = s.beaconDB.StateSummary(ctx, blockRoot) + if err != nil { + return nil, err } + if summary == nil { return s.RecoverStateSummary(ctx, blockRoot) } diff --git a/beacon-chain/state/stategen/getter_test.go b/beacon-chain/state/stategen/getter_test.go index b3aae7cc8f..de47970a29 100644 --- a/beacon-chain/state/stategen/getter_test.go +++ b/beacon-chain/state/stategen/getter_test.go @@ -6,7 +6,6 @@ import ( "github.com/gogo/protobuf/proto" "github.com/prysmaticlabs/go-ssz" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" @@ -19,9 +18,9 @@ import ( func TestStateByRoot_ColdState(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) service.finalizedInfo.slot = 2 service.slotsPerArchivedPoint = 1 @@ -44,9 +43,9 @@ func TestStateByRoot_ColdState(t *testing.T) { func TestStateByRoot_HotStateUsingEpochBoundaryCacheNoReplay(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) require.NoError(t, beaconState.SetSlot(10)) @@ -62,9 +61,9 @@ func TestStateByRoot_HotStateUsingEpochBoundaryCacheNoReplay(t *testing.T) { func TestStateByRoot_HotStateUsingEpochBoundaryCacheWithReplay(t *testing.T) { ctx := context.Background() - db, ssc := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, ssc) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) blk := testutil.NewBeaconBlock() @@ -87,9 +86,9 @@ func TestStateByRoot_HotStateUsingEpochBoundaryCacheWithReplay(t *testing.T) { func TestStateByRoot_HotStateCached(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) r := [32]byte{'A'} @@ -105,9 +104,9 @@ func TestStateByRoot_HotStateCached(t *testing.T) { func TestStateByRootInitialSync_UseEpochStateCache(t *testing.T) { ctx := context.Background() - db, ssc := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, ssc) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) targetSlot := uint64(10) @@ -123,9 +122,9 @@ func TestStateByRootInitialSync_UseEpochStateCache(t *testing.T) { func TestStateByRootInitialSync_UseCache(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) r := [32]byte{'A'} @@ -144,8 +143,8 @@ func TestStateByRootInitialSync_UseCache(t *testing.T) { func TestStateByRootInitialSync_CanProcessUpTo(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) blk := testutil.NewBeaconBlock() @@ -168,9 +167,9 @@ func TestStateByRootInitialSync_CanProcessUpTo(t *testing.T) { func TestStateBySlot_ColdState(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) service.slotsPerArchivedPoint = params.BeaconConfig().SlotsPerEpoch * 2 service.finalizedInfo.slot = service.slotsPerArchivedPoint + 1 @@ -203,9 +202,9 @@ func TestStateBySlot_ColdState(t *testing.T) { func TestStateBySlot_HotStateDB(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) genesisStateRoot, err := beaconState.HashTreeRoot(ctx) @@ -223,41 +222,10 @@ func TestStateBySlot_HotStateDB(t *testing.T) { assert.Equal(t, slot, loadedState.Slot(), "Did not correctly load state") } -func TestStateSummary_CanGetFromCacheOrDB(t *testing.T) { - ctx := context.Background() - db, _ := testDB.SetupDB(t) - - service := New(db, cache.NewStateSummaryCache()) - - r := [32]byte{'a'} - summary := &pb.StateSummary{Slot: 100} - _, err := service.stateSummary(ctx, r) - require.ErrorContains(t, "could not find block in DB", err) - - service.stateSummaryCache.Put(r, summary) - got, err := service.stateSummary(ctx, r) - require.NoError(t, err) - if !proto.Equal(got, summary) { - t.Error("Did not get wanted summary") - } - - r = [32]byte{'b'} - summary = &pb.StateSummary{Root: r[:], Slot: 101} - _, err = service.stateSummary(ctx, r) - require.ErrorContains(t, "could not find block in DB", err) - - require.NoError(t, service.beaconDB.SaveStateSummary(ctx, summary)) - got, err = service.stateSummary(ctx, r) - require.NoError(t, err) - if !proto.Equal(got, summary) { - t.Error("Did not get wanted summary") - } -} - func TestLoadeStateByRoot_Cached(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) r := [32]byte{'A'} @@ -274,8 +242,8 @@ func TestLoadeStateByRoot_Cached(t *testing.T) { func TestLoadeStateByRoot_FinalizedState(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) genesisStateRoot, err := beaconState.HashTreeRoot(ctx) @@ -301,8 +269,8 @@ func TestLoadeStateByRoot_FinalizedState(t *testing.T) { func TestLoadeStateByRoot_EpochBoundaryStateCanProcess(t *testing.T) { ctx := context.Background() - db, ssc := testDB.SetupDB(t) - service := New(db, ssc) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) gBlk := testutil.NewBeaconBlock() @@ -327,8 +295,8 @@ func TestLoadeStateByRoot_EpochBoundaryStateCanProcess(t *testing.T) { func TestLoadeStateByRoot_FromDBBoundaryCase(t *testing.T) { ctx := context.Background() - db, ssc := testDB.SetupDB(t) - service := New(db, ssc) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) gBlk := testutil.NewBeaconBlock() @@ -353,8 +321,8 @@ func TestLoadeStateByRoot_FromDBBoundaryCase(t *testing.T) { func TestLoadeStateBySlot_CanAdvanceSlotUsingDB(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) b := testutil.NewBeaconBlock() require.NoError(t, service.beaconDB.SaveBlock(ctx, b)) @@ -371,8 +339,8 @@ func TestLoadeStateBySlot_CanAdvanceSlotUsingDB(t *testing.T) { func TestLoadeStateBySlot_CanReplayBlock(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) genesis, keys := testutil.DeterministicGenesisState(t, 64) genesisBlockRoot := bytesutil.ToBytes32(nil) require.NoError(t, db.SaveState(ctx, genesis, genesisBlockRoot)) @@ -399,8 +367,8 @@ func TestLoadeStateBySlot_CanReplayBlock(t *testing.T) { func TestLastAncestorState_CanGetUsingDB(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) b0 := testutil.NewBeaconBlock() b0.Block.ParentRoot = bytesutil.PadTo([]byte{'a'}, 32) @@ -438,8 +406,8 @@ func TestLastAncestorState_CanGetUsingDB(t *testing.T) { func TestLastAncestorState_CanGetUsingCache(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) b0 := testutil.NewBeaconBlock() b0.Block.ParentRoot = bytesutil.PadTo([]byte{'a'}, 32) @@ -477,8 +445,8 @@ func TestLastAncestorState_CanGetUsingCache(t *testing.T) { func TestState_HasState(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) s := testutil.NewBeaconState() rHit1 := [32]byte{1} rHit2 := [32]byte{2} @@ -508,8 +476,8 @@ func TestState_HasState(t *testing.T) { func TestState_HasStateInCache(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) s := testutil.NewBeaconState() rHit1 := [32]byte{1} rHit2 := [32]byte{2} diff --git a/beacon-chain/state/stategen/migrate.go b/beacon-chain/state/stategen/migrate.go index 08824a6a75..7c76234e1c 100644 --- a/beacon-chain/state/stategen/migrate.go +++ b/beacon-chain/state/stategen/migrate.go @@ -106,11 +106,6 @@ func (s *State) MigrateToCold(ctx context.Context, fRoot [32]byte) error { } } - // Migrate all state summary objects from state summary cache to DB. - if err := s.SaveStateSummariesToDB(ctx); err != nil { - return err - } - // Update finalized info in memory. fInfo, ok, err := s.epochBoundaryStateCache.getByRoot(fRoot) if err != nil { diff --git a/beacon-chain/state/stategen/migrate_test.go b/beacon-chain/state/stategen/migrate_test.go index 893b1c009c..9d4d244b71 100644 --- a/beacon-chain/state/stategen/migrate_test.go +++ b/beacon-chain/state/stategen/migrate_test.go @@ -4,7 +4,6 @@ import ( "context" "testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" @@ -16,8 +15,8 @@ import ( func TestMigrateToCold_CanSaveFinalizedInfo(t *testing.T) { ctx := context.Background() - db, c := testDB.SetupDB(t) - service := New(db, c) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) b := testutil.NewBeaconBlock() b.Block.Slot = 1 @@ -34,9 +33,9 @@ func TestMigrateToCold_CanSaveFinalizedInfo(t *testing.T) { func TestMigrateToCold_HappyPath(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) service.slotsPerArchivedPoint = 1 beaconState, _ := testutil.DeterministicGenesisState(t, 32) stateSlot := uint64(1) @@ -64,9 +63,9 @@ func TestMigrateToCold_HappyPath(t *testing.T) { func TestMigrateToCold_RegeneratePath(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) service.slotsPerArchivedPoint = 1 beaconState, pks := testutil.DeterministicGenesisState(t, 32) genesisStateRoot, err := beaconState.HashTreeRoot(ctx) @@ -114,9 +113,9 @@ func TestMigrateToCold_RegeneratePath(t *testing.T) { func TestMigrateToCold_StateExistsInDB(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) service.slotsPerArchivedPoint = 1 beaconState, _ := testutil.DeterministicGenesisState(t, 32) stateSlot := uint64(1) diff --git a/beacon-chain/state/stategen/replay_test.go b/beacon-chain/state/stategen/replay_test.go index 539b05c6d7..affa697e76 100644 --- a/beacon-chain/state/stategen/replay_test.go +++ b/beacon-chain/state/stategen/replay_test.go @@ -6,7 +6,6 @@ import ( "github.com/gogo/protobuf/proto" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/db" testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" @@ -19,7 +18,7 @@ import ( ) func TestReplayBlocks_AllSkipSlots(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) beaconState, _ := testutil.DeterministicGenesisState(t, 32) genesisBlock := blocks.NewGenesisBlock([]byte{}) @@ -40,7 +39,7 @@ func TestReplayBlocks_AllSkipSlots(t *testing.T) { require.NoError(t, beaconState.SetCurrentJustifiedCheckpoint(cp)) require.NoError(t, beaconState.SetCurrentEpochAttestations([]*pb.PendingAttestation{})) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) targetSlot := params.BeaconConfig().SlotsPerEpoch - 1 newState, err := service.ReplayBlocks(context.Background(), beaconState, []*ethpb.SignedBeaconBlock{}, targetSlot) require.NoError(t, err) @@ -48,7 +47,7 @@ func TestReplayBlocks_AllSkipSlots(t *testing.T) { } func TestReplayBlocks_SameSlot(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) beaconState, _ := testutil.DeterministicGenesisState(t, 32) genesisBlock := blocks.NewGenesisBlock([]byte{}) @@ -69,7 +68,7 @@ func TestReplayBlocks_SameSlot(t *testing.T) { require.NoError(t, beaconState.SetCurrentJustifiedCheckpoint(cp)) require.NoError(t, beaconState.SetCurrentEpochAttestations([]*pb.PendingAttestation{})) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) targetSlot := beaconState.Slot() newState, err := service.ReplayBlocks(context.Background(), beaconState, []*ethpb.SignedBeaconBlock{}, targetSlot) require.NoError(t, err) @@ -77,7 +76,7 @@ func TestReplayBlocks_SameSlot(t *testing.T) { } func TestReplayBlocks_LowerSlotBlock(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) beaconState, _ := testutil.DeterministicGenesisState(t, 32) require.NoError(t, beaconState.SetSlot(1)) @@ -99,7 +98,7 @@ func TestReplayBlocks_LowerSlotBlock(t *testing.T) { require.NoError(t, beaconState.SetCurrentJustifiedCheckpoint(cp)) require.NoError(t, beaconState.SetCurrentEpochAttestations([]*pb.PendingAttestation{})) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) targetSlot := beaconState.Slot() b := testutil.NewBeaconBlock() b.Block.Slot = beaconState.Slot() - 1 @@ -109,7 +108,7 @@ func TestReplayBlocks_LowerSlotBlock(t *testing.T) { } func TestLoadBlocks_FirstBranch(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -138,7 +137,7 @@ func TestLoadBlocks_FirstBranch(t *testing.T) { } func TestLoadBlocks_SecondBranch(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -165,7 +164,7 @@ func TestLoadBlocks_SecondBranch(t *testing.T) { } func TestLoadBlocks_ThirdBranch(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -194,7 +193,7 @@ func TestLoadBlocks_ThirdBranch(t *testing.T) { } func TestLoadBlocks_SameSlots(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -221,7 +220,7 @@ func TestLoadBlocks_SameSlots(t *testing.T) { } func TestLoadBlocks_SameEndSlots(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -247,7 +246,7 @@ func TestLoadBlocks_SameEndSlots(t *testing.T) { } func TestLoadBlocks_SameEndSlotsWith2blocks(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -272,7 +271,7 @@ func TestLoadBlocks_SameEndSlotsWith2blocks(t *testing.T) { } func TestLoadBlocks_BadStart(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -285,7 +284,7 @@ func TestLoadBlocks_BadStart(t *testing.T) { } func TestLastSavedBlock_Genesis(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -305,7 +304,7 @@ func TestLastSavedBlock_Genesis(t *testing.T) { } func TestLastSavedBlock_CanGet(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -331,7 +330,7 @@ func TestLastSavedBlock_CanGet(t *testing.T) { } func TestLastSavedBlock_NoSavedBlock(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -346,7 +345,7 @@ func TestLastSavedBlock_NoSavedBlock(t *testing.T) { } func TestLastSavedState_Genesis(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -367,7 +366,7 @@ func TestLastSavedState_Genesis(t *testing.T) { } func TestLastSavedState_CanGet(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -398,7 +397,7 @@ func TestLastSavedState_CanGet(t *testing.T) { } func TestLastSavedState_NoSavedBlockState(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, @@ -718,7 +717,7 @@ func tree4(db db.Database, genesisRoot []byte) ([][32]byte, []*ethpb.SignedBeaco } func TestLoadFinalizedBlocks(t *testing.T) { - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) ctx := context.Background() s := &State{ beaconDB: db, diff --git a/beacon-chain/state/stategen/service.go b/beacon-chain/state/stategen/service.go index a88bdf64c0..3dd6e971c3 100644 --- a/beacon-chain/state/stategen/service.go +++ b/beacon-chain/state/stategen/service.go @@ -25,7 +25,6 @@ type State struct { slotsPerArchivedPoint uint64 hotStateCache *cache.HotStateCache finalizedInfo *finalizedInfo - stateSummaryCache *cache.StateSummaryCache epochBoundaryStateCache *epochBoundaryState saveHotStateDB *saveHotStateDbConfig } @@ -50,13 +49,12 @@ type finalizedInfo struct { } // New returns a new state management object. -func New(db db.NoHeadAccessDatabase, stateSummaryCache *cache.StateSummaryCache) *State { +func New(db db.NoHeadAccessDatabase) *State { return &State{ beaconDB: db, hotStateCache: cache.NewHotStateCache(), finalizedInfo: &finalizedInfo{slot: 0, root: params.BeaconConfig().ZeroHash}, slotsPerArchivedPoint: params.BeaconConfig().SlotsPerArchivedPoint, - stateSummaryCache: stateSummaryCache, epochBoundaryStateCache: newBoundaryStateCache(), saveHotStateDB: &saveHotStateDbConfig{ duration: defaultHotStateDBInterval, diff --git a/beacon-chain/state/stategen/service_test.go b/beacon-chain/state/stategen/service_test.go index eceb5f5242..8670ba604f 100644 --- a/beacon-chain/state/stategen/service_test.go +++ b/beacon-chain/state/stategen/service_test.go @@ -6,7 +6,6 @@ import ( "github.com/gogo/protobuf/proto" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/shared/params" "github.com/prysmaticlabs/prysm/shared/testutil" @@ -16,9 +15,9 @@ import ( func TestResume(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) b := testutil.NewBeaconBlock() require.NoError(t, service.beaconDB.SaveBlock(ctx, b)) root, err := b.Block.HashTreeRoot() diff --git a/beacon-chain/state/stategen/setter.go b/beacon-chain/state/stategen/setter.go index 086ed603cc..0177d60083 100644 --- a/beacon-chain/state/stategen/setter.go +++ b/beacon-chain/state/stategen/setter.go @@ -4,7 +4,6 @@ import ( "context" "math" - ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" "github.com/prysmaticlabs/prysm/beacon-chain/state" pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" @@ -43,27 +42,6 @@ func (s *State) ForceCheckpoint(ctx context.Context, root []byte) error { return s.beaconDB.SaveState(ctx, fs, root32) } -// SaveStateSummariesToDB saves cached state summaries to DB. -func (s *State) SaveStateSummariesToDB(ctx context.Context) error { - ctx, span := trace.StartSpan(ctx, "stateGen.SaveStateSummariesToDB") - defer span.End() - if err := s.beaconDB.SaveStateSummaries(ctx, s.stateSummaryCache.GetAll()); err != nil { - return err - } - s.stateSummaryCache.Clear() - return nil -} - -// SaveStateSummary saves the relevant state summary for a block and its corresponding state slot in the -// state summary cache. -func (s *State) SaveStateSummary(_ context.Context, blk *ethpb.SignedBeaconBlock, blockRoot [32]byte) { - // Save State summary - s.stateSummaryCache.Put(blockRoot, &pb.StateSummary{ - Slot: blk.Block.Slot, - Root: blockRoot[:], - }) -} - // This saves a post beacon state. On the epoch boundary, // it saves a full state. On an intermediate slot, it saves a back pointer to the // nearest epoch boundary state. @@ -101,11 +79,13 @@ func (s *State) saveStateByRoot(ctx context.Context, blockRoot [32]byte, state * } } - // On an intermediate slots, save the hot state summary. - s.stateSummaryCache.Put(blockRoot, &pb.StateSummary{ + // On an intermediate slots, save state summary. + if err := s.beaconDB.SaveStateSummary(ctx, &pb.StateSummary{ Slot: state.Slot(), Root: blockRoot[:], - }) + }); err != nil { + return err + } // Store the copied state in the hot state cache. s.hotStateCache.Put(blockRoot, state) diff --git a/beacon-chain/state/stategen/setter_test.go b/beacon-chain/state/stategen/setter_test.go index 5740708111..3638257e38 100644 --- a/beacon-chain/state/stategen/setter_test.go +++ b/beacon-chain/state/stategen/setter_test.go @@ -4,9 +4,7 @@ import ( "context" "testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" - pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" "github.com/prysmaticlabs/prysm/shared/params" "github.com/prysmaticlabs/prysm/shared/testutil" "github.com/prysmaticlabs/prysm/shared/testutil/assert" @@ -16,9 +14,9 @@ import ( func TestSaveState_HotStateCanBeSaved(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) service.slotsPerArchivedPoint = 1 beaconState, _ := testutil.DeterministicGenesisState(t, 32) // This goes to hot section, verify it can save on epoch boundary. @@ -31,15 +29,15 @@ func TestSaveState_HotStateCanBeSaved(t *testing.T) { _, ok, err := service.epochBoundaryStateCache.getByRoot(r) require.NoError(t, err) assert.Equal(t, true, ok, "Should have saved the state") - assert.Equal(t, true, service.stateSummaryCache.Has(r), "Should have saved the state summary") + assert.Equal(t, true, service.beaconDB.HasStateSummary(ctx, r), "Should have saved the state summary") } func TestSaveState_HotStateCached(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) + db := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + service := New(db) service.slotsPerArchivedPoint = 1 beaconState, _ := testutil.DeterministicGenesisState(t, 32) require.NoError(t, beaconState.SetSlot(params.BeaconConfig().SlotsPerEpoch)) @@ -57,9 +55,9 @@ func TestSaveState_HotStateCached(t *testing.T) { func TestState_ForceCheckpoint_SavesStateToDatabase(t *testing.T) { ctx := context.Background() - db, ssc := testDB.SetupDB(t) + db := testDB.SetupDB(t) - svc := New(db, ssc) + svc := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) require.NoError(t, beaconState.SetSlot(params.BeaconConfig().SlotsPerEpoch)) @@ -77,8 +75,8 @@ func TestState_ForceCheckpoint_SavesStateToDatabase(t *testing.T) { func TestSaveState_AlreadyHas(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) require.NoError(t, beaconState.SetSlot(params.BeaconConfig().SlotsPerEpoch)) @@ -96,8 +94,8 @@ func TestSaveState_AlreadyHas(t *testing.T) { func TestSaveState_CanSaveOnEpochBoundary(t *testing.T) { ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) require.NoError(t, beaconState.SetSlot(params.BeaconConfig().SlotsPerEpoch)) @@ -109,7 +107,7 @@ func TestSaveState_CanSaveOnEpochBoundary(t *testing.T) { _, ok, err := service.epochBoundaryStateCache.getByRoot(r) require.NoError(t, err) require.Equal(t, true, ok, "Did not save epoch boundary state") - assert.Equal(t, true, service.stateSummaryCache.Has(r), "Should have saved the state summary") + assert.Equal(t, true, service.beaconDB.HasStateSummary(ctx, r), "Should have saved the state summary") // Should have not been saved in DB. require.Equal(t, false, db.HasState(ctx, r)) } @@ -117,8 +115,8 @@ func TestSaveState_CanSaveOnEpochBoundary(t *testing.T) { func TestSaveState_NoSaveNotEpochBoundary(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) beaconState, _ := testutil.DeterministicGenesisState(t, 32) require.NoError(t, beaconState.SetSlot(params.BeaconConfig().SlotsPerEpoch-1)) @@ -132,7 +130,7 @@ func TestSaveState_NoSaveNotEpochBoundary(t *testing.T) { // Should only save state summary. assert.Equal(t, false, service.beaconDB.HasState(ctx, r), "Should not have saved the state") - assert.Equal(t, true, service.stateSummaryCache.Has(r), "Should have saved the state summary") + assert.Equal(t, true, service.beaconDB.HasStateSummary(ctx, r), "Should have saved the state summary") require.LogsDoNotContain(t, hook, "Saved full state on epoch boundary") // Should have not been saved in DB. require.Equal(t, false, db.HasState(ctx, r)) @@ -141,8 +139,8 @@ func TestSaveState_NoSaveNotEpochBoundary(t *testing.T) { func TestSaveState_CanSaveHotStateToDB(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) service.EnableSaveHotStateToDB(ctx) beaconState, _ := testutil.DeterministicGenesisState(t, 32) require.NoError(t, beaconState.SetSlot(defaultHotStateDBInterval)) @@ -158,8 +156,8 @@ func TestSaveState_CanSaveHotStateToDB(t *testing.T) { func TestEnableSaveHotStateToDB_Enabled(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) service.EnableSaveHotStateToDB(ctx) require.LogsContain(t, hook, "Entering mode to save hot states in DB") @@ -169,8 +167,8 @@ func TestEnableSaveHotStateToDB_Enabled(t *testing.T) { func TestEnableSaveHotStateToDB_AlreadyEnabled(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) service.saveHotStateDB.enabled = true service.EnableSaveHotStateToDB(ctx) require.LogsDoNotContain(t, hook, "Entering mode to save hot states in DB") @@ -180,8 +178,8 @@ func TestEnableSaveHotStateToDB_AlreadyEnabled(t *testing.T) { func TestEnableSaveHotStateToDB_Disabled(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) service.saveHotStateDB.enabled = true b := testutil.NewBeaconBlock() require.NoError(t, db.SaveBlock(ctx, b)) @@ -197,25 +195,9 @@ func TestEnableSaveHotStateToDB_Disabled(t *testing.T) { func TestEnableSaveHotStateToDB_AlreadyDisabled(t *testing.T) { hook := logTest.NewGlobal() ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) + db := testDB.SetupDB(t) + service := New(db) require.NoError(t, service.DisableSaveHotStateToDB(ctx)) require.LogsDoNotContain(t, hook, "Exiting mode to save hot states in DB") require.Equal(t, false, service.saveHotStateDB.enabled) } - -func TestState_SaveStateSummariesToDB(t *testing.T) { - ctx := context.Background() - db, _ := testDB.SetupDB(t) - service := New(db, cache.NewStateSummaryCache()) - - r := [32]byte{'a'} - s := &pb.StateSummary{Root: r[:], Slot: 1} - service.stateSummaryCache.Put(r, s) - require.Equal(t, false, service.beaconDB.HasStateSummary(ctx, r)) - require.Equal(t, true, service.stateSummaryCache.Has(r)) - - require.NoError(t, service.SaveStateSummariesToDB(ctx)) - require.Equal(t, true, service.beaconDB.HasStateSummary(ctx, r)) - require.Equal(t, false, service.stateSummaryCache.Has(r)) -} diff --git a/beacon-chain/sync/BUILD.bazel b/beacon-chain/sync/BUILD.bazel index 64cb127187..371168dafb 100644 --- a/beacon-chain/sync/BUILD.bazel +++ b/beacon-chain/sync/BUILD.bazel @@ -135,12 +135,12 @@ go_test( shard_count = 4, deps = [ "//beacon-chain/blockchain/testing:go_default_library", - "//beacon-chain/cache:go_default_library", "//beacon-chain/core/feed:go_default_library", "//beacon-chain/core/feed/state:go_default_library", "//beacon-chain/core/helpers:go_default_library", "//beacon-chain/core/state:go_default_library", "//beacon-chain/db:go_default_library", + "//beacon-chain/db/kv:go_default_library", "//beacon-chain/db/testing:go_default_library", "//beacon-chain/flags:go_default_library", "//beacon-chain/operations/attestations:go_default_library", diff --git a/beacon-chain/sync/fuzz_exports.go b/beacon-chain/sync/fuzz_exports.go index 3df96d5fa8..891680242d 100644 --- a/beacon-chain/sync/fuzz_exports.go +++ b/beacon-chain/sync/fuzz_exports.go @@ -33,7 +33,6 @@ func NewRegularSyncFuzz(cfg *Config) *Service { blkRootToPendingAtts: make(map[[32]byte][]*ethpb.SignedAggregateAttestationAndProof), stateNotifier: cfg.StateNotifier, blockNotifier: cfg.BlockNotifier, - stateSummaryCache: cfg.StateSummaryCache, stateGen: cfg.StateGen, rateLimiter: rLimiter, } diff --git a/beacon-chain/sync/initial-sync/blocks_fetcher_test.go b/beacon-chain/sync/initial-sync/blocks_fetcher_test.go index ac3e02da1c..091a5a8c95 100644 --- a/beacon-chain/sync/initial-sync/blocks_fetcher_test.go +++ b/beacon-chain/sync/initial-sync/blocks_fetcher_test.go @@ -257,7 +257,7 @@ func TestBlocksFetcher_RoundRobin(t *testing.T) { t.Run(tt.name, func(t *testing.T) { cache.initializeRootCache(tt.expectedBlockSlots, t) - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) p := p2pt.NewTestP2P(t) connectPeers(t, p, tt.peers, p.Peers()) diff --git a/beacon-chain/sync/initial-sync/blocks_fetcher_utils_test.go b/beacon-chain/sync/initial-sync/blocks_fetcher_utils_test.go index 67714a0998..5c4ce5f920 100644 --- a/beacon-chain/sync/initial-sync/blocks_fetcher_utils_test.go +++ b/beacon-chain/sync/initial-sync/blocks_fetcher_utils_test.go @@ -145,7 +145,7 @@ func TestBlocksFetcher_findFork(t *testing.T) { // - C'- D'- E'- F'- G' // Allow fetcher to proceed till E, then connect peer having alternative branch. // Test that G' slot can be reached i.e. fetcher can track back and explore alternative paths. - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) p2p := p2pt.NewTestP2P(t) // Chain contains blocks from 8 epochs (from 0 to 7, 256 is the start slot of epoch8). @@ -298,7 +298,7 @@ func TestBlocksFetcher_findFork(t *testing.T) { } func TestBlocksFetcher_findForkWithPeer(t *testing.T) { - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) p1 := p2pt.NewTestP2P(t) knownBlocks := extendBlockSequence(t, []*eth.SignedBeaconBlock{}, 128) @@ -404,7 +404,7 @@ func TestBlocksFetcher_findForkWithPeer(t *testing.T) { } func TestBlocksFetcher_findAncestor(t *testing.T) { - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) p2p := p2pt.NewTestP2P(t) knownBlocks := extendBlockSequence(t, []*eth.SignedBeaconBlock{}, 128) diff --git a/beacon-chain/sync/initial-sync/blocks_queue_test.go b/beacon-chain/sync/initial-sync/blocks_queue_test.go index 277cac0375..3c388f41f8 100644 --- a/beacon-chain/sync/initial-sync/blocks_queue_test.go +++ b/beacon-chain/sync/initial-sync/blocks_queue_test.go @@ -1029,7 +1029,7 @@ func TestBlocksQueue_stuckInUnfavourableFork(t *testing.T) { }) defer resetCfg() - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) p2p := p2pt.NewTestP2P(t) // The chain1 contains 250 blocks and is a dead end. @@ -1231,7 +1231,7 @@ func TestBlocksQueue_stuckWhenHeadIsSetToOrphanedBlock(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) p2p := p2pt.NewTestP2P(t) chain := extendBlockSequence(t, []*eth.SignedBeaconBlock{}, 128) diff --git a/beacon-chain/sync/initial-sync/initial_sync_test.go b/beacon-chain/sync/initial-sync/initial_sync_test.go index 57c7f54186..920b8bebe5 100644 --- a/beacon-chain/sync/initial-sync/initial_sync_test.go +++ b/beacon-chain/sync/initial-sync/initial_sync_test.go @@ -73,7 +73,7 @@ func TestMain(m *testing.M) { func initializeTestServices(t *testing.T, blocks []uint64, peers []*peerData) (*mock.ChainService, *p2pt.TestP2P, db.Database) { cache.initializeRootCache(blocks, t) - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) p := p2pt.NewTestP2P(t) connectPeers(t, p, peers, p.Peers()) diff --git a/beacon-chain/sync/initial-sync/round_robin_test.go b/beacon-chain/sync/initial-sync/round_robin_test.go index d229509893..e43c9cec50 100644 --- a/beacon-chain/sync/initial-sync/round_robin_test.go +++ b/beacon-chain/sync/initial-sync/round_robin_test.go @@ -273,7 +273,7 @@ func TestService_roundRobinSync(t *testing.T) { cache.initializeRootCache(tt.availableBlockSlots, t) p := p2pt.NewTestP2P(t) - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) connectPeers(t, p, tt.peers, p.Peers()) cache.RLock() @@ -318,7 +318,7 @@ func TestService_roundRobinSync(t *testing.T) { } func TestService_processBlock(t *testing.T) { - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) genesisBlk := testutil.NewBeaconBlock() genesisBlkRoot, err := genesisBlk.Block.HashTreeRoot() require.NoError(t, err) @@ -378,7 +378,7 @@ func TestService_processBlock(t *testing.T) { } func TestService_processBlockBatch(t *testing.T) { - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) genesisBlk := testutil.NewBeaconBlock() genesisBlkRoot, err := genesisBlk.Block.HashTreeRoot() require.NoError(t, err) @@ -478,7 +478,7 @@ func TestService_blockProviderScoring(t *testing.T) { cache.initializeRootCache(makeSequence(1, 640), t) p := p2pt.NewTestP2P(t) - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) peerData := []*peerData{ { @@ -569,7 +569,7 @@ func TestService_syncToFinalizedEpoch(t *testing.T) { cache.initializeRootCache(makeSequence(1, 640), t) p := p2pt.NewTestP2P(t) - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) cache.RLock() genesisRoot := cache.rootCache[0] cache.RUnlock() diff --git a/beacon-chain/sync/initial-sync/service_test.go b/beacon-chain/sync/initial-sync/service_test.go index bbd6fee801..b3ce8cad59 100644 --- a/beacon-chain/sync/initial-sync/service_test.go +++ b/beacon-chain/sync/initial-sync/service_test.go @@ -367,7 +367,7 @@ func TestService_Resync(t *testing.T) { {blocks: makeSequence(1, 160), finalizedEpoch: 5, headSlot: 160}, }, p.Peers()) cache.initializeRootCache(makeSequence(1, 160), t) - beaconDB, _ := dbtest.SetupDB(t) + beaconDB := dbtest.SetupDB(t) err := beaconDB.SaveBlock(context.Background(), testutil.NewBeaconBlock()) require.NoError(t, err) cache.RLock() diff --git a/beacon-chain/sync/pending_attestations_queue.go b/beacon-chain/sync/pending_attestations_queue.go index 06037ae14c..3c82234fcc 100644 --- a/beacon-chain/sync/pending_attestations_queue.go +++ b/beacon-chain/sync/pending_attestations_queue.go @@ -59,9 +59,8 @@ func (s *Service) processPendingAtts(ctx context.Context) error { s.pendingAttsLock.RLock() attestations := s.blkRootToPendingAtts[bRoot] s.pendingAttsLock.RUnlock() - // Has the pending attestation's missing block arrived and the node processed block yet? - hasStateSummary := s.db.HasStateSummary(ctx, bRoot) || s.stateSummaryCache.Has(bRoot) - if s.db.HasBlock(ctx, bRoot) && (s.db.HasState(ctx, bRoot) || hasStateSummary) { + // has the pending attestation's missing block arrived and the node processed block yet? + if s.db.HasBlock(ctx, bRoot) && (s.db.HasState(ctx, bRoot) || s.db.HasStateSummary(ctx, bRoot)) { for _, signedAtt := range attestations { att := signedAtt.Message // The pending attestations can arrive in both aggregated and unaggregated forms, diff --git a/beacon-chain/sync/pending_attestations_queue_test.go b/beacon-chain/sync/pending_attestations_queue_test.go index f3438500fd..70042cd8f8 100644 --- a/beacon-chain/sync/pending_attestations_queue_test.go +++ b/beacon-chain/sync/pending_attestations_queue_test.go @@ -11,7 +11,6 @@ import ( ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" "github.com/prysmaticlabs/go-bitfield" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" @@ -32,7 +31,7 @@ import ( func TestProcessPendingAtts_NoBlockRequestBlock(t *testing.T) { hook := logTest.NewGlobal() - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) @@ -46,7 +45,6 @@ func TestProcessPendingAtts_NoBlockRequestBlock(t *testing.T) { db: db, chain: &mock.ChainService{Genesis: timeutils.Now(), FinalizedCheckPoint: ðpb.Checkpoint{}}, blkRootToPendingAtts: make(map[[32]byte][]*ethpb.SignedAggregateAttestationAndProof), - stateSummaryCache: cache.NewStateSummaryCache(), chainStarted: abool.New(), } @@ -58,7 +56,7 @@ func TestProcessPendingAtts_NoBlockRequestBlock(t *testing.T) { func TestProcessPendingAtts_HasBlockSaveUnAggregatedAtt(t *testing.T) { hook := logTest.NewGlobal() - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p1 := p2ptest.NewTestP2P(t) validators := uint64(256) testutil.ResetCache() @@ -119,7 +117,6 @@ func TestProcessPendingAtts_HasBlockSaveUnAggregatedAtt(t *testing.T) { }}, blkRootToPendingAtts: make(map[[32]byte][]*ethpb.SignedAggregateAttestationAndProof), attPool: attestations.NewPool(), - stateSummaryCache: cache.NewStateSummaryCache(), seenAttestationCache: c, } @@ -142,7 +139,7 @@ func TestProcessPendingAtts_HasBlockSaveUnAggregatedAtt(t *testing.T) { } func TestProcessPendingAtts_NoBroadcastWithBadSignature(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p1 := p2ptest.NewTestP2P(t) r := &Service{ @@ -151,7 +148,6 @@ func TestProcessPendingAtts_NoBroadcastWithBadSignature(t *testing.T) { chain: &mock.ChainService{Genesis: timeutils.Now(), FinalizedCheckPoint: ðpb.Checkpoint{Root: make([]byte, 32)}}, blkRootToPendingAtts: make(map[[32]byte][]*ethpb.SignedAggregateAttestationAndProof), attPool: attestations.NewPool(), - stateSummaryCache: cache.NewStateSummaryCache(), } priv, err := bls.RandKey() @@ -235,7 +231,6 @@ func TestProcessPendingAtts_NoBroadcastWithBadSignature(t *testing.T) { }}, blkRootToPendingAtts: make(map[[32]byte][]*ethpb.SignedAggregateAttestationAndProof), attPool: attestations.NewPool(), - stateSummaryCache: cache.NewStateSummaryCache(), seenAttestationCache: c, } @@ -247,7 +242,7 @@ func TestProcessPendingAtts_NoBroadcastWithBadSignature(t *testing.T) { func TestProcessPendingAtts_HasBlockSaveAggregatedAtt(t *testing.T) { hook := logTest.NewGlobal() - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p1 := p2ptest.NewTestP2P(t) validators := uint64(256) testutil.ResetCache() @@ -312,7 +307,6 @@ func TestProcessPendingAtts_HasBlockSaveAggregatedAtt(t *testing.T) { }}, blkRootToPendingAtts: make(map[[32]byte][]*ethpb.SignedAggregateAttestationAndProof), attPool: attestations.NewPool(), - stateSummaryCache: cache.NewStateSummaryCache(), seenAttestationCache: c, } diff --git a/beacon-chain/sync/pending_blocks_queue_test.go b/beacon-chain/sync/pending_blocks_queue_test.go index 7846cdd3c5..cb70395a0a 100644 --- a/beacon-chain/sync/pending_blocks_queue_test.go +++ b/beacon-chain/sync/pending_blocks_queue_test.go @@ -31,7 +31,7 @@ import ( // \- b3 // Test b1 was missing then received and we can process b0 -> b1 -> b2 func TestRegularSyncBeaconBlockSubscriber_ProcessPendingBlocks1(t *testing.T) { - db, stateSummaryCache := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p1 := p2ptest.NewTestP2P(t) r := &Service{ @@ -44,8 +44,7 @@ func TestRegularSyncBeaconBlockSubscriber_ProcessPendingBlocks1(t *testing.T) { }, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: stateSummaryCache, - stateGen: stategen.New(db, stateSummaryCache), + stateGen: stategen.New(db), } err := r.initCaches() require.NoError(t, err) @@ -92,7 +91,7 @@ func TestRegularSyncBeaconBlockSubscriber_ProcessPendingBlocks1(t *testing.T) { } func TestRegularSync_InsertDuplicateBlocks(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p1 := p2ptest.NewTestP2P(t) r := &Service{ @@ -141,7 +140,7 @@ func TestRegularSync_InsertDuplicateBlocks(t *testing.T) { // \- b3 - b4 // Test b2 and b3 were missed, after receiving them we can process 2 chains. func TestRegularSyncBeaconBlockSubscriber_ProcessPendingBlocks_2Chains(t *testing.T) { - db, stateSummaryCache := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) @@ -173,8 +172,7 @@ func TestRegularSyncBeaconBlockSubscriber_ProcessPendingBlocks_2Chains(t *testin }, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: stateSummaryCache, - stateGen: stategen.New(db, stateSummaryCache), + stateGen: stategen.New(db), } err := r.initCaches() require.NoError(t, err) @@ -247,7 +245,7 @@ func TestRegularSyncBeaconBlockSubscriber_ProcessPendingBlocks_2Chains(t *testin } func TestRegularSyncBeaconBlockSubscriber_PruneOldPendingBlocks(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) @@ -331,7 +329,7 @@ func TestService_sortedPendingSlots(t *testing.T) { } func TestService_BatchRootRequest(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) diff --git a/beacon-chain/sync/rpc_beacon_blocks_by_range_test.go b/beacon-chain/sync/rpc_beacon_blocks_by_range_test.go index a1b8679298..0b4ea791d1 100644 --- a/beacon-chain/sync/rpc_beacon_blocks_by_range_test.go +++ b/beacon-chain/sync/rpc_beacon_blocks_by_range_test.go @@ -33,7 +33,7 @@ func TestRPCBeaconBlocksByRange_RPCHandlerReturnsBlocks(t *testing.T) { p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") - d, _ := db.SetupDB(t) + d := db.SetupDB(t) req := &pb.BeaconBlocksByRangeRequest{ StartSlot: 100, @@ -88,7 +88,7 @@ func TestRPCBeaconBlocksByRange_ReturnCorrectNumberBack(t *testing.T) { p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") - d, _ := db.SetupDB(t) + d := db.SetupDB(t) req := &pb.BeaconBlocksByRangeRequest{ StartSlot: 0, @@ -153,7 +153,7 @@ func TestRPCBeaconBlocksByRange_RPCHandlerReturnsSortedBlocks(t *testing.T) { p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") - d, _ := db.SetupDB(t) + d := db.SetupDB(t) req := &pb.BeaconBlocksByRangeRequest{ StartSlot: 200, @@ -216,7 +216,7 @@ func TestRPCBeaconBlocksByRange_ReturnsGenesisBlock(t *testing.T) { p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") - d, _ := db.SetupDB(t) + d := db.SetupDB(t) req := &pb.BeaconBlocksByRangeRequest{ StartSlot: 0, @@ -272,7 +272,7 @@ func TestRPCBeaconBlocksByRange_ReturnsGenesisBlock(t *testing.T) { } func TestRPCBeaconBlocksByRange_RPCHandlerRateLimitOverflow(t *testing.T) { - d, _ := db.SetupDB(t) + d := db.SetupDB(t) saveBlocks := func(req *pb.BeaconBlocksByRangeRequest) { // Populate the database with blocks that would match the request. parentRoot := [32]byte{} @@ -527,7 +527,7 @@ func TestRPCBeaconBlocksByRange_validateRangeRequest(t *testing.T) { } func TestRPCBeaconBlocksByRange_EnforceResponseInvariants(t *testing.T) { - d, _ := db.SetupDB(t) + d := db.SetupDB(t) hook := logTest.NewGlobal() saveBlocks := func(req *pb.BeaconBlocksByRangeRequest) { // Populate the database with blocks that would match the request. @@ -737,7 +737,7 @@ func TestRPCBeaconBlocksByRange_FilterBlocks(t *testing.T) { t.Run("process normal range", func(t *testing.T) { p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) - d, _ := db.SetupDB(t) + d := db.SetupDB(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") @@ -768,7 +768,7 @@ func TestRPCBeaconBlocksByRange_FilterBlocks(t *testing.T) { t.Run("process non linear blocks", func(t *testing.T) { p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) - d, _ := db.SetupDB(t) + d := db.SetupDB(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") @@ -803,7 +803,7 @@ func TestRPCBeaconBlocksByRange_FilterBlocks(t *testing.T) { t.Run("process non linear blocks with 2nd bad batch", func(t *testing.T) { p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) - d, _ := db.SetupDB(t) + d := db.SetupDB(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") @@ -838,7 +838,7 @@ func TestRPCBeaconBlocksByRange_FilterBlocks(t *testing.T) { t.Run("only return finalized blocks", func(t *testing.T) { p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) - d, _ := db.SetupDB(t) + d := db.SetupDB(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") @@ -878,7 +878,7 @@ func TestRPCBeaconBlocksByRange_FilterBlocks(t *testing.T) { t.Run("reject duplicate and non canonical blocks", func(t *testing.T) { p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) - d, _ := db.SetupDB(t) + d := db.SetupDB(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") diff --git a/beacon-chain/sync/rpc_beacon_blocks_by_root_test.go b/beacon-chain/sync/rpc_beacon_blocks_by_root_test.go index b94b634c7b..2ccbe6c29e 100644 --- a/beacon-chain/sync/rpc_beacon_blocks_by_root_test.go +++ b/beacon-chain/sync/rpc_beacon_blocks_by_root_test.go @@ -32,7 +32,7 @@ func TestRecentBeaconBlocksRPCHandler_ReturnsBlocks(t *testing.T) { p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") - d, _ := db.SetupDB(t) + d := db.SetupDB(t) var blkRoots p2pTypes.BeaconBlockByRootsReq // Populate the database with blocks that would match the request. @@ -147,7 +147,7 @@ func TestRecentBeaconBlocksRPCHandler_HandleZeroBlocks(t *testing.T) { p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{p2p: p1, db: d, rateLimiter: newRateLimiter(p1)} pcl := protocol.ID("/testing") diff --git a/beacon-chain/sync/rpc_goodbye_test.go b/beacon-chain/sync/rpc_goodbye_test.go index 01be0e319d..75ce771a0d 100644 --- a/beacon-chain/sync/rpc_goodbye_test.go +++ b/beacon-chain/sync/rpc_goodbye_test.go @@ -24,7 +24,7 @@ func TestGoodByeRPCHandler_Disconnects_With_Peer(t *testing.T) { assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") // Set up a head state in the database with data we expect. - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{ db: d, p2p: p1, @@ -67,7 +67,7 @@ func TestGoodByeRPCHandler_BackOffPeer(t *testing.T) { assert.Equal(t, 2, len(p1.BHost.Network().Peers()), "Expected peers to be connected") // Set up a head state in the database with data we expect. - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{ db: d, p2p: p1, @@ -140,7 +140,7 @@ func TestSendGoodbye_SendsMessage(t *testing.T) { assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") // Set up a head state in the database with data we expect. - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{ db: d, p2p: p1, @@ -182,7 +182,7 @@ func TestSendGoodbye_DisconnectWithPeer(t *testing.T) { assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") // Set up a head state in the database with data we expect. - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{ db: d, p2p: p1, diff --git a/beacon-chain/sync/rpc_metadata_test.go b/beacon-chain/sync/rpc_metadata_test.go index f3a110d743..28cb129b94 100644 --- a/beacon-chain/sync/rpc_metadata_test.go +++ b/beacon-chain/sync/rpc_metadata_test.go @@ -32,7 +32,7 @@ func TestMetaDataRPCHandler_ReceivesMetadata(t *testing.T) { } // Set up a head state in the database with data we expect. - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{ db: d, p2p: p1, @@ -79,7 +79,7 @@ func TestMetadataRPCHandler_SendsMetadata(t *testing.T) { } // Set up a head state in the database with data we expect. - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{ db: d, p2p: p1, diff --git a/beacon-chain/sync/rpc_ping_test.go b/beacon-chain/sync/rpc_ping_test.go index 6af94b93ba..9d5e4b2fbb 100644 --- a/beacon-chain/sync/rpc_ping_test.go +++ b/beacon-chain/sync/rpc_ping_test.go @@ -35,7 +35,7 @@ func TestPingRPCHandler_ReceivesPing(t *testing.T) { } // Set up a head state in the database with data we expect. - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{ db: d, p2p: p1, @@ -90,7 +90,7 @@ func TestPingRPCHandler_SendsPing(t *testing.T) { } // Set up a head state in the database with data we expect. - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{ db: d, p2p: p1, @@ -151,7 +151,7 @@ func TestPingRPCHandler_BadSequenceNumber(t *testing.T) { } // Set up a head state in the database with data we expect. - d, _ := db.SetupDB(t) + d := db.SetupDB(t) r := &Service{ db: d, p2p: p1, diff --git a/beacon-chain/sync/rpc_status_test.go b/beacon-chain/sync/rpc_status_test.go index eaebdc071a..2b1ced1ebc 100644 --- a/beacon-chain/sync/rpc_status_test.go +++ b/beacon-chain/sync/rpc_status_test.go @@ -15,6 +15,7 @@ import ( ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core/state" + "github.com/prysmaticlabs/prysm/beacon-chain/db/kv" testingDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers" p2ptest "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" @@ -154,7 +155,7 @@ func TestStatusRPCHandler_ReturnsHelloMessage(t *testing.T) { p2 := p2ptest.NewTestP2P(t) p1.Connect(p2) assert.Equal(t, 1, len(p1.BHost.Network().Peers()), "Expected peers to be connected") - db, _ := testingDB.SetupDB(t) + db := testingDB.SetupDB(t) // Set up a head state with data we expect. head := testutil.NewBeaconBlock() @@ -240,7 +241,7 @@ func TestHandshakeHandlers_Roundtrip(t *testing.T) { // p2 disconnects and p1 should forget the handshake status. p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) - db, _ := testingDB.SetupDB(t) + db := testingDB.SetupDB(t) p1.LocalMetadata = &pb.MetaData{ SeqNumber: 2, @@ -446,7 +447,7 @@ func TestStatusRPCRequest_RequestSent(t *testing.T) { func TestStatusRPCRequest_FinalizedBlockExists(t *testing.T) { p1 := p2ptest.NewTestP2P(t) p2 := p2ptest.NewTestP2P(t) - db, _ := testingDB.SetupDB(t) + db := testingDB.SetupDB(t) // Set up a head state with data we expect. head := testutil.NewBeaconBlock() @@ -531,7 +532,8 @@ func TestStatusRPCRequest_FinalizedBlockExists(t *testing.T) { } func TestStatusRPCRequest_FinalizedBlockSkippedSlots(t *testing.T) { - db, _ := testingDB.SetupDB(t) + db, err := kv.NewKVStore(context.Background(), t.TempDir()) + require.NoError(t, err) bState, err := state.GenesisBeaconState(nil, 0, ðpb.Eth1Data{DepositRoot: make([]byte, 32), BlockHash: make([]byte, 32)}) require.NoError(t, err) diff --git a/beacon-chain/sync/service.go b/beacon-chain/sync/service.go index 5d14438526..74d7a817ba 100644 --- a/beacon-chain/sync/service.go +++ b/beacon-chain/sync/service.go @@ -16,7 +16,6 @@ import ( "github.com/pkg/errors" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" "github.com/prysmaticlabs/prysm/beacon-chain/blockchain" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/feed" blockfeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/block" "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/operation" @@ -62,7 +61,6 @@ type Config struct { StateNotifier statefeed.Notifier BlockNotifier blockfeed.Notifier AttestationNotifier operation.Notifier - StateSummaryCache *cache.StateSummaryCache StateGen *stategen.State } @@ -113,7 +111,6 @@ type Service struct { seenAttesterSlashingCache *lru.Cache badBlockCache *lru.Cache badBlockLock sync.RWMutex - stateSummaryCache *cache.StateSummaryCache stateGen *stategen.State } @@ -140,7 +137,6 @@ func NewService(ctx context.Context, cfg *Config) *Service { blkRootToPendingAtts: make(map[[32]byte][]*ethpb.SignedAggregateAttestationAndProof), stateNotifier: cfg.StateNotifier, blockNotifier: cfg.BlockNotifier, - stateSummaryCache: cfg.StateSummaryCache, stateGen: cfg.StateGen, rateLimiter: rLimiter, } diff --git a/beacon-chain/sync/subscriber_beacon_blocks_test.go b/beacon-chain/sync/subscriber_beacon_blocks_test.go index dd499b41ae..e518221411 100644 --- a/beacon-chain/sync/subscriber_beacon_blocks_test.go +++ b/beacon-chain/sync/subscriber_beacon_blocks_test.go @@ -96,7 +96,7 @@ func TestService_beaconBlockSubscriber(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) s := &Service{ chain: &chainMock.ChainService{ DB: db, diff --git a/beacon-chain/sync/subscriber_test.go b/beacon-chain/sync/subscriber_test.go index b7f77174d2..6aa0c29297 100644 --- a/beacon-chain/sync/subscriber_test.go +++ b/beacon-chain/sync/subscriber_test.go @@ -69,7 +69,7 @@ func TestSubscribe_ReceivesValidMessage(t *testing.T) { func TestSubscribe_ReceivesAttesterSlashing(t *testing.T) { p2p := p2ptest.NewTestP2P(t) ctx := context.Background() - d, _ := db.SetupDB(t) + d := db.SetupDB(t) chainService := &mockChain.ChainService{ Genesis: time.Now(), ValidatorsRoot: [32]byte{'A'}, @@ -125,7 +125,7 @@ func TestSubscribe_ReceivesProposerSlashing(t *testing.T) { ValidatorsRoot: [32]byte{'A'}, Genesis: time.Now(), } - d, _ := db.SetupDB(t) + d := db.SetupDB(t) c, err := lru.New(10) require.NoError(t, err) r := Service{ diff --git a/beacon-chain/sync/validate_aggregate_proof_test.go b/beacon-chain/sync/validate_aggregate_proof_test.go index 36f7c99528..a060102a4c 100644 --- a/beacon-chain/sync/validate_aggregate_proof_test.go +++ b/beacon-chain/sync/validate_aggregate_proof_test.go @@ -13,7 +13,6 @@ import ( ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" "github.com/prysmaticlabs/go-bitfield" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" @@ -96,7 +95,7 @@ func TestVerifySelection_NotAnAggregator(t *testing.T) { } func TestValidateAggregateAndProof_NoBlock(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) att := ðpb.Attestation{ @@ -124,7 +123,6 @@ func TestValidateAggregateAndProof_NoBlock(t *testing.T) { attPool: attestations.NewPool(), blkRootToPendingAtts: make(map[[32]byte][]*ethpb.SignedAggregateAttestationAndProof), seenAttestationCache: c, - stateSummaryCache: cache.NewStateSummaryCache(), chain: &mock.ChainService{}, } err = r.initCaches() @@ -148,7 +146,7 @@ func TestValidateAggregateAndProof_NoBlock(t *testing.T) { } func TestValidateAggregateAndProof_NotWithinSlotRange(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) validators := uint64(256) @@ -194,7 +192,6 @@ func TestValidateAggregateAndProof_NotWithinSlotRange(t *testing.T) { }, attPool: attestations.NewPool(), seenAttestationCache: c, - stateSummaryCache: cache.NewStateSummaryCache(), } err = r.initCaches() require.NoError(t, err) @@ -233,7 +230,7 @@ func TestValidateAggregateAndProof_NotWithinSlotRange(t *testing.T) { } func TestValidateAggregateAndProof_ExistedInPool(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) validators := uint64(256) @@ -298,7 +295,7 @@ func TestValidateAggregateAndProof_ExistedInPool(t *testing.T) { } func TestValidateAggregateAndProof_CanValidate(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) validators := uint64(256) @@ -364,7 +361,6 @@ func TestValidateAggregateAndProof_CanValidate(t *testing.T) { }}, attPool: attestations.NewPool(), seenAttestationCache: c, - stateSummaryCache: cache.NewStateSummaryCache(), } err = r.initCaches() require.NoError(t, err) @@ -386,7 +382,7 @@ func TestValidateAggregateAndProof_CanValidate(t *testing.T) { } func TestVerifyIndexInCommittee_SeenAggregatorEpoch(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) validators := uint64(256) @@ -453,7 +449,6 @@ func TestVerifyIndexInCommittee_SeenAggregatorEpoch(t *testing.T) { attPool: attestations.NewPool(), seenAttestationCache: c, - stateSummaryCache: cache.NewStateSummaryCache(), } err = r.initCaches() require.NoError(t, err) @@ -492,7 +487,7 @@ func TestVerifyIndexInCommittee_SeenAggregatorEpoch(t *testing.T) { func TestValidateAggregateAndProof_BadBlock(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) validators := uint64(256) @@ -557,7 +552,6 @@ func TestValidateAggregateAndProof_BadBlock(t *testing.T) { }}, attPool: attestations.NewPool(), seenAttestationCache: c, - stateSummaryCache: cache.NewStateSummaryCache(), } err = r.initCaches() require.NoError(t, err) @@ -579,7 +573,7 @@ func TestValidateAggregateAndProof_BadBlock(t *testing.T) { } func TestValidateAggregateAndProof_RejectWhenAttEpochDoesntEqualTargetEpoch(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) validators := uint64(256) @@ -645,7 +639,6 @@ func TestValidateAggregateAndProof_RejectWhenAttEpochDoesntEqualTargetEpoch(t *t }}, attPool: attestations.NewPool(), seenAttestationCache: c, - stateSummaryCache: cache.NewStateSummaryCache(), } err = r.initCaches() require.NoError(t, err) diff --git a/beacon-chain/sync/validate_beacon_attestation.go b/beacon-chain/sync/validate_beacon_attestation.go index 5dcce80c7b..763b8e3ea9 100644 --- a/beacon-chain/sync/validate_beacon_attestation.go +++ b/beacon-chain/sync/validate_beacon_attestation.go @@ -214,7 +214,7 @@ func (s *Service) setSeenCommitteeIndicesSlot(slot, committeeID uint64, aggregat // hasBlockAndState returns true if the beacon node knows about a block and associated state in the // database or cache. func (s *Service) hasBlockAndState(ctx context.Context, blockRoot [32]byte) bool { - hasStateSummary := s.stateSummaryCache.Has(blockRoot) || s.db.HasStateSummary(ctx, blockRoot) + hasStateSummary := s.db.HasStateSummary(ctx, blockRoot) hasState := hasStateSummary || s.db.HasState(ctx, blockRoot) hasBlock := s.chain.HasInitSyncBlock(blockRoot) || s.db.HasBlock(ctx, blockRoot) return hasState && hasBlock diff --git a/beacon-chain/sync/validate_beacon_attestation_test.go b/beacon-chain/sync/validate_beacon_attestation_test.go index 5db6c5d6e1..319c0ba182 100644 --- a/beacon-chain/sync/validate_beacon_attestation_test.go +++ b/beacon-chain/sync/validate_beacon_attestation_test.go @@ -13,7 +13,6 @@ import ( ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" "github.com/prysmaticlabs/go-bitfield" mockChain "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" p2ptest "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" @@ -27,7 +26,7 @@ import ( func TestService_validateCommitteeIndexBeaconAttestation(t *testing.T) { ctx := context.Background() p := p2ptest.NewTestP2P(t) - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) chain := &mockChain.ChainService{ // 1 slot ago. Genesis: time.Now().Add(time.Duration(-1*int64(params.BeaconConfig().SecondsPerSlot)) * time.Second), @@ -44,7 +43,6 @@ func TestService_validateCommitteeIndexBeaconAttestation(t *testing.T) { chain: chain, blkRootToPendingAtts: make(map[[32]byte][]*ethpb.SignedAggregateAttestationAndProof), seenAttestationCache: c, - stateSummaryCache: cache.NewStateSummaryCache(), } err = s.initCaches() require.NoError(t, err) diff --git a/beacon-chain/sync/validate_beacon_blocks.go b/beacon-chain/sync/validate_beacon_blocks.go index c68f8e32b6..6086aa3d1e 100644 --- a/beacon-chain/sync/validate_beacon_blocks.go +++ b/beacon-chain/sync/validate_beacon_blocks.go @@ -152,8 +152,7 @@ func (s *Service) validateBeaconBlock(ctx context.Context, blk *ethpb.SignedBeac } hasStateSummaryDB := s.db.HasStateSummary(ctx, bytesutil.ToBytes32(blk.Block.ParentRoot)) - hasStateSummaryCache := s.stateSummaryCache.Has(bytesutil.ToBytes32(blk.Block.ParentRoot)) - if !hasStateSummaryDB && !hasStateSummaryCache { + if !hasStateSummaryDB { _, err := s.stateGen.RecoverStateSummary(ctx, bytesutil.ToBytes32(blk.Block.ParentRoot)) if err != nil { return err diff --git a/beacon-chain/sync/validate_beacon_blocks_test.go b/beacon-chain/sync/validate_beacon_blocks_test.go index 79af5a1eac..063d138545 100644 --- a/beacon-chain/sync/validate_beacon_blocks_test.go +++ b/beacon-chain/sync/validate_beacon_blocks_test.go @@ -14,7 +14,6 @@ import ( gcache "github.com/patrickmn/go-cache" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" "github.com/prysmaticlabs/prysm/beacon-chain/core/state" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" @@ -40,7 +39,7 @@ import ( func TestValidateBeaconBlockPubSub_InvalidSignature(t *testing.T) { ctx := context.Background() - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) msg := testutil.NewBeaconBlock() msg.Block.Slot = 1 msg.Block.ParentRoot = testutil.Random32Bytes(t) @@ -81,7 +80,7 @@ func TestValidateBeaconBlockPubSub_InvalidSignature(t *testing.T) { } func TestValidateBeaconBlockPubSub_BlockAlreadyPresentInDB(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) ctx := context.Background() p := p2ptest.NewTestP2P(t) @@ -96,14 +95,13 @@ func TestValidateBeaconBlockPubSub_BlockAlreadyPresentInDB(t *testing.T) { require.NoError(t, err) chainService := &mock.ChainService{Genesis: time.Now()} r := &Service{ - db: db, - p2p: p, - initialSync: &mockSync.Sync{IsSyncing: false}, - chain: chainService, - seenBlockCache: c, - badBlockCache: c2, - stateSummaryCache: cache.NewStateSummaryCache(), - blockNotifier: chainService.BlockNotifier(), + db: db, + p2p: p, + initialSync: &mockSync.Sync{IsSyncing: false}, + chain: chainService, + seenBlockCache: c, + badBlockCache: c2, + blockNotifier: chainService.BlockNotifier(), } buf := new(bytes.Buffer) @@ -122,7 +120,7 @@ func TestValidateBeaconBlockPubSub_BlockAlreadyPresentInDB(t *testing.T) { } func TestValidateBeaconBlockPubSub_CanRecoverStateSummary(t *testing.T) { - db, stateSummaryCache := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() beaconState, privKeys := testutil.DeterministicGenesisState(t, 100) @@ -146,7 +144,7 @@ func TestValidateBeaconBlockPubSub_CanRecoverStateSummary(t *testing.T) { require.NoError(t, err) c2, err := lru.New(10) require.NoError(t, err) - stateGen := stategen.New(db, stateSummaryCache) + stateGen := stategen.New(db) chainService := &mock.ChainService{Genesis: time.Unix(time.Now().Unix()-int64(params.BeaconConfig().SecondsPerSlot), 0), State: beaconState, FinalizedCheckPoint: ðpb.Checkpoint{ @@ -164,7 +162,6 @@ func TestValidateBeaconBlockPubSub_CanRecoverStateSummary(t *testing.T) { badBlockCache: c2, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: stateSummaryCache, stateGen: stateGen, } buf := new(bytes.Buffer) @@ -183,7 +180,7 @@ func TestValidateBeaconBlockPubSub_CanRecoverStateSummary(t *testing.T) { } func TestValidateBeaconBlockPubSub_ValidProposerSignature(t *testing.T) { - db, stateSummaryCache := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() beaconState, privKeys := testutil.DeterministicGenesisState(t, 100) @@ -208,7 +205,7 @@ func TestValidateBeaconBlockPubSub_ValidProposerSignature(t *testing.T) { require.NoError(t, err) c2, err := lru.New(10) require.NoError(t, err) - stateGen := stategen.New(db, stateSummaryCache) + stateGen := stategen.New(db) chainService := &mock.ChainService{Genesis: time.Unix(time.Now().Unix()-int64(params.BeaconConfig().SecondsPerSlot), 0), State: beaconState, FinalizedCheckPoint: ðpb.Checkpoint{ @@ -226,7 +223,6 @@ func TestValidateBeaconBlockPubSub_ValidProposerSignature(t *testing.T) { badBlockCache: c2, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: stateSummaryCache, stateGen: stateGen, } buf := new(bytes.Buffer) @@ -245,7 +241,7 @@ func TestValidateBeaconBlockPubSub_ValidProposerSignature(t *testing.T) { } func TestValidateBeaconBlockPubSub_WithLookahead(t *testing.T) { - db, stateSummaryCache := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() beaconState, privKeys := testutil.DeterministicGenesisState(t, 100) @@ -273,7 +269,7 @@ func TestValidateBeaconBlockPubSub_WithLookahead(t *testing.T) { require.NoError(t, err) c2, err := lru.New(10) require.NoError(t, err) - stateGen := stategen.New(db, stateSummaryCache) + stateGen := stategen.New(db) chainService := &mock.ChainService{Genesis: time.Unix(time.Now().Unix()-int64(blkSlot*params.BeaconConfig().SecondsPerSlot), 0), State: beaconState, FinalizedCheckPoint: ðpb.Checkpoint{ @@ -289,7 +285,6 @@ func TestValidateBeaconBlockPubSub_WithLookahead(t *testing.T) { badBlockCache: c2, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: stateSummaryCache, stateGen: stateGen, } buf := new(bytes.Buffer) @@ -308,7 +303,7 @@ func TestValidateBeaconBlockPubSub_WithLookahead(t *testing.T) { } func TestValidateBeaconBlockPubSub_AdvanceEpochsForState(t *testing.T) { - db, stateSummaryCache := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() beaconState, privKeys := testutil.DeterministicGenesisState(t, 100) @@ -336,7 +331,7 @@ func TestValidateBeaconBlockPubSub_AdvanceEpochsForState(t *testing.T) { require.NoError(t, err) c2, err := lru.New(10) require.NoError(t, err) - stateGen := stategen.New(db, stateSummaryCache) + stateGen := stategen.New(db) chainService := &mock.ChainService{Genesis: time.Unix(time.Now().Unix()-int64(blkSlot*params.BeaconConfig().SecondsPerSlot), 0), State: beaconState, FinalizedCheckPoint: ðpb.Checkpoint{ @@ -352,8 +347,8 @@ func TestValidateBeaconBlockPubSub_AdvanceEpochsForState(t *testing.T) { badBlockCache: c2, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: stateSummaryCache, - stateGen: stateGen, + + stateGen: stateGen, } buf := new(bytes.Buffer) _, err = p.Encoding().EncodeGossip(buf, msg) @@ -371,7 +366,7 @@ func TestValidateBeaconBlockPubSub_AdvanceEpochsForState(t *testing.T) { } func TestValidateBeaconBlockPubSub_Syncing(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() b := []byte("sk") @@ -409,7 +404,7 @@ func TestValidateBeaconBlockPubSub_Syncing(t *testing.T) { } func TestValidateBeaconBlockPubSub_RejectBlocksFromFuture(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() b := []byte("sk") @@ -454,7 +449,7 @@ func TestValidateBeaconBlockPubSub_RejectBlocksFromFuture(t *testing.T) { } func TestValidateBeaconBlockPubSub_RejectBlocksFromThePast(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) b := []byte("sk") b32 := bytesutil.ToBytes32(b) p := p2ptest.NewTestP2P(t) @@ -502,7 +497,7 @@ func TestValidateBeaconBlockPubSub_RejectBlocksFromThePast(t *testing.T) { } func TestValidateBeaconBlockPubSub_SeenProposerSlot(t *testing.T) { - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() beaconState, privKeys := testutil.DeterministicGenesisState(t, 100) @@ -542,7 +537,6 @@ func TestValidateBeaconBlockPubSub_SeenProposerSlot(t *testing.T) { badBlockCache: c2, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: cache.NewStateSummaryCache(), } buf := new(bytes.Buffer) @@ -563,7 +557,7 @@ func TestValidateBeaconBlockPubSub_SeenProposerSlot(t *testing.T) { func TestValidateBeaconBlockPubSub_FilterByFinalizedEpoch(t *testing.T) { hook := logTest.NewGlobal() - db, _ := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) parent := testutil.NewBeaconBlock() @@ -622,7 +616,7 @@ func TestValidateBeaconBlockPubSub_FilterByFinalizedEpoch(t *testing.T) { func TestValidateBeaconBlockPubSub_ParentNotFinalizedDescendant(t *testing.T) { hook := logTest.NewGlobal() - db, stateSummaryCache := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() beaconState, privKeys := testutil.DeterministicGenesisState(t, 100) @@ -647,7 +641,7 @@ func TestValidateBeaconBlockPubSub_ParentNotFinalizedDescendant(t *testing.T) { require.NoError(t, err) c2, err := lru.New(10) require.NoError(t, err) - stateGen := stategen.New(db, stateSummaryCache) + stateGen := stategen.New(db) chainService := &mock.ChainService{Genesis: time.Unix(time.Now().Unix()-int64(params.BeaconConfig().SecondsPerSlot), 0), State: beaconState, FinalizedCheckPoint: ðpb.Checkpoint{ @@ -666,7 +660,6 @@ func TestValidateBeaconBlockPubSub_ParentNotFinalizedDescendant(t *testing.T) { badBlockCache: c2, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: stateSummaryCache, stateGen: stateGen, } buf := new(bytes.Buffer) @@ -684,7 +677,7 @@ func TestValidateBeaconBlockPubSub_ParentNotFinalizedDescendant(t *testing.T) { } func TestValidateBeaconBlockPubSub_InvalidParentBlock(t *testing.T) { - db, stateSummaryCache := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() beaconState, privKeys := testutil.DeterministicGenesisState(t, 100) @@ -714,7 +707,7 @@ func TestValidateBeaconBlockPubSub_InvalidParentBlock(t *testing.T) { require.NoError(t, err) c2, err := lru.New(10) require.NoError(t, err) - stateGen := stategen.New(db, stateSummaryCache) + stateGen := stategen.New(db) chainService := &mock.ChainService{Genesis: time.Unix(time.Now().Unix()-int64(params.BeaconConfig().SecondsPerSlot), 0), State: beaconState, FinalizedCheckPoint: ðpb.Checkpoint{ @@ -730,7 +723,6 @@ func TestValidateBeaconBlockPubSub_InvalidParentBlock(t *testing.T) { badBlockCache: c2, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: stateSummaryCache, stateGen: stateGen, } buf := new(bytes.Buffer) @@ -771,7 +763,7 @@ func TestValidateBeaconBlockPubSub_InvalidParentBlock(t *testing.T) { } func TestValidateBeaconBlockPubSub_RejectEvilBlocksFromFuture(t *testing.T) { - db, stateSummaryCache := dbtest.SetupDB(t) + db := dbtest.SetupDB(t) p := p2ptest.NewTestP2P(t) ctx := context.Background() @@ -813,7 +805,7 @@ func TestValidateBeaconBlockPubSub_RejectEvilBlocksFromFuture(t *testing.T) { c2, err := lru.New(10) require.NoError(t, err) - stateGen := stategen.New(db, stateSummaryCache) + stateGen := stategen.New(db) chainService := &mock.ChainService{ Genesis: time.Unix(genesisTime.Unix()-int64(slotsSinceGenesis*perSlot), 0), FinalizedCheckPoint: ðpb.Checkpoint{ @@ -830,7 +822,6 @@ func TestValidateBeaconBlockPubSub_RejectEvilBlocksFromFuture(t *testing.T) { badBlockCache: c2, slotToPendingBlocks: gcache.New(time.Second, 2*time.Second), seenPendingBlocks: make(map[[32]byte]bool), - stateSummaryCache: stateSummaryCache, stateGen: stateGen, } diff --git a/fuzz/block_fuzz.go b/fuzz/block_fuzz.go index 988f4bb86b..67f6d12003 100644 --- a/fuzz/block_fuzz.go +++ b/fuzz/block_fuzz.go @@ -14,10 +14,8 @@ import ( pubsub "github.com/libp2p/go-libp2p-pubsub" pubsub_pb "github.com/libp2p/go-libp2p-pubsub/pb" "github.com/prysmaticlabs/go-ssz" - "github.com/prysmaticlabs/prysm/beacon-chain/blockchain" "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/state" "github.com/prysmaticlabs/prysm/beacon-chain/db" "github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray" @@ -39,7 +37,6 @@ import ( const topic = p2p.BlockSubnetTopicFormat var db1 db.Database -var ssc *cache.StateSummaryCache var dbPath = path.Join(os.TempDir(), "fuzz_beacondb", randomHex(6)) func randomHex(n int) string { @@ -56,11 +53,9 @@ func init() { logrus.SetLevel(logrus.PanicLevel) logrus.SetOutput(ioutil.Discard) - ssc = cache.NewStateSummaryCache() - var err error - db1, err = db.NewDB(context.Background(), dbPath, ssc) + db1, err = db.NewDB(context.Background(), dbPath) if err != nil { panic(err) } @@ -117,7 +112,7 @@ func BeaconFuzzBlock(b []byte) { setupDB() p2p := p2pt.NewFuzzTestP2P() - sgen := stategen.New(db1, ssc) + sgen := stategen.New(db1) sn := &testing.MockStateNotifier{} bn := &testing.MockBlockNotifier{} an := &testing.MockOperationNotifier{} @@ -158,7 +153,6 @@ func BeaconFuzzBlock(b []byte) { AttPool: ap, ExitPool: ep, SlashingPool: sp, - StateSummaryCache: ssc, StateGen: sgen, }) diff --git a/fuzz/rpc_status_fuzz.go b/fuzz/rpc_status_fuzz.go index 88e2e63975..2aabd56425 100644 --- a/fuzz/rpc_status_fuzz.go +++ b/fuzz/rpc_status_fuzz.go @@ -10,7 +10,6 @@ import ( "github.com/pkg/errors" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" regularsync "github.com/prysmaticlabs/prysm/beacon-chain/sync" mockSync "github.com/prysmaticlabs/prysm/beacon-chain/sync/initial-sync/testing" @@ -59,7 +58,6 @@ func init() { StateNotifier: (&mock.ChainService{}).StateNotifier(), AttestationNotifier: (&mock.ChainService{}).OperationNotifier(), InitialSync: &mockSync.Sync{IsSyncing: false}, - StateSummaryCache: cache.NewStateSummaryCache(), BlockNotifier: nil, }) } diff --git a/slasher/db/kv/block_header_test.go b/slasher/db/kv/block_header_test.go index e110790ce0..0dfd67a635 100644 --- a/slasher/db/kv/block_header_test.go +++ b/slasher/db/kv/block_header_test.go @@ -116,7 +116,7 @@ func TestHasHistoryBlkHdr(t *testing.T) { } for _, tt := range tests { found := db.HasBlockHeader(ctx, tt.bh.Header.Slot, tt.bh.Header.ProposerIndex) - require.Equal(t, false, found, "Has block header should return false for block headers that are not in db") + require.Equal(t, false, found, "has block header should return false for block headers that are not in db") err := db.SaveBlockHeader(ctx, tt.bh) require.NoError(t, err, "Save block failed") } diff --git a/slasher/db/kv/indexed_attestations_test.go b/slasher/db/kv/indexed_attestations_test.go index c674356485..8a8422d2b7 100644 --- a/slasher/db/kv/indexed_attestations_test.go +++ b/slasher/db/kv/indexed_attestations_test.go @@ -672,7 +672,7 @@ func TestHasIndexedAttestation(t *testing.T) { for _, tt := range tests { exists, err := db.HasIndexedAttestation(ctx, tt.idxAtt) require.NoError(t, err) - require.Equal(t, false, exists, "Has indexed attestation should return false for indexed attestations that are not in db") + require.Equal(t, false, exists, "has indexed attestation should return false for indexed attestations that are not in db") require.NoError(t, db.SaveIndexedAttestation(ctx, tt.idxAtt), "Save indexed attestation failed") } diff --git a/tools/blocktree/BUILD.bazel b/tools/blocktree/BUILD.bazel index db75bdd223..a506ff7a6d 100644 --- a/tools/blocktree/BUILD.bazel +++ b/tools/blocktree/BUILD.bazel @@ -7,7 +7,6 @@ go_library( importpath = "github.com/prysmaticlabs/prysm/tools/blocktree", visibility = ["//visibility:private"], deps = [ - "//beacon-chain/cache:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/filters:go_default_library", "//shared/bytesutil:go_default_library", diff --git a/tools/blocktree/main.go b/tools/blocktree/main.go index 043bcd5797..d6e9afa095 100644 --- a/tools/blocktree/main.go +++ b/tools/blocktree/main.go @@ -16,7 +16,6 @@ import ( "strconv" "github.com/emicklei/dot" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/db" "github.com/prysmaticlabs/prysm/beacon-chain/db/filters" "github.com/prysmaticlabs/prysm/shared/bytesutil" @@ -38,7 +37,7 @@ type node struct { func main() { flag.Parse() - db, err := db.NewDB(context.Background(), *datadir, cache.NewStateSummaryCache()) + db, err := db.NewDB(context.Background(), *datadir) if err != nil { panic(err) } diff --git a/tools/extractor/BUILD.bazel b/tools/extractor/BUILD.bazel index da8657f10c..a90e8e31d8 100644 --- a/tools/extractor/BUILD.bazel +++ b/tools/extractor/BUILD.bazel @@ -7,7 +7,6 @@ go_library( importpath = "github.com/prysmaticlabs/prysm/tools/extractor", visibility = ["//visibility:public"], deps = [ - "//beacon-chain/cache:go_default_library", "//beacon-chain/core/state/interop:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/filters:go_default_library", diff --git a/tools/extractor/main.go b/tools/extractor/main.go index f03bd2d7ea..10ba6648c3 100644 --- a/tools/extractor/main.go +++ b/tools/extractor/main.go @@ -5,7 +5,6 @@ import ( "flag" "fmt" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core/state/interop" "github.com/prysmaticlabs/prysm/beacon-chain/db" "github.com/prysmaticlabs/prysm/beacon-chain/db/filters" @@ -24,7 +23,7 @@ func main() { defer resetCfg() flag.Parse() fmt.Println("Starting process...") - d, err := db.NewDB(context.Background(), *datadir, cache.NewStateSummaryCache()) + d, err := db.NewDB(context.Background(), *datadir) if err != nil { panic(err) } diff --git a/tools/interop/export-genesis/BUILD.bazel b/tools/interop/export-genesis/BUILD.bazel index 86a1d42b92..874ca541ac 100644 --- a/tools/interop/export-genesis/BUILD.bazel +++ b/tools/interop/export-genesis/BUILD.bazel @@ -7,7 +7,6 @@ go_library( importpath = "github.com/prysmaticlabs/prysm/tools/interop/export-genesis", visibility = ["//visibility:private"], deps = [ - "//beacon-chain/cache:go_default_library", "//beacon-chain/db:go_default_library", "//shared/fileutil:go_default_library", ], diff --git a/tools/interop/export-genesis/main.go b/tools/interop/export-genesis/main.go index a7686aeb98..f9bb99e989 100644 --- a/tools/interop/export-genesis/main.go +++ b/tools/interop/export-genesis/main.go @@ -5,7 +5,6 @@ import ( "fmt" "os" - "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/db" "github.com/prysmaticlabs/prysm/shared/fileutil" ) @@ -21,7 +20,7 @@ func main() { fmt.Printf("Reading db at %s and writing ssz output to %s.\n", os.Args[1], os.Args[2]) - d, err := db.NewDB(context.Background(), os.Args[1], cache.NewStateSummaryCache()) + d, err := db.NewDB(context.Background(), os.Args[1]) if err != nil { panic(err) }