diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-02-28 20:00:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-28 20:00:25 +0800 |
commit | d4f60d362b8fcf82db1accf89c146a2a71375841 (patch) | |
tree | 60d65b744b69bbe477143ea444adba290653651a | |
parent | dbd88a1aa493d5f7bde5692c9649f795ad0bd7b0 (diff) | |
parent | 46bcd9a92c747bd6f2f6f7377d39f3949469203c (diff) | |
download | go-tangerine-d4f60d362b8fcf82db1accf89c146a2a71375841.tar go-tangerine-d4f60d362b8fcf82db1accf89c146a2a71375841.tar.gz go-tangerine-d4f60d362b8fcf82db1accf89c146a2a71375841.tar.bz2 go-tangerine-d4f60d362b8fcf82db1accf89c146a2a71375841.tar.lz go-tangerine-d4f60d362b8fcf82db1accf89c146a2a71375841.tar.xz go-tangerine-d4f60d362b8fcf82db1accf89c146a2a71375841.tar.zst go-tangerine-d4f60d362b8fcf82db1accf89c146a2a71375841.zip |
Merge pull request #3721 from karalabe/drop-legacy-db-updates
core, eth: drop database block splitting upgrader
-rw-r--r-- | core/database_util.go | 18 | ||||
-rw-r--r-- | eth/backend.go | 3 | ||||
-rw-r--r-- | eth/db_upgrade.go | 59 |
3 files changed, 0 insertions, 80 deletions
diff --git a/core/database_util.go b/core/database_util.go index 23240b35e..68263f8d8 100644 --- a/core/database_util.go +++ b/core/database_util.go @@ -539,24 +539,6 @@ func DeleteReceipt(db ethdb.Database, hash common.Hash) { db.Delete(append(receiptsPrefix, hash.Bytes()...)) } -// [deprecated by the header/block split, remove eventually] -// GetBlockByHashOld returns the old combined block corresponding to the hash -// or nil if not found. This method is only used by the upgrade mechanism to -// access the old combined block representation. It will be dropped after the -// network transitions to eth/63. -func GetBlockByHashOld(db ethdb.Database, hash common.Hash) *types.Block { - data, _ := db.Get(append(oldBlockHashPrefix, hash[:]...)) - if len(data) == 0 { - return nil - } - var block types.StorageBlock - if err := rlp.Decode(bytes.NewReader(data), &block); err != nil { - log.Error(fmt.Sprintf("invalid block RLP for hash %x: %v", hash, err)) - return nil - } - return (*types.Block)(&block) -} - // returns a formatted MIP mapped key by adding prefix, canonical number and level // // ex. fn(98, 1000) = (prefix || 1000 || 0) diff --git a/eth/backend.go b/eth/backend.go index f20e4a509..c288b2557 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -176,9 +176,6 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { solcPath: config.SolcPath, } - if err := upgradeChainDatabase(chainDb); err != nil { - return nil, err - } if err := addMipmapBloomBins(chainDb); err != nil { return nil, err } diff --git a/eth/db_upgrade.go b/eth/db_upgrade.go index 7038ebbbd..2a61af364 100644 --- a/eth/db_upgrade.go +++ b/eth/db_upgrade.go @@ -252,65 +252,6 @@ func upgradeSequentialBlockData(db ethdb.Database, hash []byte) error { return nil } -// upgradeChainDatabase ensures that the chain database stores block split into -// separate header and body entries. -func upgradeChainDatabase(db ethdb.Database) error { - // Short circuit if the head block is stored already as separate header and body - data, err := db.Get([]byte("LastBlock")) - if err != nil { - return nil - } - head := common.BytesToHash(data) - - if block := core.GetBlockByHashOld(db, head); block == nil { - return nil - } - // At least some of the database is still the old format, upgrade (skip the head block!) - log.Info(fmt.Sprint("Old database detected, upgrading...")) - - if db, ok := db.(*ethdb.LDBDatabase); ok { - blockPrefix := []byte("block-hash-") - for it := db.NewIterator(); it.Next(); { - // Skip anything other than a combined block - if !bytes.HasPrefix(it.Key(), blockPrefix) { - continue - } - // Skip the head block (merge last to signal upgrade completion) - if bytes.HasSuffix(it.Key(), head.Bytes()) { - continue - } - // Load the block, split and serialize (order!) - block := core.GetBlockByHashOld(db, common.BytesToHash(bytes.TrimPrefix(it.Key(), blockPrefix))) - - if err := core.WriteTd(db, block.Hash(), block.NumberU64(), block.DeprecatedTd()); err != nil { - return err - } - if err := core.WriteBody(db, block.Hash(), block.NumberU64(), block.Body()); err != nil { - return err - } - if err := core.WriteHeader(db, block.Header()); err != nil { - return err - } - if err := db.Delete(it.Key()); err != nil { - return err - } - } - // Lastly, upgrade the head block, disabling the upgrade mechanism - current := core.GetBlockByHashOld(db, head) - - if err := core.WriteTd(db, current.Hash(), current.NumberU64(), current.DeprecatedTd()); err != nil { - return err - } - if err := core.WriteBody(db, current.Hash(), current.NumberU64(), current.Body()); err != nil { - return err - } - if err := core.WriteHeader(db, current.Header()); err != nil { - return err - } - } - return nil -} - func addMipmapBloomBins(db ethdb.Database) (err error) { const mipmapVersion uint = 2 |