Skip to content

Commit 312fef7

Browse files
authored
Merge pull request #265 from CortexFoundation/dev
torrentfs/monitor/storage | useful err check
2 parents 237e5a2 + 108e65f commit 312fef7

File tree

2 files changed

+58
-38
lines changed

2 files changed

+58
-38
lines changed

torrentfs/monitor.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func NewMonitor(flag *Config) (m *Monitor, e error) {
123123
terminated: 0,
124124
lastNumber: uint64(0),
125125
dirty: false,
126-
taskCh: make(chan *Block, batch*4),
126+
taskCh: make(chan *Block, batch),
127127
}
128128
m.blockCache, _ = lru.New(6)
129129
m.healthPeers, _ = lru.New(50)
@@ -1020,9 +1020,9 @@ func (m *Monitor) syncLastBlock() uint64 {
10201020
//return m.lastNumber - minNumber
10211021
return 0
10221022
}
1023-
/*if err := m.deal(rpcBlock); err != nil {
1024-
return 0
1025-
}*/
1023+
//if err := m.deal(rpcBlock); err != nil {
1024+
// return 0
1025+
//}
10261026
}
10271027
elapsed := time.Duration(mclock.Now()) - time.Duration(start)
10281028
m.lastNumber = maxNumber

torrentfs/storage.go

Lines changed: 54 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package torrentfs
22

33
import (
44
"encoding/json"
5+
"github.com/CortexFoundation/CortexTheseus/params"
56
"errors"
67
//"fmt"
78
"os"
@@ -54,8 +55,8 @@ func (mc *MutexCounter) IsZero() bool {
5455

5556
type FileStorage struct {
5657
filesContractAddr map[common.Address]*FileInfo
57-
files []*FileInfo
58-
blocks []*Block
58+
files []*FileInfo //only storage init files from local storage
59+
blocks []*Block //only storage init ckp blocks from local storage
5960
db *bolt.DB
6061
version string
6162

@@ -112,13 +113,21 @@ func NewFileStorage(config *Config) (*FileStorage, error) {
112113

113114
fs.version = "1"
114115

115-
fs.initBlockNumber()
116-
fs.initCheckPoint()
117-
fs.initBlocks()
118-
//fs.readLastFileIndex()
119-
fs.initFiles()
120-
fs.initMerkleTree()
121-
//tmpCache, _ := lru.New(120)
116+
if err := fs.initBlockNumber(); err != nil {
117+
return nil, err
118+
}
119+
if err := fs.initCheckPoint(); err != nil {
120+
return nil, err
121+
}
122+
if err := fs.initBlocks(); err != nil {
123+
return nil, err
124+
}
125+
if err := fs.initFiles(); err != nil {
126+
return nil, err
127+
}
128+
if err := fs.initMerkleTree(); err != nil {
129+
return nil, err
130+
}
122131

123132
return fs, nil
124133
}
@@ -167,14 +176,16 @@ func (fs *FileStorage) NewFileInfo(Meta *FileMeta) *FileInfo {
167176
//}
168177

169178
func (fs *FileStorage) initMerkleTree() error {
170-
fs.leaves = append(fs.leaves, BlockContent{x: "0x21d6ce908e2d1464bd74bbdbf7249845493cc1ba10460758169b978e187762c1"})
179+
fs.leaves = append(fs.leaves, BlockContent{x: params.MainnetGenesisHash.String()})//"0x21d6ce908e2d1464bd74bbdbf7249845493cc1ba10460758169b978e187762c1"})
171180
tr, err := NewTree(fs.leaves)
172181
if err != nil {
173182
return err
174183
}
175184
fs.tree = tr
176185
for _, block := range fs.blocks {
177-
fs.addLeaf(block)
186+
if err := fs.addLeaf(block); err != nil {
187+
panic("Storage merkletree construct failed")
188+
}
178189
}
179190

180191
log.Info("Storage merkletree initialization", "root", common.ToHex(fs.tree.MerkleRoot()))
@@ -184,11 +195,17 @@ func (fs *FileStorage) initMerkleTree() error {
184195

185196
func (fs *FileStorage) addLeaf(block *Block) error {
186197
fs.leaves = append(fs.leaves, BlockContent{x: block.Hash.String()})
187-
fs.tree.RebuildTreeWith(fs.leaves)
188-
fs.writeRoot(block.Number, fs.tree.MerkleRoot())
189-
log.Debug("Add a new leaf", "number", block.Number, "root", common.ToHex(fs.tree.MerkleRoot())) //, "version", common.ToHex(version)) //MerkleRoot())
198+
if err := fs.tree.RebuildTreeWith(fs.leaves); err == nil {
199+
if err := fs.writeRoot(block.Number, fs.tree.MerkleRoot()); err != nil {
200+
return err
201+
}
190202

191-
return nil
203+
log.Debug("Add a new leaf", "number", block.Number, "root", common.ToHex(fs.tree.MerkleRoot())) //, "version", common.ToHex(version)) //MerkleRoot())
204+
205+
return nil
206+
} else {
207+
return err
208+
}
192209
}
193210

194211
func (fs *FileStorage) Root() common.Hash {
@@ -466,9 +483,9 @@ func (fs *FileStorage) Version() string {
466483
}
467484

468485
func (fs *FileStorage) initBlocks() error {
469-
return fs.db.View(func(tx *bolt.Tx) error {
470-
if buk := tx.Bucket([]byte("blocks_" + fs.version)); buk == nil {
471-
return ErrReadDataFromBoltDB
486+
return fs.db.Update(func(tx *bolt.Tx) error {
487+
if buk, err := tx.CreateBucketIfNotExists([]byte("blocks_" + fs.version)); err != nil {
488+
return err
472489
} else {
473490
c := buk.Cursor()
474491

@@ -491,9 +508,9 @@ func (fs *FileStorage) initBlocks() error {
491508
}
492509

493510
func (fs *FileStorage) initFiles() error {
494-
return fs.db.View(func(tx *bolt.Tx) error {
495-
if buk := tx.Bucket([]byte("files_" + fs.version)); buk == nil {
496-
return ErrReadDataFromBoltDB
511+
return fs.db.Update(func(tx *bolt.Tx) error {
512+
if buk, err := tx.CreateBucketIfNotExists([]byte("files_" + fs.version)); buk == nil || err != nil {
513+
return err
497514
} else {
498515
c := buk.Cursor()
499516

@@ -552,16 +569,17 @@ func (fs *FileStorage) initFiles() error {
552569
})
553570
}*/
554571
func (fs *FileStorage) initCheckPoint() error {
555-
return fs.db.View(func(tx *bolt.Tx) error {
556-
buk := tx.Bucket([]byte("checkpoint_" + fs.version))
557-
if buk == nil {
558-
return ErrReadDataFromBoltDB
572+
return fs.db.Update(func(tx *bolt.Tx) error {
573+
buk, err := tx.CreateBucketIfNotExists([]byte("checkpoint_" + fs.version))
574+
if err != nil {
575+
return err
559576
}
560577

561578
v := buk.Get([]byte("key"))
562579

563580
if v == nil {
564-
return ErrReadDataFromBoltDB
581+
//return ErrReadDataFromBoltDB
582+
return nil
565583
}
566584

567585
number, err := strconv.ParseUint(string(v), 16, 64)
@@ -576,16 +594,18 @@ func (fs *FileStorage) initCheckPoint() error {
576594
}
577595

578596
func (fs *FileStorage) initBlockNumber() error {
579-
return fs.db.View(func(tx *bolt.Tx) error {
580-
buk := tx.Bucket([]byte("currentBlockNumber_" + fs.version))
581-
if buk == nil {
582-
return ErrReadDataFromBoltDB
597+
return fs.db.Update(func(tx *bolt.Tx) error {
598+
//buk := tx.Bucket([]byte("currentBlockNumber_" + fs.version))
599+
buk, err := tx.CreateBucketIfNotExists([]byte("currentBlockNumber_" + fs.version))
600+
if err != nil {
601+
return err
583602
}
584603

585604
v := buk.Get([]byte("key"))
586605

587606
if v == nil {
588-
return ErrReadDataFromBoltDB
607+
//return ErrReadDataFromBoltDB
608+
return nil
589609
}
590610

591611
number, err := strconv.ParseUint(string(v), 16, 64)
@@ -636,9 +656,9 @@ func (fs *FileStorage) writeRoot(number uint64, root []byte) error {
636656

637657
func (fs *FileStorage) GetRootByNumber(number uint64) (root []byte) {
638658
cb := func(tx *bolt.Tx) error {
639-
buk := tx.Bucket([]byte("version_" + fs.version))
640-
if buk == nil {
641-
return ErrReadDataFromBoltDB
659+
buk, err := tx.CreateBucketIfNotExists([]byte("version_" + fs.version))
660+
if err != nil {
661+
return err
642662
}
643663

644664
v := buk.Get([]byte(strconv.FormatUint(number, 16)))

0 commit comments

Comments
 (0)