diff --git a/registry/storage/shares.go b/registry/storage/shares.go index 77bdbf7bec..ec507acb0a 100644 --- a/registry/storage/shares.go +++ b/registry/storage/shares.go @@ -212,13 +212,13 @@ func (s *sharesStorage) Save(rw basedb.ReadWriter, shares ...*types.SSVShare) er s.logger.Debug("save validators to shares storage", zap.Int("count", len(shares))) - s.storageMtx.Lock() defer s.storageMtx.Unlock() // Update in-memory. err := func() error { s.memoryMtx.Lock() defer s.memoryMtx.Unlock() + defer s.storageMtx.Lock() updateShares := make([]*types.SSVShare, 0, len(shares)) addShares := make([]*types.SSVShare, 0, len(shares)) @@ -327,12 +327,12 @@ func (s *sharesStorage) storageShareToSpecShare(share *storageShare) (*types.SSV var errShareNotFound = errors.New("share not found") func (s *sharesStorage) Delete(rw basedb.ReadWriter, pubKey []byte) error { - s.storageMtx.Lock() defer s.storageMtx.Unlock() err := func() error { s.memoryMtx.Lock() defer s.memoryMtx.Unlock() + defer s.storageMtx.Lock() share, found := s.shares[hex.EncodeToString(pubKey)] if !found { @@ -360,12 +360,12 @@ func (s *sharesStorage) Delete(rw basedb.ReadWriter, pubKey []byte) error { func (s *sharesStorage) UpdateValidatorsMetadata(data map[spectypes.ValidatorPK]*beaconprotocol.ValidatorMetadata) error { var shares []*types.SSVShare - s.storageMtx.Lock() defer s.storageMtx.Unlock() err := func() error { s.memoryMtx.Lock() defer s.memoryMtx.Unlock() + defer s.storageMtx.Lock() for pk, metadata := range data { if metadata == nil { @@ -396,12 +396,12 @@ func (s *sharesStorage) UpdateValidatorsMetadata(data map[spectypes.ValidatorPK] // Drop deletes all shares. func (s *sharesStorage) Drop() error { - s.storageMtx.Lock() defer s.storageMtx.Unlock() func() { s.memoryMtx.Lock() defer s.memoryMtx.Unlock() + defer s.storageMtx.Lock() s.shares = make(map[string]*types.SSVShare) s.validatorStore.handleDrop()