Skip to content

Commit

Permalink
init & deps
Browse files Browse the repository at this point in the history
  • Loading branch information
ucwong committed Apr 12, 2023
1 parent b31abdf commit 61dadb1
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 24 deletions.
31 changes: 29 additions & 2 deletions backend/chaindb.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ type ChainDB struct {
torrents map[string]uint64
lock sync.RWMutex
//rootCache *lru.Cache

initOnce sync.Once
}

func NewChainDB(config *params.Config) (*ChainDB, error) {
Expand Down Expand Up @@ -100,7 +102,7 @@ func NewChainDB(config *params.Config) (*ChainDB, error) {

//fs.rootCache, _ = lru.New(8)

if err := fs.initBlockNumber(); err != nil {
/*if err := fs.initBlockNumber(); err != nil {
log.Error("Init block error", "err", err)
return nil, err
}
Expand All @@ -122,7 +124,7 @@ func NewChainDB(config *params.Config) (*ChainDB, error) {
if err := fs.initID(); err != nil {
log.Error("Init node id error", "err", err)
return nil, err
}
}*/

//fs.history()

Expand All @@ -131,6 +133,31 @@ func NewChainDB(config *params.Config) (*ChainDB, error) {
return fs, nil
}

func (fs *ChainDB) Init() (err error) {
fs.initOnce.Do(func() {
if err = fs.initBlockNumber(); err != nil {
log.Error("Init block error", "err", err)
//return err
}

if err = fs.initFiles(); err != nil {
log.Error("Init files error", "err", err)
//return err
}
if err = fs.initMerkleTree(); err != nil {
log.Error("Init mkt error", "err", err)
//return err
}

if err = fs.initID(); err != nil {
log.Error("Init node id error", "err", err)
//return err
}
})

return
}

func (fs *ChainDB) Files() []*types.FileInfo {
return fs.files
}
Expand Down
47 changes: 31 additions & 16 deletions fs.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ type TorrentFS struct {
ttlchan chan any

net *p2p.Server

initOnce sync.Once
}

func (t *TorrentFS) storage() *backend.TorrentManager {
Expand All @@ -99,9 +101,9 @@ func (t *TorrentFS) chain() *backend.ChainDB {
}

var (
inst *TorrentFS = nil
mut sync.RWMutex
initOnce sync.Once
inst *TorrentFS = nil
mut sync.RWMutex
newOnce sync.Once
)

func GetStorage() CortexStorage {
Expand All @@ -117,7 +119,7 @@ func GetStorage() CortexStorage {

// New creates a new torrentfs instance with the given configuration.
func New(config *params.Config, cache, compress, listen bool) (t *TorrentFS, err error) {
initOnce.Do(func() {
newOnce.Do(func() {
mut.Lock()
defer mut.Unlock()
t, err = create(config, cache, compress, listen)
Expand Down Expand Up @@ -150,7 +152,7 @@ func create(config *params.Config, cache, compress, listen bool) (*TorrentFS, er
}
log.Info("Fs manager initialized")

_callback := make(chan any, 1)
_callback := make(chan any, 1024)
monitor, err := monitor.New(config, cache, compress, listen, db, _callback)
if err != nil {
log.Error("Failed create monitor", "err", err)
Expand Down Expand Up @@ -261,8 +263,8 @@ func create(config *params.Config, cache, compress, listen bool) (*TorrentFS, er

inst.closeAll = make(chan any)

inst.wg.Add(1)
go inst.listen()
//inst.wg.Add(1)
//go inst.listen()
//inst.wg.Add(1)
//go inst.process()
//inst.init()
Expand Down Expand Up @@ -516,32 +518,45 @@ func (fs *TorrentFS) Start(srvr *p2p.Server) (err error) {

log.Info("Started nas", "config", fs, "mode", fs.config.Mode, "version", params.ProtocolVersion, "queue", fs.tunnel.Len(), "peers", fs.Neighbors())

err = fs.db.Init()
if err != nil {
return
}

err = fs.handler.Start()
if err != nil {
return
}

err = fs.monitor.Start()
if err != nil {
return
}

fs.init()

return
}

func (fs *TorrentFS) init() {
if fs.config.Mode != params.LAZY {
checkpoint := fs.chain().GetRoot(395964)
log.Info("Checkpoint loaded")
if checkpoint == nil {
for k, ok := range params.ColaFiles {
if ok {
fs.bitsflow(context.Background(), k, 1024*1024*1024)
fs.initOnce.Do(func() {
inst.wg.Add(1)
go inst.listen()

if fs.config.Mode != params.LAZY {
checkpoint := fs.chain().GetRoot(395964)
log.Info("Checkpoint loaded")
if checkpoint == nil {
for k, ok := range params.ColaFiles {
if ok {
fs.bitsflow(context.Background(), k, 1024*1024*1024)
}
}
}
}
}

log.Info("Init finished")
log.Info("Init finished")
})
}

// download and pub
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ require (
github.com/prometheus/client_golang v1.14.0
github.com/ucwong/filecache v1.0.5-0.20230402204106-c6ff7d7930ef
github.com/ucwong/go-ttlmap v1.0.2-0.20221020173635-331e7ddde2bb
github.com/ucwong/golang-kv v1.0.16-0.20230411171529-f805c762c87b
github.com/ucwong/golang-kv v1.0.16-0.20230412200348-60af39b46284
github.com/ucwong/shard v0.0.0-20230406003402-a003024d1f4f
github.com/urfave/cli/v2 v2.25.1
go.etcd.io/bbolt v1.3.7
Expand Down Expand Up @@ -61,7 +61,7 @@ require (
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cockroachdb/errors v1.9.1 // indirect
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
github.com/cockroachdb/pebble v0.0.0-20230411154528-23c3eabc394b // indirect
github.com/cockroachdb/pebble v0.0.0-20230412195903-4e468412c552 // indirect
github.com/cockroachdb/redact v1.1.3 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect
Expand Down
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,8 @@ github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZO
github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
github.com/cockroachdb/pebble v0.0.0-20230411154528-23c3eabc394b h1:ZRIAKpkJSYLzRLYqqGVHItpZNJTjDlIZ/aJZKb6rjUQ=
github.com/cockroachdb/pebble v0.0.0-20230411154528-23c3eabc394b/go.mod h1:9lRMC4XN3/BLPtIp6kAKwIaHu369NOf2rMucPzipz50=
github.com/cockroachdb/pebble v0.0.0-20230412195903-4e468412c552 h1:n4wDCFjAFEp9aWLJPKVfviVlFrx8GWYjO7UTeT0IJpQ=
github.com/cockroachdb/pebble v0.0.0-20230412195903-4e468412c552/go.mod h1:9lRMC4XN3/BLPtIp6kAKwIaHu369NOf2rMucPzipz50=
github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ=
github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
Expand Down Expand Up @@ -575,8 +575,8 @@ github.com/ucwong/filecache v1.0.5-0.20230402204106-c6ff7d7930ef h1:bbArCHS5UrTT
github.com/ucwong/filecache v1.0.5-0.20230402204106-c6ff7d7930ef/go.mod h1:ddwX+NCjMZPdpzcGh1fcEbNTUTCtKgt2hC2rqvmLKgA=
github.com/ucwong/go-ttlmap v1.0.2-0.20221020173635-331e7ddde2bb h1:dVZH3AH9f7zB3VBmsjn25B7lfcAyMP4QxdFYTrfj7tg=
github.com/ucwong/go-ttlmap v1.0.2-0.20221020173635-331e7ddde2bb/go.mod h1:3yswsBsVuwsOjDvFfC5Na9XSEf4HC7mj3W3g6jvSY/s=
github.com/ucwong/golang-kv v1.0.16-0.20230411171529-f805c762c87b h1:r7oPYWNwIt135mJ/MSjYp6+b6eCW+fjTityVVjnKMS8=
github.com/ucwong/golang-kv v1.0.16-0.20230411171529-f805c762c87b/go.mod h1:rzZOr9+8NpKKLywQACXp2oG78QMV7XTzgedjnQ19eV4=
github.com/ucwong/golang-kv v1.0.16-0.20230412200348-60af39b46284 h1:GbObPT3x5fgGJo8owcQmJTT6Ir5G/K3AkYXzbqmmeaM=
github.com/ucwong/golang-kv v1.0.16-0.20230412200348-60af39b46284/go.mod h1:k6qOzS8yK+ZSVuN560N9em5kf1wqvr/b961FE8E+Kd4=
github.com/ucwong/shard v0.0.0-20230406003402-a003024d1f4f h1:q9Y7MB/zxaHiR3Bxp8/qp9iRju/2cCFIE2RM1o79NWo=
github.com/ucwong/shard v0.0.0-20230406003402-a003024d1f4f/go.mod h1:Y/x75znJgnXLUzsTENLnGpiUPVEeizYyg6qwpx9M3T0=
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
Expand Down

0 comments on commit 61dadb1

Please sign in to comment.