From 20ab29f8855982f28c6887743c737531065fa792 Mon Sep 17 00:00:00 2001 From: Jeffrey Wilcke Date: Mon, 5 Oct 2015 16:51:06 +0200 Subject: [PATCH] core: fixed head write on block insertion Due to a rebase this probably got overlooked / ignored. This fixes the issue of a block insertion never writing the last block. --- core/blockchain.go | 3 +++ core/blockchain_test.go | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/core/blockchain.go b/core/blockchain.go index e8209f8e3..ad545cf69 100644 --- a/core/blockchain.go +++ b/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 { 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 } diff --git a/core/blockchain_test.go b/core/blockchain_test.go index e034417ce..13971ccba 100644 --- a/core/blockchain_test.go +++ b/core/blockchain_test.go @@ -153,6 +153,19 @@ func insertChain(done chan bool, blockchain *BlockChain, chain types.Blocks, t * 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) { CanonicalLength := 5 db, err := ethdb.NewMemDatabase()