diff --git a/node/builder.go b/node/builder.go index 5810910a7b4..6c42aad2d22 100644 --- a/node/builder.go +++ b/node/builder.go @@ -3,7 +3,6 @@ package node import ( "context" "errors" - "os" "time" metricsi "github.com/ipfs/go-metrics-interface" @@ -293,59 +292,9 @@ func Repo(r repo.Repo) Option { if err != nil { return err } - - var cfg *config.Chainstore - switch settings.nodeType { - case repo.FullNode: - cfgp, ok := c.(*config.FullNode) - if !ok { - return xerrors.Errorf("invalid config from repo, got: %T", c) - } - cfg = &cfgp.Chainstore - default: - cfg = &config.Chainstore{} - } - return Options( Override(new(repo.LockedRepo), modules.LockedRepo(lr)), // module handles closing - Override(new(dtypes.UniversalBlockstore), modules.UniversalBlockstore), - - If(cfg.EnableSplitstore, - If(cfg.Splitstore.ColdStoreType == "universal", - Override(new(dtypes.ColdBlockstore), From(new(dtypes.UniversalBlockstore)))), - If(cfg.Splitstore.ColdStoreType == "discard", - Override(new(dtypes.ColdBlockstore), modules.DiscardColdBlockstore)), - If(cfg.Splitstore.HotStoreType == "badger", - Override(new(dtypes.HotBlockstore), modules.BadgerHotBlockstore)), - Override(new(dtypes.SplitBlockstore), modules.SplitBlockstore(cfg)), - Override(new(dtypes.BasicChainBlockstore), modules.ChainSplitBlockstore), - Override(new(dtypes.BasicStateBlockstore), modules.StateSplitBlockstore), - Override(new(dtypes.BaseBlockstore), From(new(dtypes.SplitBlockstore))), - Override(new(dtypes.ExposedBlockstore), modules.ExposedSplitBlockstore), - Override(new(dtypes.GCReferenceProtector), modules.SplitBlockstoreGCReferenceProtector), - ), - If(!cfg.EnableSplitstore, - Override(new(dtypes.BasicChainBlockstore), modules.ChainFlatBlockstore), - Override(new(dtypes.BasicStateBlockstore), modules.StateFlatBlockstore), - Override(new(dtypes.BaseBlockstore), From(new(dtypes.UniversalBlockstore))), - Override(new(dtypes.ExposedBlockstore), From(new(dtypes.UniversalBlockstore))), - Override(new(dtypes.GCReferenceProtector), modules.NoopGCReferenceProtector), - ), - - Override(new(dtypes.ChainBlockstore), From(new(dtypes.BasicChainBlockstore))), - Override(new(dtypes.StateBlockstore), From(new(dtypes.BasicStateBlockstore))), - - If(os.Getenv("LOTUS_ENABLE_CHAINSTORE_FALLBACK") == "1", - Override(new(dtypes.ChainBlockstore), modules.FallbackChainBlockstore), - Override(new(dtypes.StateBlockstore), modules.FallbackStateBlockstore), - Override(SetupFallbackBlockstoresKey, modules.InitFallbackBlockstores), - ), - - Override(new(dtypes.ClientImportMgr), modules.ClientImportMgr), - - Override(new(dtypes.ClientBlockstore), modules.ClientBlockstore), - Override(new(ci.PrivKey), lp2p.PrivKey), Override(new(ci.PubKey), ci.PrivKey.GetPublic), Override(new(peer.ID), peer.IDFromPublicKey), diff --git a/node/builder_chain.go b/node/builder_chain.go index f8eeaecb37f..a9899484683 100644 --- a/node/builder_chain.go +++ b/node/builder_chain.go @@ -1,6 +1,8 @@ package node import ( + "os" + "go.uber.org/fx" "golang.org/x/xerrors" @@ -167,6 +169,43 @@ func ConfigFullNode(c interface{}) Option { return Options( ConfigCommon(&cfg.Common, enableLibp2pNode), + Override(new(dtypes.UniversalBlockstore), modules.UniversalBlockstore), + + If(cfg.Chainstore.EnableSplitstore, + If(cfg.Chainstore.Splitstore.ColdStoreType == "universal", + Override(new(dtypes.ColdBlockstore), From(new(dtypes.UniversalBlockstore)))), + If(cfg.Chainstore.Splitstore.ColdStoreType == "discard", + Override(new(dtypes.ColdBlockstore), modules.DiscardColdBlockstore)), + If(cfg.Chainstore.Splitstore.HotStoreType == "badger", + Override(new(dtypes.HotBlockstore), modules.BadgerHotBlockstore)), + Override(new(dtypes.SplitBlockstore), modules.SplitBlockstore(&cfg.Chainstore)), + Override(new(dtypes.BasicChainBlockstore), modules.ChainSplitBlockstore), + Override(new(dtypes.BasicStateBlockstore), modules.StateSplitBlockstore), + Override(new(dtypes.BaseBlockstore), From(new(dtypes.SplitBlockstore))), + Override(new(dtypes.ExposedBlockstore), modules.ExposedSplitBlockstore), + Override(new(dtypes.GCReferenceProtector), modules.SplitBlockstoreGCReferenceProtector), + ), + If(!cfg.Chainstore.EnableSplitstore, + Override(new(dtypes.BasicChainBlockstore), modules.ChainFlatBlockstore), + Override(new(dtypes.BasicStateBlockstore), modules.StateFlatBlockstore), + Override(new(dtypes.BaseBlockstore), From(new(dtypes.UniversalBlockstore))), + Override(new(dtypes.ExposedBlockstore), From(new(dtypes.UniversalBlockstore))), + Override(new(dtypes.GCReferenceProtector), modules.NoopGCReferenceProtector), + ), + + Override(new(dtypes.ChainBlockstore), From(new(dtypes.BasicChainBlockstore))), + Override(new(dtypes.StateBlockstore), From(new(dtypes.BasicStateBlockstore))), + + If(os.Getenv("LOTUS_ENABLE_CHAINSTORE_FALLBACK") == "1", + Override(new(dtypes.ChainBlockstore), modules.FallbackChainBlockstore), + Override(new(dtypes.StateBlockstore), modules.FallbackStateBlockstore), + Override(SetupFallbackBlockstoresKey, modules.InitFallbackBlockstores), + ), + + Override(new(dtypes.ClientImportMgr), modules.ClientImportMgr), + + Override(new(dtypes.ClientBlockstore), modules.ClientBlockstore), + If(cfg.Client.UseIpfs, Override(new(dtypes.ClientBlockstore), modules.IpfsClientBlockstore(ipfsMaddr, cfg.Client.IpfsOnlineMode)), Override(new(storagemarket.BlockstoreAccessor), modules.IpfsStorageBlockstoreAccessor),