From 1ab5ec387ac7023dbb339eb5d6ae148c0ecfc749 Mon Sep 17 00:00:00 2001 From: zelig Date: Tue, 12 May 2015 16:21:44 +0200 Subject: [PATCH] start hive and cademlia in netstore initializer --- bzz/hive.go | 5 ++++- bzz/netstore.go | 17 +++++++++++++---- eth/backend.go | 22 +++++++++++++--------- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/bzz/hive.go b/bzz/hive.go index 04236b946b..52cf8efdf7 100644 --- a/bzz/hive.go +++ b/bzz/hive.go @@ -1,6 +1,8 @@ package bzz import ( + // "fmt" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/kademlia" ) @@ -38,7 +40,8 @@ func (self *hive) start() (err error) { self.kad.Start() err = self.kad.Load(self.path) if err != nil { - return + dpaLogger.Warnf("Warning: error reading kademlia node db (skipping): %v", err) + err = nil } // go func() { // for { diff --git a/bzz/netstore.go b/bzz/netstore.go index 73f241a7e6..7f803adb8f 100644 --- a/bzz/netstore.go +++ b/bzz/netstore.go @@ -45,14 +45,23 @@ type requestStatus struct { C chan bool } -func NewNetStore(addr common.Hash, path, hivepath string) *NetStore { - dbStore, _ := newDbStore(path) - return &NetStore{ +func NewNetStore(addr common.Hash, path, hivepath string) (netstore *NetStore, err error) { + dbStore, err := newDbStore(path) + if err != nil { + return + } + hive := newHive(addr, hivepath) + netstore = &NetStore{ localStore: &localStore{ memStore: newMemStore(dbStore), dbStore: dbStore, - }, hive: newHive(addr, hivepath), + }, hive: hive, } + err = hive.start() + if err != nil { + return + } + return } func (self *NetStore) Put(entry *Chunk) { diff --git a/eth/backend.go b/eth/backend.go index 95d6c339ac..6250838f92 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -302,16 +302,20 @@ func New(config *Config) (*Ethereum, error) { eth.net.ListenAddr = ":" + config.Port } if config.Bzz { - netStore := bzz.NewNetStore(eth.net.Self().Sha(), path.Join(config.DataDir, "bzz"), path.Join(config.DataDir, "bzzpeers.json")) - chunker := &bzz.TreeChunker{} - chunker.Init() - dpa := &bzz.DPA{ - Chunker: chunker, - ChunkStore: netStore, + netStore, err := bzz.NewNetStore(eth.net.Self().Sha(), path.Join(config.DataDir, "bzz"), path.Join(config.DataDir, "bzzpeers.json")) + if err != nil { + glog.V(logger.Warn).Infof("BZZ: error creating net store: %v. Protocol skipped", err) + } else { + chunker := &bzz.TreeChunker{} + chunker.Init() + dpa := &bzz.DPA{ + Chunker: chunker, + ChunkStore: netStore, + } + dpa.Start() + protocols = append(protocols, bzz.BzzProtocol(netStore, eth.net.Self)) + go bzz.StartHttpServer(dpa) } - dpa.Start() - protocols = append(protocols, bzz.BzzProtocol(netStore, eth.net.Self)) - go bzz.StartHttpServer(dpa) } if config.Shh {