propagate useLMDB option to splitstore through DI
This commit is contained in:
parent
923a3db4b0
commit
68b6f913c7
@ -25,5 +25,5 @@ func NewLiveSetEnv(path string, useLMDB bool) (LiveSetEnv, error) {
|
|||||||
return NewLMDBLiveSetEnv(filepath.Join(path, "sweep.lmdb"))
|
return NewLMDBLiveSetEnv(filepath.Join(path, "sweep.lmdb"))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, fmt.Errorf("FIXME: non-lmdb livesets")
|
return nil, fmt.Errorf("TODO: non-lmdb livesets")
|
||||||
}
|
}
|
||||||
|
@ -31,8 +31,6 @@ const (
|
|||||||
|
|
||||||
var baseEpochKey = dstore.NewKey("baseEpoch")
|
var baseEpochKey = dstore.NewKey("baseEpoch")
|
||||||
|
|
||||||
var UseLMDB = true // TODO snake this through DI
|
|
||||||
|
|
||||||
var log = logging.Logger("splitstore")
|
var log = logging.Logger("splitstore")
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -66,15 +64,15 @@ var _ bstore.Blockstore = (*SplitStore)(nil)
|
|||||||
// NewSplitStore creates a new SplitStore instance, given a path for the hotstore dbs and a cold
|
// NewSplitStore creates a new SplitStore instance, given a path for the hotstore dbs and a cold
|
||||||
// blockstore. The SplitStore must be attached to the ChainStore with Start in order to trigger
|
// blockstore. The SplitStore must be attached to the ChainStore with Start in order to trigger
|
||||||
// compaction.
|
// compaction.
|
||||||
func NewSplitStore(path string, ds dstore.Datastore, cold, hot bstore.Blockstore) (*SplitStore, error) {
|
func NewSplitStore(path string, ds dstore.Datastore, cold, hot bstore.Blockstore, useLMDB bool) (*SplitStore, error) {
|
||||||
// the tracking store
|
// the tracking store
|
||||||
snoop, err := NewTrackingStore(path, UseLMDB)
|
snoop, err := NewTrackingStore(path, useLMDB)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// the liveset env
|
// the liveset env
|
||||||
env, err := NewLiveSetEnv(path, UseLMDB)
|
env, err := NewLiveSetEnv(path, useLMDB)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
snoop.Close() //nolint:errcheck
|
snoop.Close() //nolint:errcheck
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -615,7 +615,7 @@ func Repo(r repo.Repo) Option {
|
|||||||
Override(new(dtypes.HotBlockstore), modules.LMDBHotBlockstore)),
|
Override(new(dtypes.HotBlockstore), modules.LMDBHotBlockstore)),
|
||||||
If(!cfg.UseLMDB,
|
If(!cfg.UseLMDB,
|
||||||
Override(new(dtypes.HotBlockstore), modules.BadgerHotBlockstore)),
|
Override(new(dtypes.HotBlockstore), modules.BadgerHotBlockstore)),
|
||||||
Override(new(dtypes.SplitBlockstore), modules.SplitBlockstore),
|
Override(new(dtypes.SplitBlockstore), modules.SplitBlockstore(cfg)),
|
||||||
Override(new(dtypes.ChainBlockstore), modules.ChainSplitBlockstore),
|
Override(new(dtypes.ChainBlockstore), modules.ChainSplitBlockstore),
|
||||||
Override(new(dtypes.StateBlockstore), modules.StateSplitBlockstore),
|
Override(new(dtypes.StateBlockstore), modules.StateSplitBlockstore),
|
||||||
Override(new(dtypes.BaseBlockstore), From(new(dtypes.SplitBlockstore))),
|
Override(new(dtypes.BaseBlockstore), From(new(dtypes.SplitBlockstore))),
|
||||||
|
@ -15,6 +15,7 @@ import (
|
|||||||
|
|
||||||
"github.com/filecoin-project/lotus/blockstore"
|
"github.com/filecoin-project/lotus/blockstore"
|
||||||
"github.com/filecoin-project/lotus/chain/store/splitstore"
|
"github.com/filecoin-project/lotus/chain/store/splitstore"
|
||||||
|
"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/modules/helpers"
|
"github.com/filecoin-project/lotus/node/modules/helpers"
|
||||||
"github.com/filecoin-project/lotus/node/repo"
|
"github.com/filecoin-project/lotus/node/repo"
|
||||||
@ -95,23 +96,25 @@ func BadgerHotBlockstore(lc fx.Lifecycle, r repo.LockedRepo) (dtypes.HotBlocksto
|
|||||||
return hot, err
|
return hot, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func SplitBlockstore(lc fx.Lifecycle, r repo.LockedRepo, ds dtypes.MetadataDS, cold dtypes.ColdBlockstore, hot dtypes.HotBlockstore) (dtypes.SplitBlockstore, error) {
|
func SplitBlockstore(cfg *config.Blockstore) func(lc fx.Lifecycle, r repo.LockedRepo, ds dtypes.MetadataDS, cold dtypes.ColdBlockstore, hot dtypes.HotBlockstore) (dtypes.SplitBlockstore, error) {
|
||||||
path, err := r.SplitstorePath()
|
return func(lc fx.Lifecycle, r repo.LockedRepo, ds dtypes.MetadataDS, cold dtypes.ColdBlockstore, hot dtypes.HotBlockstore) (dtypes.SplitBlockstore, error) {
|
||||||
if err != nil {
|
path, err := r.SplitstorePath()
|
||||||
return nil, err
|
if err != nil {
|
||||||
}
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
ss, err := splitstore.NewSplitStore(path, ds, cold, hot)
|
ss, err := splitstore.NewSplitStore(path, ds, cold, hot, cfg.UseLMDB)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
lc.Append(fx.Hook{
|
lc.Append(fx.Hook{
|
||||||
OnStop: func(context.Context) error {
|
OnStop: func(context.Context) error {
|
||||||
return ss.Close()
|
return ss.Close()
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
return ss, err
|
return ss, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func StateFlatBlockstore(lc fx.Lifecycle, mctx helpers.MetricsCtx, bs dtypes.ColdBlockstore) (dtypes.StateBlockstore, error) {
|
func StateFlatBlockstore(lc fx.Lifecycle, mctx helpers.MetricsCtx, bs dtypes.ColdBlockstore) (dtypes.StateBlockstore, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user