diff --git a/node/repo/blockstore_opts.go b/node/repo/blockstore_opts.go index 1705217d3..81f8b9ff4 100644 --- a/node/repo/blockstore_opts.go +++ b/node/repo/blockstore_opts.go @@ -1,6 +1,11 @@ package repo -import badgerbs "github.com/filecoin-project/lotus/blockstore/badger" +import ( + "os" + "strconv" + + badgerbs "github.com/filecoin-project/lotus/blockstore/badger" +) // BadgerBlockstoreOptions returns the badger options to apply for the provided // domain. @@ -42,5 +47,17 @@ func BadgerBlockstoreOptions(domain BlockstoreDomain, path string, readonly bool opts.ReadOnly = readonly + // Envvar LOTUS_CHAIN_BADGERSTORE_COMPACTIONWORKERNUM + // Allows the number of compaction workers used by BadgerDB to be adjusted + // Unset - leaves the default number of compaction workers (4) + // "0" - disables compaction + // Positive integer - enables that number of compaction workers + if badgerNumCompactors, badgerNumCompactorsSet := os.LookupEnv("LOTUS_CHAIN_BADGERSTORE_COMPACTIONWORKERNUM"); badgerNumCompactorsSet { + if numWorkers, err := strconv.Atoi(badgerNumCompactors); err == nil && numWorkers >= 0 { + opts.NumCompactors = numWorkers + } + } + return opts, nil + }