@cryptotaxi247 / kubo / commits / 9895af2df

feat(core) using WriteCached, cache Puts for exchange and blockservice

License: MIT Signed-off-by: Brian Tiger Chow <brian@perfmode.com>

Brian Tiger Chow committed Nov 30, 2014 at 21:44 UTC 9895af2dffddcd38c2e0ee3497a2ef3b84867026
1 file changed +6 -5
core/core.go
+6 -5
@@ -8,7 +8,7 @@ import (
8 b58 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-base58"
9 ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
10
11 - blockstore "github.com/jbenet/go-ipfs/blocks/blockstore"
11 + bstore "github.com/jbenet/go-ipfs/blocks/blockstore"
12 bserv "github.com/jbenet/go-ipfs/blockservice"
13 config "github.com/jbenet/go-ipfs/config"
14 diag "github.com/jbenet/go-ipfs/diagnostics"
@@ -35,6 +35,7 @@ import (
35 )
36
37 const IpnsValidatorTag = "ipns"
38 +const kSizeBlockstoreWriteCache = 100
39
40 var log = eventlog.Logger("core")
41
@@ -130,7 +131,8 @@ func NewIpfsNode(cfg *config.Config, online bool) (n *IpfsNode, err error) {
131 return nil, debugerror.Wrap(err)
132 }
133
133 - n.Exchange = offline.Exchange(blockstore.NewBlockstore(n.Datastore))
134 + blockstore, err := bstore.WriteCached(bstore.NewBlockstore(n.Datastore), kSizeBlockstoreWriteCache)
135 + n.Exchange = offline.Exchange(blockstore)
136
137 // setup online services
138 if online {
@@ -174,16 +176,15 @@ func NewIpfsNode(cfg *config.Config, online bool) (n *IpfsNode, err error) {
176 // setup exchange service
177 const alwaysSendToPeer = true // use YesManStrategy
178 bitswapNetwork := bsnet.NewFromIpfsNetwork(exchangeService, n.Network)
177 - bstore := blockstore.NewBlockstore(n.Datastore)
179
179 - n.Exchange = bitswap.New(ctx, n.Identity, bitswapNetwork, n.Routing, bstore, alwaysSendToPeer)
180 + n.Exchange = bitswap.New(ctx, n.Identity, bitswapNetwork, n.Routing, blockstore, alwaysSendToPeer)
181
182 go initConnections(ctx, n.Config, n.Peerstore, dhtRouting)
183 }
184
185 // TODO(brian): when offline instantiate the BlockService with a bitswap
186 // session that simply doesn't return blocks
186 - n.Blocks, err = bserv.New(blockstore.NewBlockstore(n.Datastore), n.Exchange)
187 + n.Blocks, err = bserv.New(blockstore, n.Exchange)
188 if err != nil {
189 return nil, debugerror.Wrap(err)
190 }