From d440a4ec014b698b70cdd47264ff10223bbcf835 Mon Sep 17 00:00:00 2001 From: "Leo Zhang (zhangchiqing)" Date: Tue, 6 Jun 2023 10:59:15 -0700 Subject: [PATCH] remove ExportCheckpointAt --- ledger/complete/ledger.go | 22 ----- ledger/complete/ledger_test.go | 174 --------------------------------- 2 files changed, 196 deletions(-) diff --git a/ledger/complete/ledger.go b/ledger/complete/ledger.go index e5715674a3b..cc132815830 100644 --- a/ledger/complete/ledger.go +++ b/ledger/complete/ledger.go @@ -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, diff --git a/ledger/complete/ledger_test.go b/ledger/complete/ledger_test.go index f909186e9ae..11fdb26ec9c 100644 --- a/ledger/complete/ledger_test.go +++ b/ledger/complete/ledger_test.go @@ -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) {