cache

package
v1.0.0-alpha.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 10, 2020 License: GPL-3.0 Imports: 19 Imported by: 107

Documentation

Overview

Package cache includes all important caches for the runtime of an eth2 beacon node, ensuring the node does not spend resources computing duplicate operations such as committee calculations for validators during the same epoch, etc.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNotCommittee will be returned when a cache object is not a pointer to
	// a Committee struct.
	ErrNotCommittee = errors.New("object is not a committee struct")

	// CommitteeCacheMiss tracks the number of committee requests that aren't present in the cache.
	CommitteeCacheMiss = promauto.NewCounter(prometheus.CounterOpts{
		Name: "committee_cache_miss",
		Help: "The number of committee requests that aren't present in the cache.",
	})
	// CommitteeCacheHit tracks the number of committee requests that are in the cache.
	CommitteeCacheHit = promauto.NewCounter(prometheus.CounterOpts{
		Name: "committee_cache_hit",
		Help: "The number of committee requests that are present in the cache.",
	})
)
View Source
var ErrAlreadyInProgress = errors.New("already in progress")

ErrAlreadyInProgress appears when attempting to mark a cache as in progress while it is already in progress. The client should handle this error and wait for the in progress data to resolve via Get.

View Source
var (
	// ErrNotCheckpointState will be returned when a cache object is not a pointer to
	// a CheckpointState struct.
	ErrNotCheckpointState = errors.New("object is not a state by check point struct")
)
View Source
var SubnetIDs = newSubnetIDs()

SubnetIDs for attester and aggregator.

Functions

This section is empty.

Types

type AttestationCache

type AttestationCache struct {
	// contains filtered or unexported fields
}

AttestationCache is used to store the cached results of an AttestationData request.

func NewAttestationCache

func NewAttestationCache() *AttestationCache

NewAttestationCache initializes the map and underlying cache.

func (*AttestationCache) Get

Get waits for any in progress calculation to complete before returning a cached response, if any.

func (*AttestationCache) MarkInProgress

func (c *AttestationCache) MarkInProgress(req *ethpb.AttestationDataRequest) error

MarkInProgress a request so that any other similar requests will block on Get until MarkNotInProgress is called.

func (*AttestationCache) MarkNotInProgress

func (c *AttestationCache) MarkNotInProgress(req *ethpb.AttestationDataRequest) error

MarkNotInProgress will release the lock on a given request. This should be called after put.

func (*AttestationCache) Put

Put the response in the cache.

type CheckpointState

type CheckpointState struct {
	Checkpoint *ethpb.Checkpoint
	State      *stateTrie.BeaconState
}

CheckpointState defines the active validator indices per epoch.

type CheckpointStateCache

type CheckpointStateCache struct {
	// contains filtered or unexported fields
}

CheckpointStateCache is a struct with 1 queue for looking up state by checkpoint.

func NewCheckpointStateCache

func NewCheckpointStateCache() *CheckpointStateCache

NewCheckpointStateCache creates a new checkpoint state cache for storing/accessing processed state.

func (*CheckpointStateCache) AddCheckpointState

func (c *CheckpointStateCache) AddCheckpointState(cp *CheckpointState) error

AddCheckpointState adds CheckpointState object to the cache. This method also trims the least recently added CheckpointState object if the cache size has ready the max cache size limit.

func (*CheckpointStateCache) CheckpointStateKeys

func (c *CheckpointStateCache) CheckpointStateKeys() []string

CheckpointStateKeys returns the keys of the state in cache.

func (*CheckpointStateCache) StateByCheckpoint

func (c *CheckpointStateCache) StateByCheckpoint(cp *ethpb.Checkpoint) (*stateTrie.BeaconState, error)

StateByCheckpoint fetches state by checkpoint. Returns true with a reference to the CheckpointState info, if exists. Otherwise returns false, nil.

type CommitteeCache

type CommitteeCache struct {
	CommitteeCache *cache.FIFO
	// contains filtered or unexported fields
}

CommitteeCache is a struct with 1 queue for looking up shuffled indices list by seed.

func NewCommitteesCache added in v0.3.0

func NewCommitteesCache() *CommitteeCache

NewCommitteesCache creates a new committee cache for storing/accessing shuffled indices of a committee.

func (*CommitteeCache) ActiveIndices

func (c *CommitteeCache) ActiveIndices(seed [32]byte) ([]uint64, error)

ActiveIndices returns the active indices of a given seed stored in cache.

func (*CommitteeCache) AddCommitteeShuffledList

func (c *CommitteeCache) AddCommitteeShuffledList(committees *Committees) error

AddCommitteeShuffledList adds Committee shuffled list object to the cache. T his method also trims the least recently list if the cache size has ready the max cache size limit.

func (*CommitteeCache) AddProposerIndicesList added in v0.3.2

func (c *CommitteeCache) AddProposerIndicesList(seed [32]byte, indices []uint64) error

AddProposerIndicesList updates the committee shuffled list with proposer indices.

func (*CommitteeCache) Committee added in v0.3.0

func (c *CommitteeCache) Committee(slot uint64, seed [32]byte, index uint64) ([]uint64, error)

Committee fetches the shuffled indices by slot and committee index. Every list of indices represent one committee. Returns true if the list exists with slot and committee index. Otherwise returns false, nil.

func (*CommitteeCache) ProposerIndices added in v0.3.2

func (c *CommitteeCache) ProposerIndices(seed [32]byte) ([]uint64, error)

ProposerIndices returns the proposer indices of a given seed.

type Committees added in v0.3.0

type Committees struct {
	CommitteeCount  uint64
	Seed            [32]byte
	ShuffledIndices []uint64
	SortedIndices   []uint64
	ProposerIndices []uint64
}

Committees defines the shuffled committees seed.

type HotStateCache added in v0.3.2

type HotStateCache struct {
	// contains filtered or unexported fields
}

HotStateCache is used to store the processed beacon state after finalized check point..

func NewHotStateCache added in v0.3.2

func NewHotStateCache() *HotStateCache

NewHotStateCache initializes the map and underlying cache.

func (*HotStateCache) Delete added in v1.0.0

func (c *HotStateCache) Delete(root [32]byte) bool

Delete deletes the key exists in the cache.

func (*HotStateCache) Get added in v0.3.2

func (c *HotStateCache) Get(root [32]byte) *stateTrie.BeaconState

Get returns a cached response via input block root, if any. The response is copied by default.

func (*HotStateCache) GetWithoutCopy added in v1.0.0

func (c *HotStateCache) GetWithoutCopy(root [32]byte) *stateTrie.BeaconState

GetWithoutCopy returns a non-copied cached response via input block root.

func (*HotStateCache) Has added in v0.3.2

func (c *HotStateCache) Has(root [32]byte) bool

Has returns true if the key exists in the cache.

func (*HotStateCache) Put added in v0.3.2

func (c *HotStateCache) Put(root [32]byte, state *stateTrie.BeaconState)

Put the response in the cache.

type SkipSlotCache added in v0.3.2

type SkipSlotCache struct {
	// contains filtered or unexported fields
}

SkipSlotCache is used to store the cached results of processing skip slots in state.ProcessSlots.

func NewSkipSlotCache added in v0.3.2

func NewSkipSlotCache() *SkipSlotCache

NewSkipSlotCache initializes the map and underlying cache.

func (*SkipSlotCache) Disable added in v0.3.10

func (c *SkipSlotCache) Disable()

Disable the skip slot cache.

func (*SkipSlotCache) Enable added in v0.3.10

func (c *SkipSlotCache) Enable()

Enable the skip slot cache.

func (*SkipSlotCache) Get added in v0.3.2

Get waits for any in progress calculation to complete before returning a cached response, if any.

func (*SkipSlotCache) MarkInProgress added in v0.3.2

func (c *SkipSlotCache) MarkInProgress(slot uint64) error

MarkInProgress a request so that any other similar requests will block on Get until MarkNotInProgress is called.

func (*SkipSlotCache) MarkNotInProgress added in v0.3.2

func (c *SkipSlotCache) MarkNotInProgress(slot uint64) error

MarkNotInProgress will release the lock on a given request. This should be called after put.

func (*SkipSlotCache) Put added in v0.3.2

func (c *SkipSlotCache) Put(ctx context.Context, slot uint64, state *stateTrie.BeaconState) error

Put the response in the cache.

type StateSummaryCache added in v0.3.9

type StateSummaryCache struct {
	// contains filtered or unexported fields
}

StateSummaryCache caches state summary object.

func NewStateSummaryCache added in v0.3.9

func NewStateSummaryCache() *StateSummaryCache

NewStateSummaryCache creates a new state summary cache.

func (*StateSummaryCache) Clear added in v0.3.9

func (s *StateSummaryCache) Clear()

Clear clears out the initial sync state summaries cache.

func (*StateSummaryCache) Get added in v0.3.9

func (s *StateSummaryCache) Get(r [32]byte) *pb.StateSummary

Get retrieves a state summary from the initial sync state summaries cache using the root of the block.

func (*StateSummaryCache) GetAll added in v0.3.9

func (s *StateSummaryCache) GetAll() []*pb.StateSummary

GetAll retrieves all the beacon state summaries from the initial sync state summaries cache, the returned state summaries are unordered.

func (*StateSummaryCache) Has added in v0.3.9

func (s *StateSummaryCache) Has(r [32]byte) bool

Has checks if a state summary exists in the initial sync state summaries cache using the root of the block.

func (*StateSummaryCache) Put added in v0.3.9

func (s *StateSummaryCache) Put(r [32]byte, b *pb.StateSummary)

Put saves a state summary to the initial sync state summaries cache.

Directories

Path Synopsis
Package depositcache is the source of validator deposits maintained in-memory by the beacon node – deposits processed from the eth1 powchain are then stored in this cache to be accessed by any other service during a beacon node's runtime.
Package depositcache is the source of validator deposits maintained in-memory by the beacon node – deposits processed from the eth1 powchain are then stored in this cache to be accessed by any other service during a beacon node's runtime.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL