Skip to content

Commit

Permalink
core: run success for refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
jingjunLi committed Mar 28, 2024
1 parent 0e1e747 commit dc9c50f
Show file tree
Hide file tree
Showing 13 changed files with 43 additions and 44 deletions.
2 changes: 1 addition & 1 deletion cmd/geth/pruneblock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func NewLevelDBDatabaseWithFreezer(file string, cache int, handles int, ancient
if err != nil {
return nil, err
}
frdb, err := rawdb.NewDatabaseWithFreezer(kvdb, ancient, namespace, readonly, disableFreeze, isLastOffset, pruneAncientData)
frdb, err := rawdb.NewDatabaseWithFreezer(kvdb, file, ancient, namespace, readonly, disableFreeze, isLastOffset, pruneAncientData)
if err != nil {
kvdb.Close()
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion cmd/utils/history_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ func TestHistoryImportAndExport(t *testing.T) {

// Now import Era.
freezer := t.TempDir()
db2, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), freezer, "", false, false, false, false)
db2, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), freezer, "", false, false, false, false)
if err != nil {
panic(err)
}
Expand Down
20 changes: 10 additions & 10 deletions core/blockchain_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -976,7 +976,7 @@ func testFastVsFullChains(t *testing.T, scheme string) {
t.Fatalf("failed to insert receipt %d: %v", n, err)
}
// Freezer style fast import the chain.
ancientDb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
ancientDb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
if err != nil {
t.Fatalf("failed to create temp freezer db: %v", err)
}
Expand Down Expand Up @@ -1071,7 +1071,7 @@ func testLightVsFastVsFullChainHeads(t *testing.T, scheme string) {

// makeDb creates a db instance for testing.
makeDb := func() ethdb.Database {
db, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
db, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
if err != nil {
t.Fatalf("failed to create temp freezer db: %v", err)
}
Expand Down Expand Up @@ -1959,7 +1959,7 @@ func testLargeReorgTrieGC(t *testing.T, scheme string) {
competitor, _ := GenerateChain(genesis.Config, shared[len(shared)-1], engine, genDb, 2*TriesInMemory+1, func(i int, b *BlockGen) { b.SetCoinbase(common.Address{3}) })

// Import the shared chain and the original canonical one
db, _ := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
db, _ := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
defer db.Close()

chain, err := NewBlockChain(db, DefaultCacheConfigWithScheme(scheme), genesis, nil, engine, vm.Config{}, nil, nil)
Expand Down Expand Up @@ -2028,7 +2028,7 @@ func testBlockchainRecovery(t *testing.T, scheme string) {
_, blocks, receipts := GenerateChainWithGenesis(gspec, ethash.NewFaker(), int(height), nil)

// Import the chain as a ancient-first node and ensure all pointers are updated
ancientDb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
ancientDb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
if err != nil {
t.Fatalf("failed to create temp freezer db: %v", err)
}
Expand Down Expand Up @@ -2099,7 +2099,7 @@ func testInsertReceiptChainRollback(t *testing.T, scheme string) {
}

// Set up a BlockChain that uses the ancient store.
ancientDb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
ancientDb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
if err != nil {
t.Fatalf("failed to create temp freezer db: %v", err)
}
Expand Down Expand Up @@ -2169,7 +2169,7 @@ func testLowDiffLongChain(t *testing.T, scheme string) {
})

// Import the canonical chain
diskdb, _ := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
diskdb, _ := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
defer diskdb.Close()

chain, err := NewBlockChain(diskdb, DefaultCacheConfigWithScheme(scheme), genesis, nil, engine, vm.Config{}, nil, nil)
Expand Down Expand Up @@ -2386,7 +2386,7 @@ func testInsertKnownChainData(t *testing.T, typ string, scheme string) {
b.OffsetTime(-9) // A higher difficulty
})
// Import the shared chain and the original canonical one
chaindb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
chaindb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
if err != nil {
t.Fatalf("failed to create temp freezer db: %v", err)
}
Expand Down Expand Up @@ -2557,7 +2557,7 @@ func testInsertKnownChainDataWithMerging(t *testing.T, typ string, mergeHeight i
}
})
// Import the shared chain and the original canonical one
chaindb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
chaindb, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
if err != nil {
t.Fatalf("failed to create temp freezer db: %v", err)
}
Expand Down Expand Up @@ -3860,7 +3860,7 @@ func testSetCanonical(t *testing.T, scheme string) {
}
gen.AddTx(tx)
})
diskdb, _ := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
diskdb, _ := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
defer diskdb.Close()

chain, err := NewBlockChain(diskdb, DefaultCacheConfigWithScheme(scheme), gspec, nil, engine, vm.Config{}, nil, nil)
Expand Down Expand Up @@ -4485,7 +4485,7 @@ func (c *mockParlia) CalcDifficulty(chain consensus.ChainHeaderReader, time uint
func TestParliaBlobFeeReward(t *testing.T) {
// Have N headers in the freezer
frdir := t.TempDir()
db, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), frdir, "", false, false, false, false)
db, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), frdir, "", false, false, false, false)
if err != nil {
t.Fatalf("failed to create database with ancient backend")
}
Expand Down
13 changes: 0 additions & 13 deletions core/rawdb/accessors_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,19 +160,6 @@ func DeleteTrieJournal(db ethdb.Database) {
//db.JournalDelete()
}

//// DeleteTrieJournal deletes the serialized in-memory trie nodes of layers saved at
//// the last shutdown.
//func DeleteTrieJournal(path string) {
// _, err := os.Stat(path)
// if os.IsNotExist(err) {
// return
// }
// errRemove := os.Remove(path)
// if errRemove != nil {
// log.Crit("Failed to remote tries journal", "err", err)
// }
//}

// ReadStateHistoryMeta retrieves the metadata corresponding to the specified
// state history. Compute the position of state history in freezer by minus
// one since the id of first state history starts from one(zero for initial
Expand Down
31 changes: 20 additions & 11 deletions core/rawdb/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ import (
"github.com/olekukonko/tablewriter"
)

var (
errMissJournal = errors.New("journal not found")
)

const JournalFile = "state.journal"

// freezerdb is a database wrapper that enables freezer data retrievals.
Expand Down Expand Up @@ -138,23 +142,28 @@ func (frdb *freezerdb) SetupFreezerEnv(env *ethdb.FreezerEnv) error {

func (frdb *freezerdb) NewJournalWriter() io.Writer {
var err error
frdb.journalfd, err = os.OpenFile(frdb.dbPath+"/"+JournalFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
path := frdb.dbPath + "/" + JournalFile
frdb.journalfd, err = os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
return nil
}
log.Info("NewJournalReader", "path", path)
return frdb.journalfd
}

func (frdb *freezerdb) NewJournalReader() *rlp.Stream {
func (frdb *freezerdb) NewJournalReader() (*rlp.Stream, error) {
var err error
frdb.journalfd, err = os.Open(frdb.dbPath + "/" + JournalFile)
path := frdb.dbPath + "/" + JournalFile
log.Info("NewJournalReader", "path", path)

frdb.journalfd, err = os.Open(path)
if errors.Is(err, fs.ErrNotExist) {
return nil
return nil, errMissJournal
}
if err != nil {
return nil
return nil, errMissJournal
}
return rlp.NewStream(frdb.journalfd, 0)
return rlp.NewStream(frdb.journalfd, 0), nil
}

func (frdb *freezerdb) JournalWriterSync() {
Expand Down Expand Up @@ -307,12 +316,12 @@ func (db *nofreezedb) NewJournalWriter() io.Writer {
return &db.journalBuf
}

func (db *nofreezedb) NewJournalReader() *rlp.Stream {
func (db *nofreezedb) NewJournalReader() (*rlp.Stream, error) {
journal := ReadTrieJournal(db.stateStore)
if len(journal) == 0 {
return nil
return nil, errMissJournal
}
return rlp.NewStream(bytes.NewReader(journal), 0)
return rlp.NewStream(bytes.NewReader(journal), 0), nil
}

func (db *nofreezedb) JournalWriterSync() {
Expand Down Expand Up @@ -383,7 +392,7 @@ func resolveChainFreezerDir(ancient string) string {
// value data store with a freezer moving immutable chain segments into cold
// storage. The passed ancient indicates the path of root ancient directory
// where the chain freezer can be opened.
func NewDatabaseWithFreezer(db ethdb.KeyValueStore, ancient string, namespace string, readonly, disableFreeze, isLastOffset, pruneAncientData bool) (ethdb.Database, error) {
func NewDatabaseWithFreezer(db ethdb.KeyValueStore, dbPath, ancient string, namespace string, readonly, disableFreeze, isLastOffset, pruneAncientData bool) (ethdb.Database, error) {
var offset uint64
// The offset of ancientDB should be handled differently in different scenarios.
if isLastOffset {
Expand Down Expand Up @@ -649,7 +658,7 @@ func Open(o OpenOptions) (ethdb.Database, error) {
if len(o.AncientsDirectory) == 0 {
return kvdb, nil
}
frdb, err := NewDatabaseWithFreezer(kvdb, o.AncientsDirectory, o.Namespace, o.ReadOnly, o.DisableFreeze, o.IsLastOffset, o.PruneAncientData)
frdb, err := NewDatabaseWithFreezer(kvdb, o.Directory, o.AncientsDirectory, o.Namespace, o.ReadOnly, o.DisableFreeze, o.IsLastOffset, o.PruneAncientData)
if err != nil {
kvdb.Close()
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion core/rawdb/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ func (t *table) NewJournalWriter() io.Writer {
panic("not supported")
}

func (t *table) NewJournalReader() *rlp.Stream {
func (t *table) NewJournalReader() (*rlp.Stream, error) {
panic("not supported")
}

Expand Down
2 changes: 1 addition & 1 deletion core/txindexer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ func TestTxIndexer(t *testing.T) {
}
for _, c := range cases {
frdir := t.TempDir()
db, _ := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), frdir, "", false, false, false, false)
db, _ := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), frdir, "", false, false, false, false)
rawdb.WriteAncientBlocks(db, append([]*types.Block{gspec.ToBlock()}, blocks...), append([]types.Receipts{{}}, receipts...), big.NewInt(0))

// Index the initial blocks from ancient store
Expand Down
2 changes: 1 addition & 1 deletion eth/downloader/downloader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func newTester(t *testing.T) *downloadTester {
// newTester creates a new downloader test mocker.
func newTesterWithNotification(t *testing.T, success func()) *downloadTester {
freezer := t.TempDir()
db, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), freezer, "", false, false, false, false)
db, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), freezer, "", false, false, false, false)
if err != nil {
panic(err)
}
Expand Down
2 changes: 1 addition & 1 deletion eth/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ func (c *mockParlia) CalcDifficulty(chain consensus.ChainHeaderReader, time uint
func newTestParliaHandlerAfterCancun(t *testing.T, config *params.ChainConfig, mode downloader.SyncMode, preCancunBlks, postCancunBlks uint64) *testHandler {
// Have N headers in the freezer
frdir := t.TempDir()
db, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), frdir, "", false, false, false, false)
db, err := rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), frdir, "", false, false, false, false)
if err != nil {
t.Fatalf("failed to create database with ancient backend")
}
Expand Down
2 changes: 1 addition & 1 deletion ethdb/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ type StateStore interface {

type Journal interface {
NewJournalWriter() io.Writer
NewJournalReader() *rlp.Stream
NewJournalReader() (*rlp.Stream, error)
JournalWriterSync()
JournalDelete()
JournalClose()
Expand Down
2 changes: 1 addition & 1 deletion ethdb/remotedb/remotedb.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ func (db *Database) NewJournalWriter() io.Writer {
panic("not supported")
}

func (db *Database) NewJournalReader() *rlp.Stream {
func (db *Database) NewJournalReader() (*rlp.Stream, error) {
panic("not supported")
}

Expand Down
2 changes: 1 addition & 1 deletion triedb/pathdb/database_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ type tester struct {

func newTester(t *testing.T, historyLimit uint64) *tester {
var (
disk, _ = rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), "", false, false, false, false)
disk, _ = rawdb.NewDatabaseWithFreezer(rawdb.NewMemoryDatabase(), t.TempDir(), t.TempDir(), "", false, false, false, false)
db = New(disk, &Config{
StateHistory: historyLimit,
CleanCacheSize: 256 * 1024,
Expand Down
5 changes: 4 additions & 1 deletion triedb/pathdb/journal.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,10 @@ type journalStorage struct {

// loadJournal tries to parse the layer journal from the disk.
func (db *Database) loadJournal(diskRoot common.Hash) (layer, error) {
r := db.diskdb.NewJournalReader()
r, err := db.diskdb.NewJournalReader()
if err != nil {
return nil, err
}

// Firstly, resolve the first element as the journal version
version, err := r.Uint64()
Expand Down

0 comments on commit dc9c50f

Please sign in to comment.