crdt: fix: Create the ipfslite peer before peermanager bootstrapping

Bitswap needs to exist before connections are opened!

Fixes #798
This commit is contained in:
Hector Sanjuan 2019-06-07 23:55:35 +02:00
parent 451b91d8d1
commit f0b7d2a839

View File

@ -63,6 +63,7 @@ type Consensus struct {
state state.State
crdt *crdt.Datastore
ipfs *ipfslite.Peer
dht *dht.IpfsDHT
pubsub *pubsub.PubSub
@ -92,6 +93,25 @@ func New(
ctx, cancel := context.WithCancel(context.Background())
var blocksDatastore ds.Batching
ns := ds.NewKey(cfg.DatastoreNamespace)
blocksDatastore = namespace.Wrap(store, ns.ChildString(blocksNs))
ipfs, err := ipfslite.New(
ctx,
blocksDatastore,
host,
dht,
&ipfslite.Config{
Offline: false,
},
)
if err != nil {
logger.Errorf("error creating ipfs-lite: %s", err)
cancel()
return nil, err
}
css := &Consensus{
ctx: ctx,
cancel: cancel,
@ -100,7 +120,8 @@ func New(
peerManager: pstoremgr.New(ctx, host, ""),
dht: dht,
store: store,
namespace: ds.NewKey(cfg.DatastoreNamespace),
ipfs: ipfs,
namespace: ns,
pubsub: pubsub,
rpcReady: make(chan struct{}, 1),
readyCh: make(chan struct{}, 1),
@ -147,23 +168,6 @@ func (css *Consensus) setup() {
logger.Errorf("error registering topic validator: %s", err)
}
var blocksDatastore ds.Batching
blocksDatastore = namespace.Wrap(css.store, css.namespace.ChildString(blocksNs))
ipfs, err := ipfslite.New(
css.ctx,
blocksDatastore,
css.host,
css.dht,
&ipfslite.Config{
Offline: false,
},
)
if err != nil {
logger.Errorf("error creating ipfs-lite: %s", err)
return
}
broadcaster, err := crdt.NewPubSubBroadcaster(
css.ctx,
css.pubsub,
@ -231,7 +235,7 @@ func (css *Consensus) setup() {
crdt, err := crdt.New(
css.store,
css.namespace,
ipfs,
css.ipfs,
broadcaster,
opts,
)