Skip to content

Commit 8789474

Browse files
authored
Merge pull request #256 from CortexFoundation/dev
Dev 2 Master branch
2 parents 72597d4 + 3b65f1d commit 8789474

File tree

12 files changed

+93
-52
lines changed

12 files changed

+93
-52
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.12
55
require (
66
github.com/Azure/azure-storage-blob-go v0.8.0
77
github.com/Azure/go-autorest/autorest/adal v0.6.0 // indirect
8-
github.com/VictoriaMetrics/fastcache v1.5.3
8+
github.com/VictoriaMetrics/fastcache v1.5.4
99
github.com/allegro/bigcache v1.2.1 // indirect
1010
github.com/anacrolix/missinggo v1.2.1
1111
github.com/anacrolix/tagflag v1.0.1

go.sum

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,14 @@ github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VY
2424
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
2525
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
2626
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
27-
github.com/OneOfOne/xxhash v1.2.5 h1:zl/OfRA6nftbBK9qTohYBJ5xvw6C/oNKizR7cZGl3cI=
28-
github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
2927
github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w=
3028
github.com/RoaringBitmap/roaring v0.4.17/go.mod h1:D3qVegWTmfCaX4Bl5CrBE9hfrSrrXIr8KVNvRsDi1NI=
3129
github.com/RoaringBitmap/roaring v0.4.18 h1:nh8Ngxctxt5QAoMLuR7MHJe4jEqpn+EnsdgDWPryQWo=
3230
github.com/RoaringBitmap/roaring v0.4.18/go.mod h1:D3qVegWTmfCaX4Bl5CrBE9hfrSrrXIr8KVNvRsDi1NI=
3331
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
3432
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
35-
github.com/VictoriaMetrics/fastcache v1.5.3 h1:2odJnXLbFZcoV9KYtQ+7TH1UOq3dn3AssMgieaezkR4=
36-
github.com/VictoriaMetrics/fastcache v1.5.3/go.mod h1:+jv9Ckb+za/P1ZRg/sulP5Ni1v49daAVERr0H3CuscE=
33+
github.com/VictoriaMetrics/fastcache v1.5.4 h1:0BaXbRH01RycJk79OOBwMCXlNryko9z4yEf6RqbP+Xo=
34+
github.com/VictoriaMetrics/fastcache v1.5.4/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8=
3735
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
3836
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
3937
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -128,8 +126,8 @@ github.com/cespare/cp v1.1.1 h1:nCb6ZLdB7NRaqsm91JtQTAme2SKJzXVsdPIPkyJr1MU=
128126
github.com/cespare/cp v1.1.1/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
129127
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
130128
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
131-
github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18 h1:pl4eWIqvFe/Kg3zkn7NxevNzILnZYWDCG7qbA1CJik0=
132-
github.com/cespare/xxhash/v2 v2.0.1-0.20190104013014-3767db7a7e18/go.mod h1:HD5P3vAIAh+Y2GAxg0PrPN1P8WkepXGpjbUPDHJqqKM=
129+
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
130+
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
133131
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
134132
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
135133
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -317,7 +315,6 @@ github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:X
317315
github.com/smartystreets/goconvey v0.0.0-20190306220146-200a235640ff h1:86HlEv0yBCry9syNuylzqznKXDK11p6D0DT596yNMys=
318316
github.com/smartystreets/goconvey v0.0.0-20190306220146-200a235640ff/go.mod h1:KSQcGKpxUMHk3nbYzs/tIBAM2iDooCn0BmttHOJEbLs=
319317
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
320-
github.com/spaolacci/murmur3 v1.0.1-0.20190317074736-539464a789e9/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
321318
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
322319
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
323320
github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570 h1:gIlAHnH1vJb5vwEjIp5kBj/eu99p/bl0Ay2goiPe5xE=

params/config.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ var CheckpointOracles = map[common.Hash]*CheckpointOracleConfig{
4848
}
4949

5050
type TrustedCheckpoint struct {
51-
Name string `json:"-"`
52-
SectionIndex uint64 `json:"sectionIndex"`
53-
SectionHead common.Hash `json:"sectionHead"`
51+
Name string `json:"-"`
52+
SectionIndex uint64 `json:"sectionIndex"`
53+
SectionHead common.Hash `json:"sectionHead"`
54+
TfsBlocks uint64 `json:"tfsBlocks"`
55+
TfsCheckPoint uint64 `json:"tfsCheckPoint"`
5456
}
5557

5658
var (
@@ -61,15 +63,19 @@ var (
6163

6264
var (
6365
MainnetTrustedCheckpoint = &TrustedCheckpoint{
64-
Name: "mainnet",
65-
SectionIndex: 13,
66-
SectionHead: common.HexToHash("0xbcb220cb151820896fe9ef0138b7d433ded14e9b489def7bfb4819bbf28be95e"),
66+
Name: "mainnet",
67+
SectionIndex: 13,
68+
SectionHead: common.HexToHash("0xbcb220cb151820896fe9ef0138b7d433ded14e9b489def7bfb4819bbf28be95e"),
69+
TfsBlocks: 96,
70+
TfsCheckPoint: 395964,
6771
}
6872
//0x78c5f644c046fb0ea544b50a898ca5d2a926c419863853ac8ba22c10fc380fd6
6973
DoloresTrustedCheckpoint = &TrustedCheckpoint{
70-
Name: "dolores",
71-
SectionIndex: 1,
72-
SectionHead: common.HexToHash("0xb7b7f06c6cc9dc5fe3b8a673fa3e18ef7bcbce033fa54051a4fb37d8fdb87d6c"),
74+
Name: "dolores",
75+
SectionIndex: 1,
76+
SectionHead: common.HexToHash("0xb7b7f06c6cc9dc5fe3b8a673fa3e18ef7bcbce033fa54051a4fb37d8fdb87d6c"),
77+
TfsBlocks: 0,
78+
TfsCheckPoint: 0,
7379
}
7480

7581
MainnetCheckpointOracle = &CheckpointOracleConfig{

torrentfs/monitor.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,18 @@ func NewMonitor(flag *Config) (m *Monitor, e error) {
182182
}
183183

184184
func (m *Monitor) storageInit() error {
185-
log.Info("Loading storage data ... ...", "latest", m.fs.LastListenBlockNumber)
186-
187-
if len(m.fs.Blocks()) == 0 {
188-
m.lastNumber = 0
185+
log.Info("Loading storage data ... ...", "latest", m.fs.LastListenBlockNumber, "checkpoint", m.fs.CheckPoint)
186+
genesis, err := m.rpcBlockByNumber(0)
187+
if err != nil {
188+
return err
189+
}
190+
if checkpoint, ok := params.TrustedCheckpoints[genesis.Hash]; ok {
191+
if uint64(len(m.fs.Blocks())) < checkpoint.TfsBlocks || uint64(m.fs.CheckPoint) < checkpoint.TfsCheckPoint {
192+
m.lastNumber = 0
193+
log.Info("Torrent fs block dismatch, reloading ...", "blocks", len(m.fs.Blocks()), "limit", checkpoint.TfsBlocks, "ckp", m.fs.CheckPoint, "checkpoint", checkpoint.TfsCheckPoint)
194+
} else {
195+
log.Info("Torrent fs block passed", "blocks", len(m.fs.Blocks()), "limit", checkpoint.TfsBlocks, "ckp", m.fs.CheckPoint, "checkpoint", checkpoint.TfsCheckPoint)
196+
}
189197
}
190198

191199
blocks := m.fs.Blocks()

torrentfs/storage.go

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ type FileStorage struct {
5757
db *bolt.DB
5858

5959
LastListenBlockNumber uint64
60+
CheckPoint uint64
6061
//LastFileIndex uint64
6162

6263
//lock sync.RWMutex
@@ -103,6 +104,7 @@ func NewFileStorage(config *Config) (*FileStorage, error) {
103104
}
104105

105106
fs.initBlockNumber()
107+
fs.initCheckPoint()
106108
fs.initBlocks()
107109
//fs.readLastFileIndex()
108110
fs.initFiles()
@@ -390,6 +392,11 @@ func (fs *FileStorage) WriteBlock(b *Block, record bool) error {
390392
if err != nil {
391393
return err
392394
}
395+
396+
if b.Number > fs.CheckPoint {
397+
fs.CheckPoint = b.Number
398+
fs.writeCheckPoint()
399+
}
393400
}
394401

395402
if b.Number < fs.LastListenBlockNumber {
@@ -483,6 +490,29 @@ func (fs *FileStorage) initFiles() error {
483490
return e
484491
})
485492
}*/
493+
func (fs *FileStorage) initCheckPoint() error {
494+
return fs.db.View(func(tx *bolt.Tx) error {
495+
buk := tx.Bucket([]byte("checkpoint"))
496+
if buk == nil {
497+
return ErrReadDataFromBoltDB
498+
}
499+
500+
v := buk.Get([]byte("key"))
501+
502+
if v == nil {
503+
return ErrReadDataFromBoltDB
504+
}
505+
506+
number, err := strconv.ParseUint(string(v), 16, 64)
507+
if err != nil {
508+
return err
509+
}
510+
511+
fs.CheckPoint = number
512+
513+
return nil
514+
})
515+
}
486516

487517
func (fs *FileStorage) initBlockNumber() error {
488518
return fs.db.View(func(tx *bolt.Tx) error {
@@ -508,15 +538,25 @@ func (fs *FileStorage) initBlockNumber() error {
508538
})
509539
}
510540

541+
func (fs *FileStorage) writeCheckPoint() error {
542+
return fs.db.Update(func(tx *bolt.Tx) error {
543+
buk, err := tx.CreateBucketIfNotExists([]byte("checkpoint"))
544+
if err != nil {
545+
return err
546+
}
547+
e := buk.Put([]byte("key"), []byte(strconv.FormatUint(fs.CheckPoint, 16)))
548+
549+
return e
550+
})
551+
}
552+
511553
func (fs *FileStorage) writeBlockNumber() error {
512554
return fs.db.Update(func(tx *bolt.Tx) error {
513555
buk, err := tx.CreateBucketIfNotExists([]byte("currentBlockNumber"))
514556
if err != nil {
515557
return err
516558
}
517-
//fs.lock.Lock()
518559
e := buk.Put([]byte("key"), []byte(strconv.FormatUint(fs.LastListenBlockNumber, 16)))
519-
//fs.lock.Unlock()
520560

521561
return e
522562
})

vendor/github.com/VictoriaMetrics/fastcache/go.mod

Lines changed: 1 addition & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/VictoriaMetrics/fastcache/go.sum

Lines changed: 2 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/cespare/xxhash/v2/README.md

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/cespare/xxhash/v2/go.mod

Lines changed: 1 addition & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/cespare/xxhash/v2/go.sum

Lines changed: 0 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)