Skip to content

Commit

Permalink
Merge pull request #11391 from filecoin-project/asr/fix-invariants-calib
Browse files Browse the repository at this point in the history
fix: shed: make invariants checker work with splitstore
  • Loading branch information
arajasek authored Dec 4, 2023
2 parents 2c00b5d + a0026a0 commit 9a37ce0
Showing 1 changed file with 41 additions and 10 deletions.
51 changes: 41 additions & 10 deletions cmd/lotus-shed/invariants.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ package main
import (
"context"
"fmt"
"io"
"os"
"path/filepath"
"strconv"
"time"

Expand All @@ -21,6 +22,8 @@ import (
v9 "github.com/filecoin-project/go-state-types/builtin/v9"

"github.com/filecoin-project/lotus/blockstore"
badgerbs "github.com/filecoin-project/lotus/blockstore/badger"
"github.com/filecoin-project/lotus/blockstore/splitstore"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/consensus"
"github.com/filecoin-project/lotus/chain/consensus/filcns"
Expand Down Expand Up @@ -73,24 +76,52 @@ var invariantsCmd = &cli.Command{

defer lkrepo.Close() //nolint:errcheck

bs, err := lkrepo.Blockstore(ctx, repo.UniversalBlockstore)
cold, err := lkrepo.Blockstore(ctx, repo.UniversalBlockstore)
if err != nil {
return fmt.Errorf("failed to open blockstore: %w", err)
return fmt.Errorf("failed to open universal blockstore %w", err)
}

defer func() {
if c, ok := bs.(io.Closer); ok {
if err := c.Close(); err != nil {
log.Warnf("failed to close blockstore: %s", err)
}
}
}()
path, err := lkrepo.SplitstorePath()
if err != nil {
return err
}

path = filepath.Join(path, "hot.badger")
if err := os.MkdirAll(path, 0755); err != nil {
return err
}

opts, err := repo.BadgerBlockstoreOptions(repo.HotBlockstore, path, lkrepo.Readonly())
if err != nil {
return err
}

hot, err := badgerbs.Open(opts)
if err != nil {
return err
}

mds, err := lkrepo.Datastore(context.Background(), "/metadata")
if err != nil {
return err
}

cfg := &splitstore.Config{
MarkSetType: "map",
DiscardColdBlocks: true,
}
ss, err := splitstore.Open(path, mds, hot, cold, cfg)
if err != nil {
return err
}
defer func() {
if err := ss.Close(); err != nil {
log.Warnf("failed to close blockstore: %s", err)

}
}()
bs := ss

cs := store.NewChainStore(bs, bs, mds, filcns.Weight, nil)
defer cs.Close() //nolint:errcheck

Expand Down

0 comments on commit 9a37ce0

Please sign in to comment.