浏览代码

Merge pull request #1877 from obscuren/head-write

core: fixed head write on block insertion
Jeffrey Wilcke 10 年之前
父节点
当前提交
13699e2dd9
共有 2 个文件被更改,包括 16 次插入0 次删除
  1. 3 0
      core/blockchain.go
  2. 13 0
      core/blockchain_test.go

+ 3 - 0
core/blockchain.go

@@ -297,6 +297,9 @@ func (bc *BlockChain) insert(block *types.Block) {
 	if err := WriteCanonicalHash(bc.chainDb, block.Hash(), block.NumberU64()); err != nil {
 	if err := WriteCanonicalHash(bc.chainDb, block.Hash(), block.NumberU64()); err != nil {
 		glog.Fatalf("failed to insert block number: %v", err)
 		glog.Fatalf("failed to insert block number: %v", err)
 	}
 	}
+	if err := WriteHeadBlockHash(bc.chainDb, block.Hash()); err != nil {
+		glog.Fatalf("failed to insert block number: %v", err)
+	}
 	bc.currentBlock = block
 	bc.currentBlock = block
 }
 }
 
 

+ 13 - 0
core/blockchain_test.go

@@ -153,6 +153,19 @@ func insertChain(done chan bool, blockchain *BlockChain, chain types.Blocks, t *
 	done <- true
 	done <- true
 }
 }
 
 
+func TestLastBlock(t *testing.T) {
+	db, err := ethdb.NewMemDatabase()
+	if err != nil {
+		t.Fatal("Failed to create db:", err)
+	}
+	bchain := theBlockChain(db, t)
+	block := makeChain(bchain.CurrentBlock(), 1, db, 0)[0]
+	bchain.insert(block)
+	if block.Hash() != GetHeadBlockHash(db) {
+		t.Errorf("Write/Get HeadBlockHash failed")
+	}
+}
+
 func TestExtendCanonical(t *testing.T) {
 func TestExtendCanonical(t *testing.T) {
 	CanonicalLength := 5
 	CanonicalLength := 5
 	db, err := ethdb.NewMemDatabase()
 	db, err := ethdb.NewMemDatabase()