mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-06 19:06:42 +01:00
Merge pull request #513 from hermeznetwork/test/idx
Fix incorrect initial CurrentIdx in kvdb
This commit is contained in:
@@ -133,9 +133,11 @@ func poolMarkInvalidOldNonces(l2DB *l2db.L2DB, stateDB *statedb.LocalStateDB,
|
||||
if tracerr.Unwrap(err) != db.ErrNotFound {
|
||||
return tracerr.Wrap(err)
|
||||
} else if idx <= lastIdx {
|
||||
return tracerr.Wrap(fmt.Errorf("account with idx %v not found: %w", idx, err))
|
||||
return tracerr.Wrap(fmt.Errorf("account with idx %v (lastIdx: %v) "+
|
||||
"not found: %w", idx, lastIdx, err))
|
||||
} else {
|
||||
return tracerr.Wrap(fmt.Errorf("unexpected stateDB error with idx %v: %w", idx, err))
|
||||
return tracerr.Wrap(fmt.Errorf("unexpected stateDB error with idx %v "+
|
||||
"(lastIdx: %v): %w", idx, lastIdx, err))
|
||||
}
|
||||
}
|
||||
idxsNonce[i].Idx = idx
|
||||
|
||||
@@ -135,7 +135,7 @@ func (kvdb *KVDB) reset(batchNum common.BatchNum, closeCurrent bool) error {
|
||||
return tracerr.Wrap(err)
|
||||
}
|
||||
kvdb.db = sto
|
||||
kvdb.CurrentIdx = 255
|
||||
kvdb.CurrentIdx = common.RollupConstReservedIDx // 255
|
||||
kvdb.CurrentBatch = 0
|
||||
|
||||
return nil
|
||||
@@ -204,7 +204,7 @@ func (kvdb *KVDB) ResetFromSynchronizer(batchNum common.BatchNum, synchronizerKV
|
||||
return tracerr.Wrap(err)
|
||||
}
|
||||
kvdb.db = sto
|
||||
kvdb.CurrentIdx = 255
|
||||
kvdb.CurrentIdx = common.RollupConstReservedIDx // 255
|
||||
kvdb.CurrentBatch = 0
|
||||
|
||||
return nil
|
||||
@@ -286,7 +286,7 @@ func (kvdb *KVDB) setCurrentBatch() error {
|
||||
func (kvdb *KVDB) GetCurrentIdx() (common.Idx, error) {
|
||||
idxBytes, err := kvdb.db.Get(keyCurrentIdx)
|
||||
if tracerr.Unwrap(err) == db.ErrNotFound {
|
||||
return 0, nil
|
||||
return common.RollupConstReservedIDx, nil // 255, nil
|
||||
}
|
||||
if err != nil {
|
||||
return 0, tracerr.Wrap(err)
|
||||
@@ -442,3 +442,8 @@ func pebbleMakeCheckpoint(source, dest string) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Close the DB
|
||||
func (kvdb *KVDB) Close() {
|
||||
kvdb.db.Close()
|
||||
}
|
||||
|
||||
@@ -195,3 +195,42 @@ func TestDeleteOldCheckpoints(t *testing.T) {
|
||||
assert.LessOrEqual(t, len(checkpoints), keep)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetCurrentIdx(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "tmpdb")
|
||||
require.NoError(t, err)
|
||||
defer require.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
keep := 16
|
||||
db, err := NewKVDB(dir, keep)
|
||||
require.NoError(t, err)
|
||||
|
||||
idx, err := db.GetCurrentIdx()
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, common.Idx(255), idx)
|
||||
|
||||
db.Close()
|
||||
|
||||
db, err = NewKVDB(dir, keep)
|
||||
require.NoError(t, err)
|
||||
|
||||
idx, err = db.GetCurrentIdx()
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, common.Idx(255), idx)
|
||||
|
||||
err = db.MakeCheckpoint()
|
||||
require.NoError(t, err)
|
||||
|
||||
idx, err = db.GetCurrentIdx()
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, common.Idx(255), idx)
|
||||
|
||||
db.Close()
|
||||
|
||||
db, err = NewKVDB(dir, keep)
|
||||
require.NoError(t, err)
|
||||
|
||||
idx, err = db.GetCurrentIdx()
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, common.Idx(255), idx)
|
||||
}
|
||||
|
||||
@@ -341,6 +341,11 @@ func (s *StateDB) MTGetRoot() *big.Int {
|
||||
return s.MT.Root().BigInt()
|
||||
}
|
||||
|
||||
// Close the StateDB
|
||||
func (s *StateDB) Close() {
|
||||
s.db.Close()
|
||||
}
|
||||
|
||||
// LocalStateDB represents the local StateDB which allows to make copies from
|
||||
// the synchronizer StateDB, and is used by the tx-selector and the
|
||||
// batch-builder. LocalStateDB is an in-memory storage.
|
||||
|
||||
@@ -532,3 +532,38 @@ func TestDeleteOldCheckpoints(t *testing.T) {
|
||||
assert.LessOrEqual(t, len(checkpoints), keep)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCurrentIdx(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "tmpdb")
|
||||
require.NoError(t, err)
|
||||
defer require.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
keep := 16
|
||||
sdb, err := NewStateDB(dir, keep, TypeSynchronizer, 32)
|
||||
require.NoError(t, err)
|
||||
|
||||
idx := sdb.CurrentIdx()
|
||||
assert.Equal(t, common.Idx(255), idx)
|
||||
|
||||
sdb.Close()
|
||||
|
||||
sdb, err = NewStateDB(dir, keep, TypeSynchronizer, 32)
|
||||
require.NoError(t, err)
|
||||
|
||||
idx = sdb.CurrentIdx()
|
||||
assert.Equal(t, common.Idx(255), idx)
|
||||
|
||||
err = sdb.MakeCheckpoint()
|
||||
require.NoError(t, err)
|
||||
|
||||
idx = sdb.CurrentIdx()
|
||||
assert.Equal(t, common.Idx(255), idx)
|
||||
|
||||
sdb.Close()
|
||||
|
||||
sdb, err = NewStateDB(dir, keep, TypeSynchronizer, 32)
|
||||
require.NoError(t, err)
|
||||
|
||||
idx = sdb.CurrentIdx()
|
||||
assert.Equal(t, common.Idx(255), idx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user