Skip to content

Commit

Permalink
remove ExportCheckpointAt
Browse files Browse the repository at this point in the history
  • Loading branch information
zhangchiqing committed Jun 6, 2023
1 parent 966231a commit d440a4e
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 196 deletions.
22 changes: 0 additions & 22 deletions ledger/complete/ledger.go
Original file line number Diff line number Diff line change
Expand Up @@ -326,28 +326,6 @@ func (l *Ledger) Checkpointer() (*realWAL.Checkpointer, error) {
return checkpointer, nil
}

// ExportCheckpointAt exports a checkpoint at specific state commitment after applying migrations and returns the new state (after migration) and any errors
// deprecated
func (l *Ledger) ExportCheckpointAt(
state ledger.State,
migrations []ledger.Migration,
targetPathFinderVersion uint8,
outputDir, outputFile string,
) (ledger.State, error) {
newTrie, err := l.MigrateAt(state, migrations, targetPathFinderVersion)
if err != nil {
return ledger.State(hash.DummyHash), fmt.Errorf("fail to migrate: %w", err)
}

err = realWAL.StoreCheckpointV6Concurrently([]*trie.MTrie{newTrie}, outputDir, outputFile, &l.logger)

if err != nil {
return ledger.State(hash.DummyHash), fmt.Errorf("failed to store the checkpoint: %w", err)
}

return ledger.State(newTrie.RootHash()), nil
}

func (l *Ledger) MigrateAt(
state ledger.State,
migrations []ledger.Migration,
Expand Down
174 changes: 0 additions & 174 deletions ledger/complete/ledger_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -703,180 +703,6 @@ func TestLedgerFunctionality(t *testing.T) {
}
}

func Test_ExportCheckpointAt(t *testing.T) {
t.Run("noop migration", func(t *testing.T) {
// the exported state has two key/value pairs
// (/1/1/22/2, "A") and (/1/3/22/4, "B")
// this tests the migration at the specific state
// without any special migration so we expect both
// register to show up in the new trie and with the same values
unittest.RunWithTempDir(t, func(dbDir string) {
unittest.RunWithTempDir(t, func(dir2 string) {

const (
capacity = 100
checkpointDistance = math.MaxInt // A large number to prevent checkpoint creation.
checkpointsToKeep = 1
)

diskWal, err := wal.NewDiskWAL(zerolog.Nop(), nil, metrics.NewNoopCollector(), dbDir, capacity, pathfinder.PathByteSize, wal.SegmentSize)
require.NoError(t, err)
led, err := complete.NewLedger(diskWal, capacity, &metrics.NoopCollector{}, zerolog.Logger{}, complete.DefaultPathFinderVersion)
require.NoError(t, err)
compactor, err := complete.NewCompactor(led, diskWal, zerolog.Nop(), capacity, checkpointDistance, checkpointsToKeep, atomic.NewBool(false))
require.NoError(t, err)
<-compactor.Ready()

state := led.InitialState()
u := testutils.UpdateFixture()
u.SetState(state)

state, _, err = led.Set(u)
require.NoError(t, err)

newState, err := led.ExportCheckpointAt(state, []ledger.Migration{noOpMigration}, complete.DefaultPathFinderVersion, dir2, "root.checkpoint")
require.NoError(t, err)
assert.Equal(t, newState, state)

diskWal2, err := wal.NewDiskWAL(zerolog.Nop(), nil, metrics.NewNoopCollector(), dir2, capacity, pathfinder.PathByteSize, wal.SegmentSize)
require.NoError(t, err)
led2, err := complete.NewLedger(diskWal2, capacity, &metrics.NoopCollector{}, zerolog.Logger{}, complete.DefaultPathFinderVersion)
require.NoError(t, err)
compactor2, err := complete.NewCompactor(led2, diskWal2, zerolog.Nop(), capacity, checkpointDistance, checkpointsToKeep, atomic.NewBool(false))
require.NoError(t, err)
<-compactor2.Ready()

q, err := ledger.NewQuery(state, u.Keys())
require.NoError(t, err)

retValues, err := led2.Get(q)
require.NoError(t, err)

for i, v := range u.Values() {
assert.Equal(t, v, retValues[i])
}

<-led.Done()
<-compactor.Done()
<-led2.Done()
<-compactor2.Done()
})
})
})
t.Run("migration by value", func(t *testing.T) {
// the exported state has two key/value pairs
// ("/1/1/22/2", "A") and ("/1/3/22/4", "B")
// during the migration we change all keys with value "A" to "C"
// so in this case the resulting exported trie is ("/1/1/22/2", "C"), ("/1/3/22/4", "B")
unittest.RunWithTempDir(t, func(dbDir string) {
unittest.RunWithTempDir(t, func(dir2 string) {

const (
capacity = 100
checkpointDistance = math.MaxInt // A large number to prevent checkpoint creation.
checkpointsToKeep = 1
)

diskWal, err := wal.NewDiskWAL(zerolog.Nop(), nil, metrics.NewNoopCollector(), dbDir, capacity, pathfinder.PathByteSize, wal.SegmentSize)
require.NoError(t, err)
led, err := complete.NewLedger(diskWal, capacity, &metrics.NoopCollector{}, zerolog.Logger{}, complete.DefaultPathFinderVersion)
require.NoError(t, err)
compactor, err := complete.NewCompactor(led, diskWal, zerolog.Nop(), capacity, checkpointDistance, checkpointsToKeep, atomic.NewBool(false))
require.NoError(t, err)
<-compactor.Ready()

state := led.InitialState()
u := testutils.UpdateFixture()
u.SetState(state)

state, _, err = led.Set(u)
require.NoError(t, err)

newState, err := led.ExportCheckpointAt(state, []ledger.Migration{migrationByValue}, complete.DefaultPathFinderVersion, dir2, "root.checkpoint")
require.NoError(t, err)

diskWal2, err := wal.NewDiskWAL(zerolog.Nop(), nil, metrics.NewNoopCollector(), dir2, capacity, pathfinder.PathByteSize, wal.SegmentSize)
require.NoError(t, err)
led2, err := complete.NewLedger(diskWal2, capacity, &metrics.NoopCollector{}, zerolog.Logger{}, complete.DefaultPathFinderVersion)
require.NoError(t, err)
compactor2, err := complete.NewCompactor(led2, diskWal2, zerolog.Nop(), capacity, checkpointDistance, checkpointsToKeep, atomic.NewBool(false))
require.NoError(t, err)
<-compactor2.Ready()

q, err := ledger.NewQuery(newState, u.Keys())
require.NoError(t, err)

retValues, err := led2.Get(q)
require.NoError(t, err)

assert.Equal(t, retValues[0], ledger.Value([]byte{'C'}))
assert.Equal(t, retValues[1], ledger.Value([]byte{'B'}))

<-led.Done()
<-compactor.Done()
<-led2.Done()
<-compactor2.Done()
})
})
})
t.Run("migration by key", func(t *testing.T) {
// the exported state has two key/value pairs
// ("/1/1/22/2", "A") and ("/1/3/22/4", "B")
// during the migration we change the value to "D" for key "zero"
// so in this case the resulting exported trie is ("/1/1/22/2", "D"), ("/1/3/22/4", "B")
unittest.RunWithTempDir(t, func(dbDir string) {
unittest.RunWithTempDir(t, func(dir2 string) {

const (
capacity = 100
checkpointDistance = math.MaxInt // A large number to prevent checkpoint creation.
checkpointsToKeep = 1
)

diskWal, err := wal.NewDiskWAL(zerolog.Nop(), nil, metrics.NewNoopCollector(), dbDir, capacity, pathfinder.PathByteSize, wal.SegmentSize)
require.NoError(t, err)
led, err := complete.NewLedger(diskWal, capacity, &metrics.NoopCollector{}, zerolog.Logger{}, complete.DefaultPathFinderVersion)
require.NoError(t, err)
compactor, err := complete.NewCompactor(led, diskWal, zerolog.Nop(), capacity, checkpointDistance, checkpointsToKeep, atomic.NewBool(false))
require.NoError(t, err)
<-compactor.Ready()

state := led.InitialState()
u := testutils.UpdateFixture()
u.SetState(state)

state, _, err = led.Set(u)
require.NoError(t, err)

newState, err := led.ExportCheckpointAt(state, []ledger.Migration{migrationByKey}, complete.DefaultPathFinderVersion, dir2, "root.checkpoint")
require.NoError(t, err)

diskWal2, err := wal.NewDiskWAL(zerolog.Nop(), nil, metrics.NewNoopCollector(), dir2, capacity, pathfinder.PathByteSize, wal.SegmentSize)
require.NoError(t, err)
led2, err := complete.NewLedger(diskWal2, capacity, &metrics.NoopCollector{}, zerolog.Logger{}, complete.DefaultPathFinderVersion)
require.NoError(t, err)
compactor2, err := complete.NewCompactor(led2, diskWal2, zerolog.Nop(), capacity, checkpointDistance, checkpointsToKeep, atomic.NewBool(false))
require.NoError(t, err)
<-compactor2.Ready()

q, err := ledger.NewQuery(newState, u.Keys())
require.NoError(t, err)

retValues, err := led2.Get(q)
require.NoError(t, err)

assert.Equal(t, retValues[0], ledger.Value([]byte{'D'}))
assert.Equal(t, retValues[1], ledger.Value([]byte{'B'}))

<-led.Done()
<-compactor.Done()
<-led2.Done()
<-compactor2.Done()
})
})
})
}

func TestWALUpdateFailuresBubbleUp(t *testing.T) {
unittest.RunWithTempDir(t, func(dir string) {

Expand Down

0 comments on commit d440a4e

Please sign in to comment.