mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-27 05:38:55 +00:00
7f7866ff2a
* Starting a quick PoC * Rate limit to one epoch worth of blocks in memory * Proof of concept working * Quick comment out * Save previous finalized checkpoint * Test * Minor fixes * More run time fixes * Remove panic * Feature flag * Removed unused methods * Fixed tests * E2e test * comment * Compatible with current initial sync * Starting * New cache * Cache getters and setters * It should be part of state gen * Need to use cache for DB * Don't have to use finalized state * Rm unused file * some changes to memory mgmt when using mempool * More run time fixes * Can sync to head * Feedback * Revert "some changes to memory mgmt when using mempool" This reverts commit f5b3e7ff4714fef9f0397007f519a45fa259ad24. * Fixed sync tests * Fixed existing tests * Test for state summary getter * Gaz * Fix kafka passthrough * Fixed inputs * Gaz * Fixed build * Fixed visibility * Trying without the ignore * Didn't work.. * Fix kafka Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
66 lines
2.0 KiB
Go
66 lines
2.0 KiB
Go
package cache
|
|
|
|
import (
|
|
"sync"
|
|
|
|
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
|
|
)
|
|
|
|
// 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{
|
|
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) {
|
|
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
|
|
// of the block.
|
|
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
|
|
// the block.
|
|
func (s *StateSummaryCache) Get(r [32]byte) *pb.StateSummary {
|
|
s.initSyncStateSummariesLock.RLock()
|
|
defer s.initSyncStateSummariesLock.RUnlock()
|
|
b := s.initSyncStateSummaries[r]
|
|
return b
|
|
}
|
|
|
|
// 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 {
|
|
s.initSyncStateSummariesLock.RLock()
|
|
defer s.initSyncStateSummariesLock.RUnlock()
|
|
|
|
blks := make([]*pb.StateSummary, 0, len(s.initSyncStateSummaries))
|
|
for _, b := range s.initSyncStateSummaries {
|
|
blks = append(blks, b)
|
|
}
|
|
return blks
|
|
}
|
|
|
|
// Clear clears out the initial sync state summaries cache.
|
|
func (s *StateSummaryCache) Clear() {
|
|
s.initSyncStateSummariesLock.Lock()
|
|
defer s.initSyncStateSummariesLock.Unlock()
|
|
s.initSyncStateSummaries = make(map[[32]byte]*pb.StateSummary)
|
|
}
|