write bitswap blocks into a temporary, in-memory block cache
If they end up validating, we'll write them back to the underlying blockstore. Otherwise, there's no reason to keep them.
This commit is contained in:
parent
15fe998c68
commit
ddade32bd3
@ -4,6 +4,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"os"
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/ipfs/go-bitswap"
|
"github.com/ipfs/go-bitswap"
|
||||||
"github.com/ipfs/go-bitswap/network"
|
"github.com/ipfs/go-bitswap/network"
|
||||||
@ -30,6 +31,8 @@ import (
|
|||||||
"github.com/filecoin-project/lotus/chain/types"
|
"github.com/filecoin-project/lotus/chain/types"
|
||||||
"github.com/filecoin-project/lotus/chain/vm"
|
"github.com/filecoin-project/lotus/chain/vm"
|
||||||
"github.com/filecoin-project/lotus/lib/blockstore"
|
"github.com/filecoin-project/lotus/lib/blockstore"
|
||||||
|
"github.com/filecoin-project/lotus/lib/bufbstore"
|
||||||
|
"github.com/filecoin-project/lotus/lib/timedbs"
|
||||||
"github.com/filecoin-project/lotus/node/modules/dtypes"
|
"github.com/filecoin-project/lotus/node/modules/dtypes"
|
||||||
"github.com/filecoin-project/lotus/node/modules/helpers"
|
"github.com/filecoin-project/lotus/node/modules/helpers"
|
||||||
"github.com/filecoin-project/lotus/node/repo"
|
"github.com/filecoin-project/lotus/node/repo"
|
||||||
@ -41,8 +44,15 @@ func ChainBitswap(mctx helpers.MetricsCtx, lc fx.Lifecycle, host host.Host, rt r
|
|||||||
bitswapNetwork := network.NewFromIpfsHost(host, rt, network.Prefix("/chain"))
|
bitswapNetwork := network.NewFromIpfsHost(host, rt, network.Prefix("/chain"))
|
||||||
bitswapOptions := []bitswap.Option{bitswap.ProvideEnabled(false)}
|
bitswapOptions := []bitswap.Option{bitswap.ProvideEnabled(false)}
|
||||||
|
|
||||||
|
// Write all incoming bitswap blocks into a temporary blockstore for two
|
||||||
|
// block times. If they validate, they'll be persisted later.
|
||||||
|
cache := timedbs.NewTimedCacheBS(2 * time.Duration(build.BlockDelaySecs) * time.Second)
|
||||||
|
lc.Append(fx.Hook{OnStop: cache.Stop, OnStart: cache.Start})
|
||||||
|
|
||||||
|
bitswapBs := bufbstore.NewTieredBstore(bs, cache)
|
||||||
|
|
||||||
// Use just exch.Close(), closing the context is not needed
|
// Use just exch.Close(), closing the context is not needed
|
||||||
exch := bitswap.New(mctx, bitswapNetwork, bs, bitswapOptions...)
|
exch := bitswap.New(mctx, bitswapNetwork, bitswapBs, bitswapOptions...)
|
||||||
lc.Append(fx.Hook{
|
lc.Append(fx.Hook{
|
||||||
OnStop: func(ctx context.Context) error {
|
OnStop: func(ctx context.Context) error {
|
||||||
return exch.Close()
|
return exch.Close()
|
||||||
|
Loading…
Reference in New Issue
Block a user