浏览代码

core: switched to proper LRU

obscuren 10 年之前
父节点
当前提交
6ca3a44638
共有 1 个文件被更改,包括 6 次插入9 次删除
  1. 6 9
      core/chain_manager.go

+ 6 - 9
core/chain_manager.go

@@ -21,7 +21,7 @@ import (
 	"github.com/ethereum/go-ethereum/params"
 	"github.com/ethereum/go-ethereum/pow"
 	"github.com/ethereum/go-ethereum/rlp"
-	"github.com/golang/groupcache/lru"
+	"github.com/hashicorp/golang-lru"
 	"github.com/syndtr/goleveldb/leveldb"
 )
 
@@ -121,13 +121,14 @@ type ChainManager struct {
 }
 
 func NewChainManager(genesis *types.Block, blockDb, stateDb common.Database, pow pow.PoW, mux *event.TypeMux) (*ChainManager, error) {
+	cache, _ := lru.New(blockCacheLimit)
 	bc := &ChainManager{
 		blockDb:      blockDb,
 		stateDb:      stateDb,
 		genesisBlock: GenesisBlock(42, stateDb),
 		eventMux:     mux,
 		quit:         make(chan struct{}),
-		cache:        lru.New(blockCacheLimit),
+		cache:        cache,
 		pow:          pow,
 	}
 	// Check the genesis block given to the chain manager. If the genesis block mismatches block number 0
@@ -172,7 +173,7 @@ func (bc *ChainManager) SetHead(head *types.Block) {
 		bc.removeBlock(block)
 	}
 
-	bc.cache = lru.New(blockCacheLimit)
+	bc.cache, _ = lru.New(blockCacheLimit)
 	bc.currentBlock = head
 	bc.makeCache()
 
@@ -260,9 +261,7 @@ func (bc *ChainManager) setLastState() {
 }
 
 func (bc *ChainManager) makeCache() {
-	if bc.cache == nil {
-		bc.cache = lru.New(blockCacheLimit)
-	}
+	bc.cache, _ = lru.New(blockCacheLimit)
 	// load in last `blockCacheLimit` - 1 blocks. Last block is the current.
 	ancestors := bc.GetAncestors(bc.currentBlock, blockCacheLimit-1)
 	ancestors = append(ancestors, bc.currentBlock)
@@ -279,9 +278,7 @@ func (bc *ChainManager) Reset() {
 		bc.removeBlock(block)
 	}
 
-	if bc.cache == nil {
-		bc.cache = lru.New(blockCacheLimit)
-	}
+	bc.cache, _ = lru.New(blockCacheLimit)
 
 	// Prepare the genesis block
 	bc.write(bc.genesisBlock)