Skip to content

Commit

Permalink
refactor: Remove unnecessary code duplication in GetBeaconBlock function
Browse files Browse the repository at this point in the history
  • Loading branch information
samcm committed Sep 22, 2023
1 parent 3248962 commit 2350f43
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions pkg/cannon/ethereum/beacon.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,25 +209,25 @@ func (b *BeaconNode) GetBeaconBlock(ctx context.Context, identifier string, igno
// Create a buffered channel (semaphore) to limit the number of concurrent goroutines.
sem := make(chan struct{}, b.config.BlockPreloadWorkers)

// Check the cache first.
if item := b.blockCache.Get(identifier); item != nil {
if len(ignoreMetrics) != 0 && ignoreMetrics[0] {
b.metrics.IncBlockCacheHit(string(b.Metadata().Network.Name))
}

return item.Value(), nil
}

if len(ignoreMetrics) != 0 && ignoreMetrics[0] {
b.metrics.IncBlockCacheMiss(string(b.Metadata().Network.Name))
}

// Use singleflight to ensure we only make one request for a block at a time.
x, err, _ := b.sfGroup.Do(identifier, func() (interface{}, error) {
// Acquire a semaphore before proceeding.
sem <- struct{}{}
defer func() { <-sem }()

// Check the cache first.
if item := b.blockCache.Get(identifier); item != nil {
if len(ignoreMetrics) != 0 && ignoreMetrics[0] {
b.metrics.IncBlockCacheHit(string(b.Metadata().Network.Name))
}

return item.Value(), nil
}

if len(ignoreMetrics) != 0 && ignoreMetrics[0] {
b.metrics.IncBlockCacheMiss(string(b.Metadata().Network.Name))
}

// Not in the cache, so fetch it.
block, err := b.beacon.FetchBlock(ctx, identifier)
if err != nil {
Expand Down

0 comments on commit 2350f43

Please sign in to comment.