Skip to content

Commit 422a4fa

Browse files
authored
Merge pull request #71 from sei-protocol/yzang/SEI-7965
Fix changelog recover failure due to wrong path
2 parents 6d8660b + 7272ab6 commit 422a4fa

File tree

6 files changed

+23
-10
lines changed

6 files changed

+23
-10
lines changed

ss/rocksdb/db.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,3 +374,6 @@ func cloneAppend(bz []byte, tail []byte) (res []byte) {
374374
copy(res[len(bz):], tail)
375375
return
376376
}
377+
func (db *Database) RawImport(ch <-chan types.RawSnapshotNode) error {
378+
panic("implement me")
379+
}

ss/rocksdb_init.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ import (
1212

1313
func init() {
1414
initializer := func(dir string, configs config.StateStoreConfig) (types.StateStore, error) {
15-
dbHome := dir
15+
dbHome := utils.GetStateStorePath(dir, configs.Backend)
1616
if configs.DBDirectory != "" {
1717
dbHome = configs.DBDirectory
1818
}
19-
return rocksdb.New(utils.GetStateStorePath(dbHome, configs.Backend), configs)
19+
return rocksdb.New(dbHome, configs)
2020
}
2121
RegisterBackend(RocksDBBackend, initializer)
2222
}

ss/sqlite/db.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,3 +334,7 @@ func execPragmas(db *sql.DB, pragmas []string) error {
334334
}
335335
return nil
336336
}
337+
338+
func (db *Database) RawImport(ch <-chan types.RawSnapshotNode) error {
339+
panic("implement me")
340+
}

ss/sqlite_init.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ import (
1212

1313
func init() {
1414
initializer := func(dir string, configs config.StateStoreConfig) (types.StateStore, error) {
15-
dbHome := dir
15+
dbHome := utils.GetStateStorePath(dir, configs.Backend)
1616
if configs.DBDirectory != "" {
1717
dbHome = configs.DBDirectory
1818
}
19-
return sqlite.New(utils.GetStateStorePath(dbHome, configs.Backend), configs)
19+
return sqlite.New(dbHome, configs)
2020
}
2121
RegisterBackend(SQLiteBackend, initializer)
2222
}

ss/store.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ func NewStateStore(logger logger.Logger, homeDir string, ssConfig config.StateSt
4747
// Handle auto recovery for DB running with async mode
4848
if ssConfig.DedicatedChangelog {
4949
changelogPath := utils.GetChangelogPath(utils.GetStateStorePath(homeDir, ssConfig.Backend))
50+
if ssConfig.DBDirectory != "" {
51+
changelogPath = utils.GetChangelogPath(ssConfig.DBDirectory)
52+
}
5053
err := RecoverStateStore(logger, changelogPath, stateStore)
5154
if err != nil {
5255
return nil, err
@@ -61,6 +64,7 @@ func NewStateStore(logger logger.Logger, homeDir string, ssConfig config.StateSt
6164
// RecoverStateStore will be called during initialization to recover the state from rlog
6265
func RecoverStateStore(logger logger.Logger, changelogPath string, stateStore types.StateStore) error {
6366
ssLatestVersion, err := stateStore.GetLatestVersion()
67+
logger.Info(fmt.Sprintf("Recovering from changelog %s at latest SS version %d", changelogPath, ssLatestVersion))
6468
if err != nil {
6569
return err
6670
}

ss/store_test.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ss
33
import (
44
"fmt"
55
"os"
6+
"path/filepath"
67
"testing"
78

89
"github.com/cosmos/iavl"
@@ -14,15 +15,16 @@ import (
1415

1516
func TestNewStateStore(t *testing.T) {
1617
tempDir := os.TempDir()
18+
homeDir := filepath.Join(tempDir, "seidb")
1719
ssConfig := config.StateStoreConfig{
1820
DedicatedChangelog: true,
1921
Backend: string(PebbleDBBackend),
20-
AsyncWriteBuffer: 10,
21-
KeepRecent: 100,
22+
AsyncWriteBuffer: 50,
23+
KeepRecent: 500,
2224
}
23-
stateStore, err := NewStateStore(logger.NewNopLogger(), tempDir, ssConfig)
25+
stateStore, err := NewStateStore(logger.NewNopLogger(), homeDir, ssConfig)
2426
require.NoError(t, err)
25-
for i := 1; i < 10; i++ {
27+
for i := 1; i < 20; i++ {
2628
var changesets []*proto.NamedChangeSet
2729
kvPair := &iavl.KVPair{
2830
Delete: false,
@@ -45,11 +47,11 @@ func TestNewStateStore(t *testing.T) {
4547
require.NoError(t, err)
4648

4749
// Reopen a new state store
48-
stateStore, err = NewStateStore(logger.NewNopLogger(), tempDir, ssConfig)
50+
stateStore, err = NewStateStore(logger.NewNopLogger(), homeDir, ssConfig)
4951
require.NoError(t, err)
5052

5153
// Make sure key and values can be found
52-
for i := 1; i < 10; i++ {
54+
for i := 1; i < 20; i++ {
5355
value, err := stateStore.Get("storeA", int64(i), []byte(fmt.Sprintf("key%d", i)))
5456
require.NoError(t, err)
5557
require.Equal(t, fmt.Sprintf("value%d", i), string(value))

0 commit comments

Comments
 (0)