disable/enable retrieval deal consideration via config
This commit is contained in:
parent
7d9f9ba756
commit
ef0abf2b98
@ -313,6 +313,8 @@ func Online() Option {
|
|||||||
Override(new(gen.WinningPoStProver), storage.NewWinningPoStProver),
|
Override(new(gen.WinningPoStProver), storage.NewWinningPoStProver),
|
||||||
Override(new(*miner.Miner), modules.SetupBlockProducer),
|
Override(new(*miner.Miner), modules.SetupBlockProducer),
|
||||||
|
|
||||||
|
Override(new(dtypes.AcceptingRetrievalDealsConfigFunc), modules.NewAcceptingRetrievalDealsConfigFunc),
|
||||||
|
Override(new(dtypes.SetAcceptingRetrievalDealsConfigFunc), modules.NewSetAcceptingRetrievalDealsConfigFunc),
|
||||||
Override(new(dtypes.AcceptingStorageDealsConfigFunc), modules.NewAcceptingStorageDealsConfigFunc),
|
Override(new(dtypes.AcceptingStorageDealsConfigFunc), modules.NewAcceptingStorageDealsConfigFunc),
|
||||||
Override(new(dtypes.SetAcceptingStorageDealsConfigFunc), modules.NewSetAcceptingStorageDealsConfigFunc),
|
Override(new(dtypes.SetAcceptingStorageDealsConfigFunc), modules.NewSetAcceptingStorageDealsConfigFunc),
|
||||||
Override(new(dtypes.StorageDealPieceCidBlocklistConfigFunc), modules.NewStorageDealPieceCidBlocklistConfigFunc),
|
Override(new(dtypes.StorageDealPieceCidBlocklistConfigFunc), modules.NewStorageDealPieceCidBlocklistConfigFunc),
|
||||||
|
@ -35,6 +35,7 @@ type StorageMiner struct {
|
|||||||
|
|
||||||
type DealmakingConfig struct {
|
type DealmakingConfig struct {
|
||||||
AcceptingStorageDeals bool
|
AcceptingStorageDeals bool
|
||||||
|
AcceptingRetrievalDeals bool
|
||||||
PieceCidBlocklist []cid.Cid
|
PieceCidBlocklist []cid.Cid
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,6 +125,7 @@ func DefaultStorageMiner() *StorageMiner {
|
|||||||
|
|
||||||
Dealmaking: DealmakingConfig{
|
Dealmaking: DealmakingConfig{
|
||||||
AcceptingStorageDeals: true,
|
AcceptingStorageDeals: true,
|
||||||
|
AcceptingRetrievalDeals: true,
|
||||||
PieceCidBlocklist: []cid.Cid{},
|
PieceCidBlocklist: []cid.Cid{},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,14 @@ type AcceptingStorageDealsConfigFunc func() (bool, error)
|
|||||||
// storage deal acceptance.
|
// storage deal acceptance.
|
||||||
type SetAcceptingStorageDealsConfigFunc func(bool) error
|
type SetAcceptingStorageDealsConfigFunc func(bool) error
|
||||||
|
|
||||||
|
// AcceptingRetrievalDealsFunc is a function which reads from miner config to
|
||||||
|
// determine if the user has disabled retrieval acceptance (or not).
|
||||||
|
type AcceptingRetrievalDealsConfigFunc func() (bool, error)
|
||||||
|
|
||||||
|
// SetAcceptingRetrievalDealsFunc is a function which is used to disable or enable
|
||||||
|
// retrieval deal acceptance.
|
||||||
|
type SetAcceptingRetrievalDealsConfigFunc func(bool) error
|
||||||
|
|
||||||
// StorageDealPieceCidBlocklistConfigFunc is a function which reads from miner config
|
// StorageDealPieceCidBlocklistConfigFunc is a function which reads from miner config
|
||||||
// to obtain a list of CIDs for which the storage miner will not accept storage
|
// to obtain a list of CIDs for which the storage miner will not accept storage
|
||||||
// proposals.
|
// proposals.
|
||||||
|
@ -357,14 +357,31 @@ func StorageProvider(minerAddress dtypes.MinerAddress, ffiConfig *ffiwrapper.Con
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RetrievalProvider creates a new retrieval provider attached to the provider blockstore
|
// RetrievalProvider creates a new retrieval provider attached to the provider blockstore
|
||||||
func RetrievalProvider(h host.Host, miner *storage.Miner, sealer sectorstorage.SectorManager, full lapi.FullNode, ds dtypes.MetadataDS, pieceStore dtypes.ProviderPieceStore, ibs dtypes.StagingBlockstore) (retrievalmarket.RetrievalProvider, error) {
|
func RetrievalProvider(h host.Host, miner *storage.Miner, sealer sectorstorage.SectorManager, full lapi.FullNode, ds dtypes.MetadataDS, pieceStore dtypes.ProviderPieceStore, ibs dtypes.StagingBlockstore, isAcceptingFunc dtypes.AcceptingRetrievalDealsConfigFunc) (retrievalmarket.RetrievalProvider, error) {
|
||||||
adapter := retrievaladapter.NewRetrievalProviderNode(miner, sealer, full)
|
adapter := retrievaladapter.NewRetrievalProviderNode(miner, sealer, full)
|
||||||
address, err := minerAddrFromDS(ds)
|
|
||||||
|
maddr, err := minerAddrFromDS(ds)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
network := rmnet.NewFromLibp2pHost(h)
|
|
||||||
return retrievalimpl.NewProvider(address, adapter, network, pieceStore, ibs, namespace.Wrap(ds, datastore.NewKey("/retrievals/provider")))
|
netwk := rmnet.NewFromLibp2pHost(h)
|
||||||
|
|
||||||
|
opt := retrievalimpl.DealDeciderOpt(func(ctx context.Context, state retrievalmarket.ProviderDealState) (bool, string, error) {
|
||||||
|
b, err := isAcceptingFunc()
|
||||||
|
if err != nil {
|
||||||
|
return false, "miner error", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !b {
|
||||||
|
log.Warn("retrieval deal acceptance disabled; rejecting retrieval deal proposal from client")
|
||||||
|
return false, "miner is not accepting retrieval deals", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return true, "", nil
|
||||||
|
})
|
||||||
|
|
||||||
|
return retrievalimpl.NewProvider(maddr, adapter, netwk, pieceStore, ibs, namespace.Wrap(ds, datastore.NewKey("/retrievals/provider")), opt)
|
||||||
}
|
}
|
||||||
|
|
||||||
func SectorStorage(mctx helpers.MetricsCtx, lc fx.Lifecycle, ls stores.LocalStorage, si stores.SectorIndex, cfg *ffiwrapper.Config, sc sectorstorage.SealerConfig, urls sectorstorage.URLs, sa sectorstorage.StorageAuth) (*sectorstorage.Manager, error) {
|
func SectorStorage(mctx helpers.MetricsCtx, lc fx.Lifecycle, ls stores.LocalStorage, si stores.SectorIndex, cfg *ffiwrapper.Config, sc sectorstorage.SealerConfig, urls sectorstorage.URLs, sa sectorstorage.StorageAuth) (*sectorstorage.Manager, error) {
|
||||||
@ -399,6 +416,24 @@ func StorageAuth(ctx helpers.MetricsCtx, ca lapi.Common) (sectorstorage.StorageA
|
|||||||
return sectorstorage.StorageAuth(headers), nil
|
return sectorstorage.StorageAuth(headers), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewAcceptingRetrievalDealsConfigFunc(r repo.LockedRepo) (dtypes.AcceptingRetrievalDealsConfigFunc, error) {
|
||||||
|
return func() (out bool, err error) {
|
||||||
|
err = readCfg(r, func(cfg *config.StorageMiner) {
|
||||||
|
out = cfg.Dealmaking.AcceptingRetrievalDeals
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSetAcceptingRetrievalDealsConfigFunc(r repo.LockedRepo) (dtypes.SetAcceptingRetrievalDealsConfigFunc, error) {
|
||||||
|
return func(b bool) (err error) {
|
||||||
|
err = mutateCfg(r, func(cfg *config.StorageMiner) {
|
||||||
|
cfg.Dealmaking.AcceptingRetrievalDeals = b
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func NewAcceptingStorageDealsConfigFunc(r repo.LockedRepo) (dtypes.AcceptingStorageDealsConfigFunc, error) {
|
func NewAcceptingStorageDealsConfigFunc(r repo.LockedRepo) (dtypes.AcceptingStorageDealsConfigFunc, error) {
|
||||||
return func() (out bool, err error) {
|
return func() (out bool, err error) {
|
||||||
err = readCfg(r, func(cfg *config.StorageMiner) {
|
err = readCfg(r, func(cfg *config.StorageMiner) {
|
||||||
|
Loading…
Reference in New Issue
Block a user