arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
Merge pull request #513 from hermeznetwork/test/idx

Fix incorrect initial CurrentIdx in kvdb
arnau 17317030+arnaucube@users.noreply.github.com
Fri, 29 Jan 2021 13:27:03 +0100
commit

8cc23b9fb243028fbc7216facc8e2be92c87dadb

parent

bc831af6a8b730c0a2f360afd1c73e8e5a1a1c8c

M coordinator/purger.go → coordinator/purger.go

@@ -133,9 +133,11 @@ if err != nil {

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
M db/kvdb/kvdb.go → db/kvdb/kvdb.go

@@ -135,7 +135,7 @@ if err != nil {

return tracerr.Wrap(err) } kvdb.db = sto - kvdb.CurrentIdx = 255 + kvdb.CurrentIdx = common.RollupConstReservedIDx // 255 kvdb.CurrentBatch = 0 return nil

@@ -204,7 +204,7 @@ if err != nil {

return tracerr.Wrap(err) } kvdb.db = sto - kvdb.CurrentIdx = 255 + kvdb.CurrentIdx = common.RollupConstReservedIDx // 255 kvdb.CurrentBatch = 0 return nil

@@ -286,7 +286,7 @@ // used for an Account in the KVDB.

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 @@ }

return nil } + +// Close the DB +func (kvdb *KVDB) Close() { + kvdb.db.Close() +}
M db/kvdb/kvdb_test.go → db/kvdb/kvdb_test.go

@@ -195,3 +195,42 @@ require.NoError(t, err)

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) +}
M db/statedb/statedb.go → db/statedb/statedb.go

@@ -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.
M db/statedb/statedb_test.go → db/statedb/statedb_test.go

@@ -532,3 +532,38 @@ require.NoError(t, err)

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) +}