connect miner to full node , only when running markets

This commit is contained in:
Anton Evangelatov 2021-06-30 13:52:19 +02:00
parent 4f0a96c9c7
commit 3aa6d03cc1
7 changed files with 42 additions and 21 deletions

View File

@ -22,7 +22,6 @@ import (
"github.com/filecoin-project/lotus/lib/ulimit" "github.com/filecoin-project/lotus/lib/ulimit"
"github.com/filecoin-project/lotus/metrics" "github.com/filecoin-project/lotus/metrics"
"github.com/filecoin-project/lotus/node" "github.com/filecoin-project/lotus/node"
"github.com/filecoin-project/lotus/node/config"
"github.com/filecoin-project/lotus/node/modules/dtypes" "github.com/filecoin-project/lotus/node/modules/dtypes"
"github.com/filecoin-project/lotus/node/repo" "github.com/filecoin-project/lotus/node/repo"
) )
@ -44,6 +43,11 @@ var runCmd = &cli.Command{
Name: "nosync", Name: "nosync",
Usage: "don't check full-node sync status", Usage: "don't check full-node sync status",
}, },
&cli.BoolFlag{
Name: "enable-markets",
Usage: "",
Value: true,
},
&cli.BoolFlag{ &cli.BoolFlag{
Name: "manage-fdlimit", Name: "manage-fdlimit",
Usage: "manage open file limit", Usage: "manage open file limit",
@ -143,14 +147,15 @@ var runCmd = &cli.Command{
return xerrors.Errorf("getting API endpoint: %w", err) return xerrors.Errorf("getting API endpoint: %w", err)
} }
lr, _ := r.Lock(repo.StorageMiner) //lr, _ := r.Lock(repo.StorageMiner)
c, _ := lr.Config() //c, _ := lr.Config()
cfg, ok := c.(*config.StorageMiner) //cfg, ok := c.(*config.StorageMiner)
if !ok { //if !ok {
log.Fatalf("invalid config from repo, got: %T", c) //log.Fatalf("invalid config from repo, got: %T", c)
} //}
if cfg.Subsystems.EnableStorageMarket { //if cfg.Subsystems.EnableStorageMarket {
if cctx.Bool("enable-markets") {
log.Infof("Bootstrapping libp2p network with full node") log.Infof("Bootstrapping libp2p network with full node")
// Bootstrap with full node // Bootstrap with full node
@ -166,7 +171,7 @@ var runCmd = &cli.Command{
log.Infof("No markets subsystem enabled, so no libp2p network bootstrapping") log.Infof("No markets subsystem enabled, so no libp2p network bootstrapping")
} }
_ = lr.Close() //_ = lr.Close()
log.Infof("Remote version %s", v) log.Infof("Remote version %s", v)

View File

@ -46,11 +46,11 @@ func TestDealWithMarketAndMinerNode(t *testing.T) {
dh := kit.NewDealHarness(t, client, main, market) dh := kit.NewDealHarness(t, client, main, market)
runConcurrentDeals(t, dh, fullDealCyclesOpts{ dh.RunConcurrentDeals(kit.RunConcurrentDealsOpts{
n: n, N: n,
fastRetrieval: fastRetrieval, FastRetrieval: fastRetrieval,
carExport: carExport, CarExport: carExport,
startEpoch: startEpoch, StartEpoch: startEpoch,
}) })
} }
@ -124,7 +124,7 @@ func TestSimultenousTransferLimit(t *testing.T) {
node.ApplyIf(node.IsType(repo.StorageMiner), node.Override(new(dtypes.StagingGraphsync), modules.StagingGraphsync(2))), node.ApplyIf(node.IsType(repo.StorageMiner), node.Override(new(dtypes.StagingGraphsync), modules.StagingGraphsync(2))),
)) ))
ens.InterconnectAll().BeginMining(blockTime) ens.InterconnectAll().BeginMining(blockTime)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())

View File

@ -28,7 +28,7 @@ func TestOfflineDealFlow(t *testing.T) {
client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs()) client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs())
ens.InterconnectAll().BeginMining(blocktime) ens.InterconnectAll().BeginMining(blocktime)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
// Create a random file and import on the client. // Create a random file and import on the client.
res, inFile := client.CreateImportFile(ctx, 1, 0) res, inFile := client.CreateImportFile(ctx, 1, 0)

View File

@ -30,7 +30,7 @@ func TestFirstDealEnablesMining(t *testing.T) {
ctx := context.Background() ctx := context.Background()
dh := kit.NewDealHarness(t, &client, &provider) dh := kit.NewDealHarness(t, &client, &provider, &provider)
ref, _ := client.CreateImportFile(ctx, 5, 0) ref, _ := client.CreateImportFile(ctx, 5, 0)

View File

@ -35,7 +35,7 @@ func TestQuotePriceForUnsealedRetrieval(t *testing.T) {
err = miner.MarketSetRetrievalAsk(ctx, ask) err = miner.MarketSetRetrievalAsk(ctx, ask)
require.NoError(t, err) require.NoError(t, err)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
deal1, res1, _ := dh.MakeOnlineDeal(ctx, kit.MakeFullDealParams{Rseed: 6}) deal1, res1, _ := dh.MakeOnlineDeal(ctx, kit.MakeFullDealParams{Rseed: 6})
@ -123,7 +123,7 @@ func TestZeroPricePerByteRetrieval(t *testing.T) {
err = miner.MarketSetRetrievalAsk(ctx, ask) err = miner.MarketSetRetrievalAsk(ctx, ask)
require.NoError(t, err) require.NoError(t, err)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
dh.RunConcurrentDeals(kit.RunConcurrentDealsOpts{ dh.RunConcurrentDeals(kit.RunConcurrentDealsOpts{
N: 1, N: 1,
StartEpoch: startEpoch, StartEpoch: startEpoch,

View File

@ -38,7 +38,7 @@ func TestPublishDealsBatching(t *testing.T) {
client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs(), kit.ConstructorOpts(opts)) client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs(), kit.ConstructorOpts(opts))
ens.InterconnectAll().BeginMining(10 * time.Millisecond) ens.InterconnectAll().BeginMining(10 * time.Millisecond)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
// Starts a deal and waits until it's published // Starts a deal and waits until it's published
runDealTillPublish := func(rseed int) { runDealTillPublish := func(rseed int) {

View File

@ -54,6 +54,19 @@ func ConfigStorageMiner(c interface{}) Option {
return Error(xerrors.Errorf("invalid config from repo, got: %T", c)) return Error(xerrors.Errorf("invalid config from repo, got: %T", c))
} }
pricingConfig := cfg.Dealmaking.RetrievalPricing
if pricingConfig.Strategy == config.RetrievalPricingExternalMode {
if pricingConfig.External == nil {
return Error(xerrors.New("retrieval pricing policy has been to set to external but external policy config is nil"))
}
if pricingConfig.External.Path == "" {
return Error(xerrors.New("retrieval pricing policy has been to set to external but external script path is empty"))
}
} else if pricingConfig.Strategy != config.RetrievalPricingDefaultMode {
return Error(xerrors.New("retrieval pricing policy must be either default or external"))
}
enableLibp2pNode := cfg.Subsystems.EnableStorageMarket // we enable libp2p nodes if the storage market subsystem is enabled, otherwise we don't enableLibp2pNode := cfg.Subsystems.EnableStorageMarket // we enable libp2p nodes if the storage market subsystem is enabled, otherwise we don't
return Options( return Options(
@ -119,7 +132,7 @@ func ConfigStorageMiner(c interface{}) Option {
Override(new(dtypes.StagingMultiDstore), modules.StagingMultiDatastore), Override(new(dtypes.StagingMultiDstore), modules.StagingMultiDatastore),
Override(new(dtypes.StagingBlockstore), modules.StagingBlockstore), Override(new(dtypes.StagingBlockstore), modules.StagingBlockstore),
Override(new(dtypes.StagingDAG), modules.StagingDAG), Override(new(dtypes.StagingDAG), modules.StagingDAG),
Override(new(dtypes.StagingGraphsync), modules.StagingGraphsync), Override(new(dtypes.StagingGraphsync), modules.StagingGraphsync(cfg.Dealmaking.SimultaneousTransfers)),
Override(new(dtypes.ProviderPieceStore), modules.NewProviderPieceStore), Override(new(dtypes.ProviderPieceStore), modules.NewProviderPieceStore),
Override(new(*sectorblocks.SectorBlocks), sectorblocks.NewSectorBlocks), Override(new(*sectorblocks.SectorBlocks), sectorblocks.NewSectorBlocks),
@ -131,6 +144,7 @@ func ConfigStorageMiner(c interface{}) Option {
Default: &config.RetrievalPricingDefault{}, Default: &config.RetrievalPricingDefault{},
}, },
})), })),
Override(new(dtypes.RetrievalPricingFunc), modules.RetrievalPricingFunc(cfg.Dealmaking)),
// Markets (retrieval) // Markets (retrieval)
Override(new(retrievalmarket.RetrievalProviderNode), retrievaladapter.NewRetrievalProviderNode), Override(new(retrievalmarket.RetrievalProviderNode), retrievaladapter.NewRetrievalProviderNode),
@ -165,6 +179,8 @@ func ConfigStorageMiner(c interface{}) Option {
Override(new(dtypes.SetConsiderUnverifiedStorageDealsConfigFunc), modules.NewSetConsideringUnverifiedStorageDealsFunc), Override(new(dtypes.SetConsiderUnverifiedStorageDealsConfigFunc), modules.NewSetConsideringUnverifiedStorageDealsFunc),
Override(new(dtypes.SetExpectedSealDurationFunc), modules.NewSetExpectedSealDurationFunc), Override(new(dtypes.SetExpectedSealDurationFunc), modules.NewSetExpectedSealDurationFunc),
Override(new(dtypes.GetExpectedSealDurationFunc), modules.NewGetExpectedSealDurationFunc), Override(new(dtypes.GetExpectedSealDurationFunc), modules.NewGetExpectedSealDurationFunc),
Override(new(dtypes.SetMaxDealStartDelayFunc), modules.NewSetMaxDealStartDelayFunc),
Override(new(dtypes.GetMaxDealStartDelayFunc), modules.NewGetMaxDealStartDelayFunc),
If(cfg.Dealmaking.Filter != "", If(cfg.Dealmaking.Filter != "",
Override(new(dtypes.StorageDealFilter), modules.BasicDealFilter(dealfilter.CliStorageDealFilter(cfg.Dealmaking.Filter))), Override(new(dtypes.StorageDealFilter), modules.BasicDealFilter(dealfilter.CliStorageDealFilter(cfg.Dealmaking.Filter))),