Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 13 additions & 15 deletions vms/evm/sync/customrawdb/sync_progress.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,15 +180,9 @@ func WriteSyncPerformed(db ethdb.KeyValueWriter, blockNumber uint64) error {
return db.Put(bytes, nil)
}

// NewSyncPerformedIterator returns an iterator over all block numbers the VM
// has state synced to.
func NewSyncPerformedIterator(db ethdb.Iteratee) ethdb.Iterator {
return rawdb.NewKeyLengthIterator(db.NewIterator(syncPerformedPrefix, nil), syncPerformedKeyLength)
}

// GetLatestSyncPerformed returns the latest block number state synced performed to.
func GetLatestSyncPerformed(db ethdb.Iteratee) (uint64, error) {
it := NewSyncPerformedIterator(db)
it := newSyncPerformedIterator(db)
defer it.Release()

var latestSyncPerformed uint64
Expand All @@ -201,6 +195,18 @@ func GetLatestSyncPerformed(db ethdb.Iteratee) (uint64, error) {
return latestSyncPerformed, it.Error()
}

// newSyncPerformedIterator returns an iterator over all block numbers the VM
// has state synced to.
func newSyncPerformedIterator(db ethdb.Iteratee) ethdb.Iterator {
return rawdb.NewKeyLengthIterator(db.NewIterator(syncPerformedPrefix, nil), syncPerformedKeyLength)
}

// parseSyncPerformedKey returns the block number from keys returned by
// NewSyncPerformedIterator. It panics if the key is shorter than `syncPerformedKeyLength`.
func parseSyncPerformedKey(key []byte) uint64 {
return binary.BigEndian.Uint64(key[len(syncPerformedPrefix):])
}

// clearPrefix removes all keys in db that begin with prefix and match an
// expected key length. `keyLen` must include the length of the prefix.
func clearPrefix(db ethdb.KeyValueStore, prefix []byte, keyLen int) error {
Expand Down Expand Up @@ -230,11 +236,3 @@ func clearPrefix(db ethdb.KeyValueStore, prefix []byte, keyLen int) error {
}
return batch.Write()
}

// parseSyncPerformedKey returns the block number from keys the iterator returned
// from NewSyncPerformedIterator. It assumes the key has the syncPerformedPrefix
// followed by an 8-byte big-endian block number, and panics if the key is shorter
// than len(syncPerformedPrefix)+wrappers.LongLen.
func parseSyncPerformedKey(key []byte) uint64 {
return binary.BigEndian.Uint64(key[len(syncPerformedPrefix):])
}
2 changes: 1 addition & 1 deletion vms/evm/sync/customrawdb/sync_progress_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ func TestSyncPerformedAndLatest(t *testing.T) {
require.NoError(t, WriteSyncPerformed(db, 15))

// Iterator yields all
vals := mapIterator(t, NewSyncPerformedIterator(db), parseSyncPerformedKey)
vals := mapIterator(t, newSyncPerformedIterator(db), parseSyncPerformedKey)

require.Equal(t, []uint64{10, 15, 20}, vals)

Expand Down